Dois-je utiliser des INT, CHAR ou VARCHAR pour Numéro de Sécurité Sociale?
Je suis en train de concevoir la base de données pour un nouveau projet, et je ne suis pas sûr si je devrais utiliser INT, CHAR ou VARCHAR pour le Numéro de Sécurité Sociale des salariés. Dans mon pays, le SSN est composé de 11 chiffres.
Avis que je vais être en utilisant une colonne d'ID comme clé primaire de cette table, de sorte que le SSN ne sera pas utilisé en tant que clé.
INT considérations: il ne sera pas possible de stocker du texte de manière incorrecte sur la colonne, ce qui est bon, mais je ne vais pas être en mesure de s'assurer de la valeur insérée a le bon nombre de chiffres.
CHAR considérations: je peux assurez-vous que les entrées ont le bon nombre de chiffres, mais je ne peux pas être sûr que ceux qui vont être des nombres, et la longueur de la SSN pourrait augmenter à l'avenir.
VARCHAR considérations: ne pas avoir tout les avantages des deux autres, mais il est le plus souple et ne souffre pas si les changements de longueur, par exemple.
Est-il un type de données standard pour le SSN? Que faites-vous les gars?
Donc, seuls les chiffres de 0 à 9?
Yep, seuls les chiffres de 0 à 9, 11 chiffres.
Vous pourriez envisager de chiffrer les numéros de sécurité sociale, auquel cas soit char ou binaire sera le plus logique.
Êtes-vous susceptible de + - x ou ÷ SSNs?
OriginalL'auteur Daniel Scocco | 2014-09-03
Vous devez vous connecter pour publier un commentaire.
Bien que le SSN est seulement des chiffres, il ne représente pas un simple numéro. Vous n'aurez plus jamais faire de calculs numériques sur l'ensemble du SSN, donc il n'y a vraiment pas beaucoup de point dans le stockage comme un nombre.
Stockage comme un numéro d'utiliser un peu moins d'espace, mais pas beaucoup, que vous auriez besoin d'un
bigint
(8 octets) de tenir une 11 chiffres. À l'aide d'unvarchar
serait d'utiliser de 11 octets pour les caractères et un autre octet pour la longueur, donc la différence n'est pas suffisant pour motiver le stockage comme un nombre.Concernant la validation de la longueur et du contenu de la SSN, c'est vraiment le travail de l'interface utilisateur. La base de données ne devrait pas permettre à tout ce qui nuit à l'intégrité des données, mais une défaillance de SSN n'est pas nuisible en ce sens.
Je voudrais utiliser un
varchar
, car il offre la flexibilité que vous mentionnez.varchar
, par MME la définition de ici. Un supplément de 61% de la croissance en taille de base de données peut avoir un impact sur les décisions, en fonction de l'utilisation. Juste de la nourriture pour la pensée.C'est pour SQL Serveur, MySQL. dev.mysql.com/doc/refman/5.0/en/storage-requirements.html
Merci pour les commentaires @Guffa. Je vais aller en varchar.
si vous faites beaucoup de recherche et des tables de jointure basée sur le SSN, cordes/type varchar du arent vraiment utile.
C'est vrai, mais je voudrais éviter de l'utiliser en tant que clé de toute façon à l'empêcher de se joindre à elle. Généralement j'utilise autoincrement clés sur les tables, même si ils ont un champ unique combinaison qui pourrait éventuellement être utilisé comme clé, de sorte que je n'ai pas à examiner si ils font une assez efficace clé ou si elles sont cohérentes dans le temps.
OriginalL'auteur Guffa