champ ENUM ou VARCHAR ?

champ ENUM ou VARCHAR ? - SQL/NoSQL - Programmation

Marsh Posté le 20-08-2006 à 10:26:42    

Bonjour,
 
J'utilise MySQL et j'ai quelques questions :

  • J'ai un champ dans ma table qui ne sera remplit qu'avec les chaînes "integer", boolean" ou "string" donc que vaut-il mieux utiliser comme type de colonne ? ENUM("integer", "boolean", "string" ou VARCHAR(7) (voire CHAR(7) car ils font tous quasiment 7 caractères et ça sera plus rapide en lecture) ?
  • Chaque entrée dans la table correspond à un ou plusieurs logiciel. Le but, après, est d'afficher les entrées correspondant à un logiciel donné. Là, je vois donc une possibilité évidente de stockage : crééer une colonne INT(1) par logiciel qui prendra la valeur 0 (= ne correspond pas à ce logiciel) ou 1 (= correspond à ce logiciel). Normalement je n'ajouterait pas souvent de logiciels dans la liste de logiciels "possibles" mais si c'est le cas il faudra à chaque fois que je rajoute une colonne à la table. Une autre solution est d''utiliser qu'une colonne qui s'appelle "logiciels" et de mettre comme valeur "logiciela;logicielc;logicield" et après d'utiliser une requête SELECT ... LIKE ... quand je veux afficher les entrées pour un logiciel donné. Quelle est la meilleure solution selon vous ?


Ai-je été assez clair ? :?
 
Merci


---------------
Président de l'intégration 2006 à l'INSA de Rouen.
Reply

Marsh Posté le 20-08-2006 à 10:26:42   

Reply

Marsh Posté le 20-08-2006 à 21:50:55    

premiere question j'aurais utilise un varchar (as tu vraiment besoin de l'indexage du champ enum?je crois pas que ce soit une bonne maniere de reflechir que de dire que toutes les valeurs possiles font 7 caracteres)
deuxieme question j'aurais plutot fait 3 tables;
 
Tatable1
--------
Cle_Table1|Libelle_entree
 
Logiciel
--------
Cle_Logiciel
 
Table1_Logiciel (qui fait le lien entre les entrees et les logiciels)
---------------
Cle_Table1|Cle_Logiciel
 
exemple;
--------
 
Table1
--------
1|toto
2|tutu
3|tata
4|tintin
 
Logiciels
---------
1|A
2|B
3|C
4|D
 
Table1_Logiciel
---------------
1|1
1|3
2|2
2|4
4|3
3|1
 
toto est lie aux logiciels A et C
tutu est lie ux logiciels B et D
tata est lie au logiciel A
tintin est lie au logiciel C


Message édité par betsamee le 20-08-2006 à 21:57:32
Reply

Marsh Posté le 22-08-2006 à 11:24:24    

D'accord !
 
Par contre pour la première question je pense plutôt resté au type "ENUM" ;)
 
Merci :)

Reply

Marsh Posté le 22-08-2006 à 12:09:34    

moi j'aurais plutôt fait une table de référence...

Reply

Sujets relatifs:

Leave a Replay

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