2009-02-04 22 views
8

En ce qui concerne la conception de la base de données, quelles sont les tailles de colonne recommandées pour les champs tels que Prénom, Prénom et Nom de famille? De plus, le caractère standard d'un second prénom est-il sûr ou faut-il prévoir un espace supplémentaire pour les initiales? En particulier, je cherche des tailles qui permettront que ceci soit quelque chose que je n'ai pas à craindre pour l'usage international. J'ai vu quelques initiales qui sont deux caractères, donc je doute qu'un seul personnage soit une bonne idée, mais je suis curieux de voir s'il existe déjà des lignes directrices.Quelles sont les tailles de colonne de base de données recommandées pour les noms?

+0

Voir la question SO http://stackoverflow.com/questions/128099/what-is-the-longest-human-name-you-can-expect pour les raisons pour lesquelles de nombreuses hypothèses (longueur du prénom, du milieu ou du nom, nombre de parties distinctes dans les noms et ainsi de suite) peut être complètement faux pour les autres pays. – mghie

+0

@mghie - C'est pourquoi j'essaie de voir quelles sont les lignes directrices recommandées. Les chances sont qu'il va être très difficile d'utiliser une taille qui va attraper tout, mais si nous pouvons attraper 99,9% des prénoms et des noms et donner assez d'espace pour plusieurs initiales du milieu, nous devrions aller bien. – rjzii

+0

@Rob: Eh bien, le lien vers l'autre question était là pour une raison: ce n'est pas si simple. Pas tout le monde a un prénom et un nom de famille et peut-être quelques initiales. Consultez les réponses dans la question liée, certains traitent spécifiquement des besoins des colonnes de la base de données pour les noms. – mghie

Répondre

8

L'ISO n'a pas encore publié de normes pour la dénomination des humains, bien que j'entende qu'un avant-projet est transmis aux plus hauts niveaux.

:)

Sérieusement, 64 ou devrait donc être suffisant pour 99,99% des noms et prénoms - dans toutes les langues. Je n'ai jamais vu autre chose qu'un char pour un MI (bien que vous ayez raison, beaucoup de gens en ont plus d'un).

BTW: Sauf erreur, les adresses e-mail - techniquement - peuvent contenir jusqu'à 320 caractères et peuvent contenir! # $% & '* + -/=?^_ `{| } ~ et. à condition que. n'est pas le premier ni le dernier caractère, ni ne peut apparaître deux ou plusieurs fois consécutivement.

PS. Le nom de mon lapin de compagnie est "Sa Majesté Impériale Theopolops Bunny Galore". Inutile de dire que cela a été tronqué dans la base de données du vétérinaire. Je pense qu'ils l'ont comme "His Imperial Maj". Alors ça va.

1

Je ne suis pas sûr de la longueur, mais si vous voulez vous internationaliser, alors allez absolument avec nvarchar car cela supportera tous les caractères ASCII "étendus" que vous pourriez rencontrer. L'autre bonne partie à propos de nvarchar est qu'il a une longueur max fixe, mais ne remplit pas les valeurs à cette longueur.

En d'autres termes, mon nom serait stocké comme

'Andrew' 

dans un champ nvarchar(20) mais seraient stockés sous forme

'Andrew    ' 

dans un champ char(20). Donc, dans cet esprit, je tirerais pour un grand nombre de noms avec la pensée étant que vous ne gaspillerez pas cet espace supplémentaire en utilisant nvarchar.

+0

Cela économisera de l'espace, mais il est plus efficace de lire/écrire dans une table avec des enregistrements de taille fixe. –

+1

@Dana - Je voudrais être sûr que j'ai besoin de l'efficacité avant de prendre la complexité supplémentaire d'avoir à couper les valeurs que je récupère. Mon sentiment personnel est que vous devriez utiliser différents types pour varier les données et les types fixes pour les données fixes. Y/N peut être char (1), mais les noms doivent varier. – tvanfosson

+1

Vous comparez des pommes et des oranges - la version non internationalisée de nvarchar (20) est varchar (20), qui ne remplira pas l'espace car nchar (20) et char (20) le feront. –

2

Personnellement, je pense que cela se résume à la quantité de données que vous vous attendez raisonnablement à stocker. Même si vous allez avoir un million de noms, cela ne ferait probablement pas de mal d'utiliser un caractère (64) ou plus grand pour chaque nom. Si la taille est un problème, vous pouvez commencer par 32 et augmenter la taille avec la colonne alter, si nécessaire.

5

Vous avez besoin de 590 caractères combinés si vous souhaitez prendre en charge le world's longest name.

+1

Je pense que c'est l'une des rares réponses sur SO qui peut être liée à www.museumofhoxes.com en tant que lien de support valide. :-) –

+2

Lorsque wikipedia échoue, passez au niveau suivant ... :) – Jeb

Questions connexes