code postal stocké en CHAR ou INT ?

code postal stocké en CHAR ou INT ? - SQL/NoSQL - Programmation

Marsh Posté le 16-01-2003 à 12:20:02    

:hello:
 
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
Reply

Marsh Posté le 16-01-2003 à 12:20:02   

Reply

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


---------------
A thing of beauty is a joy forever (John Keats)
Reply

Marsh Posté le 16-01-2003 à 13:24:56    

Batman-Fr a écrit :

:hello:
 
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 ?


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 ...


---------------
Gérez votre collection de BD en ligne ! ---- Electro-jazzy song ---- Dazie Mae - jazzy/bluesy/cabaret et plus si affinité
Reply

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.

Reply

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)

Reply

Marsh Posté le 16-01-2003 à 14:57:39    

tomlameche 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 ...  


Voire un double zéro sur les codes postaux spéciaux (genre 00493 ARMEES)

Reply

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 :jap:
 
 :hello:


---------------
Tout ou rien mais rien que tout ! feed-back : http://forum.hardware.fr/forum2.ph [...] ost=121391
Reply

Marsh Posté le 17-01-2003 à 09:53:25    

Fais gaffe si tu dois pouvoir mettre des adresses d'autres pays :o Y a des codes postaux plus longs, et d'autres qui ont des lettres :D


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

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.)


---------------
As the plane took off, the pilot turned to the co-pilot and said, “Have you ever flown solo?” Co-pilot: No. Typically I fly much higher than this.
Reply

Marsh Posté le 17-01-2003 à 11:07:22    

non, uniquement des CP français  [:prosterne]  
 
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  :D


Message édité par Batman-Fr le 17-01-2003 à 11:07:31

---------------
Tout ou rien mais rien que tout ! feed-back : http://forum.hardware.fr/forum2.ph [...] ost=121391
Reply

Marsh Posté le 17-01-2003 à 11:07:22   

Reply

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.


 
 :jap:  
 
Utilises des Char! c'est mieux :hello:


---------------
C17
Reply

Marsh Posté le 21-01-2003 à 09:17:25    

Western l'a dit très clairement :

Citation :


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)


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.


---------------
di. / www.diredaredare.org - Ailes de la ville
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed