code postal stocké en CHAR ou INT ? - SQL/NoSQL - Programmation
Marsh Posté le 16-01-2003 à 12:55:16
Généralement tous les int dans la plage -32768 à +32767 sont toujours stocké sur 2 octets alors qu'en varchar '12345' va prendre 5 octets minimum!
varchar = plus souple car peut contenir données alpha ( càd. lettres/chiffres), indiqué pour les pays qui ont des cp mixte (ex. Anglettere).
int = que des entiers dans la plage que tu connais déjà, pour la France tu dois être sur que le cp tient dedans ( ce qui n'est probablement pas le cas...).
Avander
Marsh Posté le 16-01-2003 à 13:24:56
Batman-Fr a écrit : |
Il faut voir aussi de quel façon l'information doit être restitué : par exemple, si la base est utilisée pour générer des couriers, si ton code postal est déjà en char(5), cela évitera de rajouter un "0" devant les codes postaux de l'Ain par exemple ...
Marsh Posté le 16-01-2003 à 14:04:07
On m'a souvent conseillé de prendre du char pour toutes données numerique qui ne servent pas à faire des calculs.
Marsh Posté le 16-01-2003 à 14:08:07
Un peu de logique: les nombres (dont les entiers) sont là/utiles pour faire des maths ... or il n'est pas logique de multiplier, diviser, soustraire, etc. les codes postaux, donc je ne vois pas pour quelle raison, un code postal doit être de type int (C'est-à-dire que l'utilisation d'un tableau des chars est plus logique)
Marsh Posté le 16-01-2003 à 14:57:39
tomlameche a écrit : |
Voire un double zéro sur les codes postaux spéciaux (genre 00493 ARMEES)
Marsh Posté le 17-01-2003 à 00:14:48
western a écrit : Un peu de logique: les nombres (dont les entiers) sont là/utiles pour faire des maths ... or il n'est pas logique de multiplier, diviser, soustraire, etc. les codes postaux, donc je ne vois pas pour quelle raison, un code postal doit être de type int (C'est-à-dire que l'utilisation d'un tableau des chars est plus logique) |
c'est ce type de reponse que j'attendais
merci a vous tous d'avoir participe a ce topic et de m'avoir ainsi eclaire un peu plus sur tout ca
Marsh Posté le 17-01-2003 à 09:53:25
Fais gaffe si tu dois pouvoir mettre des adresses d'autres pays Y a des codes postaux plus longs, et d'autres qui ont des lettres
Marsh Posté le 17-01-2003 à 10:08:37
faut faire gaffe avec les codes postaux!
si tu dois gérer des codes postaux internationaux ça devient compliquos...
ex. au Luxembourg les codes postaux sont codés: Lxxxx où x est un chiffre (0->9) et ça commence tjs pas 'L'
ex. 2: tjs au Luxembourg, les codes postaux ne réfère pas à une ville mais une à un quartier administratif ! (-> j'habite dans un "L4251" tandis que l'entreprise dans laquelle je bosse, qui est dans la même ville mais 4 rues plus loin, c'est "L4221" )
ex. 3: pas toujours de chiffres, au Maroc le code postal de Rabat est "CYM".
désolé de te compliquer l'affaire
(quoique si tu ne gères que les adresses françaises, tu es tranquille.)
Marsh Posté le 17-01-2003 à 11:07:22
non, uniquement des CP français
si j'avais dû gérer des CP internationaux, j'aurais bien sûr opté dès le départ pour un type CHAR
'vais peut etre m'acheter un bouquin moi
Marsh Posté le 17-01-2003 à 11:09:37
Sébastien a écrit : On m'a souvent conseillé de prendre du char pour toutes données numerique qui ne servent pas à faire des calculs. |
Utilises des Char! c'est mieux
Marsh Posté le 21-01-2003 à 09:17:25
Western l'a dit très clairement :
Citation : |
Il s'agit de codes postaux et non de nombres postaux, donc, utiliser un char(5) et blinder le code avec des zéros à gauche. Nice, c'est 06000. D'ailleurs, on n'écrit jamais un nombre avec un zéro devant, pour se cadrer sur une longueur exprimée en nombre de caractères...
Pour la Corse, 2A et 2B donnent 17 et 18 ou 18 et 19...
En fait, la complexité apparaît si on souhaite modéliser proprement des adresses ; se renseigner auprès de la poste.
Marsh Posté le 16-01-2003 à 12:20:02
je suis en train de créer les structures de tables d'une bdd sous MS SQL Server.
J'ai un champ code postal tout ce qu'il y a de plus banal.
Cependant, ce champ est codé sur 5 caracteres mais est entierement numerique : 2 "possibilites" s'offrent donc à moi :
1/ je le code en char sur 5 caracteres
2/ je le code en int (car smallint va de -32768 à +32767)
quelle est la meilleure solution ?
Mes connaissances en SGBD etant plutot rudimentaire, j'en viens a me poser une autre question + generale : l'interet du type INT ? pourquoi ne pas tout stocker en CHAR ?
qu'en pensez-vous ?
Message édité par Batman-Fr le 16-01-2003 à 12:20:19
---------------
Tout ou rien mais rien que tout ! feed-back : http://forum.hardware.fr/forum2.ph [...] ost=121391