[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: type d'un champ mysql



Stephane Bortzmeyer a écrit :
> On Mon, Jan 12, 2009 at 05:05:54PM +0100,
>  antoine@starinux.org <antoine@starinux.org> wrote 
>  a message of 17 lines which said:
> 
>> Il s'agit d'adresses IP (IPV4) enregistrées avec les points :
>> A.B.C.D
> 
> Drôle d'idée d'utiliser la forme texte, d'autant plus qu'elle est mal
> normalisée en IPv4 (A.B.C.D n'est pas la seule notation
> possible). 
> Pourquoi ne pas plutôt stocker la forme binaire, qui permet
> des comparaisons et du masquage ?
> 


la forme texte a un interet: pas besoin de inet_aton/inet_pton lorsqu'on
veut chercher une IP qu'on a en format texte. et si on utilise un format
binaire, il faut faire attention à la representation (endian) si le
serveur mysql et la machine cliente sont différentes (une big endian et
une little endian).

donc, si la table est petite, et si on fait que de la recherche
"exacte", la représentation "texte" est très acceptable.

Quant à la normalisation, il suffit de mettre les "contraintes":
- il y a exactement 4 parties (pas de 127.1 pour dire 127.0.0.1, etc. de
toute façon, ces formes ne marchent plus comme avant, puisque dans une
table d'accès sendmail, 127.1 est vue comme 127.1.0.0/16).

- chaque "partie" est un nombre entre 0 et 255, utilisant la notation
"normale" des entiers: pas de "0" au début sauf pour le nombre 0
lui-même. En gros, pas de "012" ni de "01".


Cela dit, je suis d'accord que la représentation binaire est préférable.
  et on peut utiliser un trigger pour la conversion au moment de
l'insertion, une view pour "la lisibilité", ... etc.




Reply to: