11
votes

Type de données SQL pour stocker des versions de construction

Quel type de données dois-je utiliser pour une colonne SQL pour stocker la version du produit, par exemple.

Version
0.1
0.1.1
0.2
1.1
1.1.647
2.0
.....


0 commentaires

5 Réponses :


14
votes

Je envisagerais de stocker chaque partie du nombre dans un champ Tinyint / Smallint séparé.


0 commentaires

10
votes

peut-être avoir trois ou quatre champs numériques à la table de la version:

Major, Minor, Revision, Build


0 commentaires

5
votes

stocker dans des champs numériques séparés est une bonne idée. Le stockage sous forme d'une chaîne dans un seul champ va rompre le tri lorsque l'une des pièces atteindra 1000. Par exemple, 1.2.999 apparaîtra auparavant (ou montré comme plus récent que) 1.2.1000 lorsqu'il devrait apparaître après.


0 commentaires

8
votes

Une bonne solution serait d'utiliser un entier de construire la valeur à stocker comme: xxx pré>

supposant que chacun peut aller de 0..99. Si vous voulez aller 0..999, utilisez P>

MAJOR * 1000000 + MINOR * 1000 + Revision


1 commentaires

J'ai utilisé cette méthode pour DynamoDB. Cela a fonctionné.



0
votes

Vous voudrez peut-être stocker les versions dans deux colonnes distinctes. Un comme varchar code> qui stockerait la valeur de la version Verbatim (pour afficher dans UI) et un comme décimal code> pour le tri.

Comment stocker une version en tant que décimal code> dans mysql qui est tritable strud> p>

supposant que chaque partie d'une version peut comporter un maximum de 4 chiffres, une version peut être stockée comme suit: p> xxx pré>

où le format () code> fonction est défini comme suit: p> xxx pré>

Cette valeur peut être stockée dans un décimal (12,8) code> colonne . p>

par exemple, version 2021.7.115 code> serait stocké comme 2021.00070115 code>. P>

Si chacun Une partie d'une version peut être maximale de 5 chiffres ( sprintf ("% 0.5d", i) [0,5] code>), le format ci-dessus nécessiterait un décimal (15,10) code> colonne . p>

par exemple , version 2021.7.115 code> serait stockée comme 2021.0000700115 code>. p>

Pourquoi décimal code> et non integer code> Type de données? strong> p>

L'avantage de décimal code> est que plus de chiffres peuvent être ajoutés à droite à l'avenir sans affecter le tri, ce qui n'est pas possible. Pour entier code> colonnes. Par exemple, {major}. {Mineur} {révision} code> peut être modifié en {major}. {Mineur} {révision} {MORESTFF} code> sans affecter le tri (qui veut t être possible pour entières code> de colonnes sans mettre à jour les valeurs existantes). p>

PS: Comment stocker une version comme varchar code> dans MySQL qui est tridicable strong> p>

astuces d'en haut peut également appliquer pour stocker la version dans une colonne de chaîne. p>

"#{format(major)}#{format(minor)}#{format(revision)}"


0 commentaires