To be rather indiscrete, different areas of science and mathematics, let different aspects of everyday life, use words in contradictory ways. Look up any word in the dictionary and the chances are you will see a dozen meanings. Furthermore anytime you are told X means Y you should suspend belief: Almost certainly the statement is false. Different words exist to have different meanings and nuances. They may coincide in referent or truth value at times, but still have different meaning.
Different words get different formal definitions in different parts of science and mathematics. For example words like significance and confidence have different meanings in different papers on machine learning and data mining. Different theories of sets mean that the word "set" has a different meaning in each theory.
The functional idea of continuity concerns a mapping from a domain to a range, and constraints such as
1. (continuous range) that between any two values, the range in between contains other values in the range;
2. (continuous function) that between any two values in the domain closer than some delta, all mappings of the intervening values in a continuous domain will lie in the range between.
Considering sqr: rationals -> rationals, this works fine and there is a rational between any two rationals, etc. Of course sqrt: rationals -> rationals, has a problem with irrational roots and a second problem with imaginary roots for the negative part of the domain (complex range needed). So there is no problem with rationals being countable and continuous.
Discrete means individual, separate, distinguishable implying discontinuous or not continuous, so integers are discrete in this sense even though they are countable in the sense that you can use them to count. In fact the formal definition of countable is anything you can count with the integers in the sense of defining a (bijective) function from the integers to the set (and vice-versa).
In computer science, machine learning, data mining, etc. What is important is how you treat an attribute. A data mining text may actually distinguish categorical, discrete, enumerated and nominal, but then treat them alike for most purposes/algorithms - as discrete/separate things without any idea of there being things in between. But enumeration also implies an ordering, because the values needs to be able to be counted (enumerated) with integers (numbered). However, for some purposes it may be a taxonomy is defined showing relationships between the discrete items (like cards having suit and colour and face value, number cards vs royal/picture cards, etc.). Similarly for some purposes an ordering is needed (of a range of integers, of the suits for a card game, of fuzzy terms like small, medium, large, etc.).
From the computer science perspective there is no difference between reals and rationals as we can't represent an arbitrary real, and we tend to use decimal representations, or sometimes rational representations, or surd representations if we really have to, or representations including pi, e, phi and other constants we don't want to try to represent. Thus the idea that you can count it maps nicely to the idea of discrete in one sense, but in practice the rationals and the reals won't be regarded as discrete, and by discrete we would normally mean whole numbers or integers. This reflects another idea of discrete meaning whole or entire and denying the possibility of subdividing it. This comes back to the functional idea of continuity having things between, or equivalently being able to subdivide intervals, by having some concept of fractions (rationals). Of course real and complex number are a much later invention that lie outside our intuitive everyday framework, and can't directly be represented as full ranges in computer science.
In fact what you have stated as a definition is more like a useful assumption or axiom for computer science.