Duplicate possible:
type de données mysql pour le numéro de téléphone et l'adresse
Des suggestions sur les meilleures pratiques pour stocker les numéros de téléphone dans une base de données? Considérons un numéro de téléphone américain:
Dois-je supprimer le formatage et ne stocker que des nombres? Devrais-je utiliser un seul champ - ou les diviser en: indicatif du pays, indicatif régional, numéro de téléphone, etc.? Suggestions?
Vous ne devriez jamais stocker de valeurs avec le format. Le formatage doit être effectué dans la vue en fonction des préférences de l'utilisateur.
La recherche de numéros de téléphone avec un formatage mixte est presque impossible.
Dans ce cas, je me séparerais en champs et stockerais sous forme d'entier. Les nombres sont plus rapides que les textes. En les séparant et en les indexant, toutes les requêtes sont exécutées rapidement.
Diriger 0 pourrait être un problème mais probablement pas. En Suède, tous les indicatifs régionaux commencent par 0 et sont supprimés si un indicatif de pays est également composé. Mais le 0 ne fait pas vraiment partie du nombre, c'est un indicateur utilisé pour indiquer que j'ajoute un indicatif régional. Pareil pour le code de pays, vous ajoutez 00 pour dire que vous utilisez un code de comté.
Les 0 premiers ne doivent pas être stockés, ils doivent être ajoutés en cas de besoin. Supposons que vous stockiez 00 dans la base de données et que vous utilisiez un serveur qui ne fonctionne qu'avec + vous devez remplacer 00 par + pour cette application.
Donc, stockez les nombres sous forme de nombres.
Je suggère de stocker les nombres dans un varchar sans formater. Vous pouvez ensuite reformater les chiffres côté client de manière appropriée. Certaines cultures préfèrent avoir des numéros de téléphone écrits différemment; en France, ils écrivent des numéros de téléphone comme le 01-22-33-44-55.
Vous pouvez également envisager de stocker un autre champ pour le pays auquel le numéro de téléphone est destiné, car il peut être difficile à déterminer en fonction du numéro que vous consultez. Le Royaume-Uni utilise des numéros à 11 chiffres, certains pays africains utilisent des numéros à 7 chiffres.
Cela dit, j’ai travaillé pour une compagnie de téléphone britannique et nous avons enregistré les numéros de téléphone dans notre base de données, qu’ils soient britanniques ou internationaux. Ainsi, un numéro de téléphone britannique serait le 02081234123 et un numéro international serait le 001800300300.
varchar, Ne stockez pas les caractères de séparation. Il se peut que vous souhaitiez formater les numéros de téléphone différemment pour des utilisations différentes. so store (619) 123-4567 en tant que 6191234567 Je travaille avec les données de l’annuaire téléphonique et j’ai trouvé que cette pratique était la meilleure.
Je suggérerais un varchar pour le numéro de téléphone (car les numéros de téléphone sont connus pour avoir des 0 en tête qu'il est important de conserver) et avoir le numéro de téléphone dans deux champs:
Code de pays et numéro de téléphone, c'est-à-dire pour 004477789787
vous pouvez stocker CountryCode = 44 et numéro de téléphone = 77789787
cependant, cela pourrait être très spécifique à l'application. Si, par exemple, vous ne stockez que des numéros américains et souhaitez conserver la possibilité d'effectuer rapidement des requêtes telles que "Obtenir tous les numéros d'une zone spécifique", vous pouvez fractionner davantage le champ du numéro de téléphone (et supprimer le champ du code de pays tel qu'il serait redondant)
Je ne pense pas qu'il y ait une bonne et une mauvaise façon générale de faire cela. Cela dépend vraiment des demandes.
Je recommanderais de les stocker sous forme de nombres dans des colonnes de type varchar - une colonne par "champ" (comme un code de code, etc.).
Le format doit être appliqué lorsque vous interagissez avec un utilisateur ... ce qui facilite la prise en compte des modifications de format, par exemple, et aidera notamment. quand votre demande devient internationale ...
Pour former mon point de vue, voici mes suggestions:
Vous suggérons de stocker le numéro sous forme alphanumérique étendue composée de caractères que vous souhaitez accepter et de le stocker dans un varchar (32) ou quelque chose du genre. Supprimez tous les espaces, les tirets, etc. Mettez le formatage du numéro de téléphone dans un champ séparé (éventuellement glané dans les préférences locales) Si vous souhaitez prendre en charge les extensions, vous devez les ajouter dans un champ séparé;
Je voudrais certainement les séparer. Il serait facile de trier les numéros par indicatif régional et code de pays. Mais même si vous ne vous séparez pas, insérez simplement les nombres dans la base de données dans un format donné. par exemple. 1-555-555-1212 Votre côté client sera reconnaissant de ne pas lui avoir demandé de reformater vos chiffres.