Représentant illimité dans la base de données avec le type de données integer
J'ai une table qui permet de gagner du compte des limites comme les utilisateurs. Pour la plupart des lignes de la valeur est un entier. Cependant j'aurai aussi besoin de support de stockage illimité (à l'infini) comme une valeur. Cela peut paraître idiot mais est-il une commune de la valeur entière qui représente illimité (à l'infini)? Je tiens à conserver les valeurs comme des nombres entiers.
- limite sera un entier. Dans quelle fourchette? Est-il positif?
- si votre vraiment besoin d'étirer ce concept (qui vous n'avez probablement pas), vous pouvez créer un ENUM, de sorte que le sens des valeurs spéciales si évident pour toute personne qui vient à travers elle
Vous devez vous connecter pour publier un commentaire.
Je préfère nulle, à moins que le champ n'est pas nullable, alors je préfère zéro, à moins que zéro est une valeur de limite, alors je préfère -1, à moins que -1 est une valeur valide, auquel cas vous devez un autre champ (par exemple, un champ de bits) pour signifier 'illimité'.
Vous ne pouvez vraiment pas avoir un nombre infini de comptes car il n'y a pas un nombre infini de personnes. En fait, vous êtes vraiment limité dans le nombre de comptes que vous pouvez avoir (si vous choisissez de stocker la valeur dans une seule colonne de base de données) depuis tout fini mécanisme de stockage pour les dénombrables choses a une limite. Je vous suggère, avec @Tor Haugen, que la meilleure façon de le faire est d'utiliser la limite imposée par le système (quel que soit maximal d'entiers ou de longue langue de votre offre). De cette façon, vous n'aurez pas à vous soucier d'aucun des cas particuliers pour vos comparaisons. En outre, je voudrais utiliser une contrainte de base de données pour éviter de stocker des valeurs négatives dans le domaine. Un entier de 64 bits sera certainement tenir un nombre assez grand pour être pratiquement illimité pour votre application.
Bien, si vous accédez à votre base de données à partir .NET, les types d'entiers ont constant membres MaxValue et MinValue. Nous faisons parfois appel à eux pour représenter l'infini. Bien sûr, ces valeurs n'ont aucune signification particulière dans votre SGBDR...
Comme un entier, infinity va être dur. Quelques options:
1) -1, avec le programme approprié logique qu'il les traite comme infini (et en supposant que les valeurs négatives ne sont pas valides).
2) Une colonne supplémentaire tenant un drapeau indiquant fini/infini.
Je ne pense pas qu'il y est une solution parfaite. Alors, voici ma suggestion:
Créer des constantes qui représentent les valeurs maximales qui peuvent être stockées dans votre base de données et de les considérer comme "l'Infini".
http://dev.mysql.com/doc/refman/5.0/en/numeric-types.html#integer-types