JeuWeb - Crée ton jeu par navigateur
Quel type utiliser ? - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : Quel type utiliser ? (/showthread.php?tid=3652)



Quel type utiliser ? - MdE - 08-02-2009

Bonjour,
J'ai une toute petite question qui me taraude concernant la bonne utilisation des différents types dans une base de données MySQL. Quel type utiliser pour un champs qui ne contiendra qu'une valeur booléenne (0 ou 1) ?

Merci


RE: [MySQL] Quel type utilisé ? - naholyr - 08-02-2009

Si on veut stocker un booléen, il vaut mieux utiliser le champ qui prendra le moins de place possible dans la table.
http://dev.mysql.com/doc/refman/5.0/fr/storage-requirements.html

En l'occurrence :
- ENUM('0','1') ou ENUM('TRUE', 'FALSE')
- TINYINT(1)
prennent tous deux 1 octet, et sont donc de bonnes alternatives.

Sinon, http://dev.mysql.com/doc/refman/5.0/fr/maxdb-reserved-words.html :
Citation :BOOLEAN a été ajouté en MySQL version 4.1.0; c'est un synonyme de BOOL qui équivaut à TINYINT(1). Il accepte les valeurs entières dans la même plage que TINYINT ainsi que la valeur NULL. TRUE et FALSE peuvent être utilisés comme alias de 1 et 0.
Tant qu'à faire, pour stocker des booléens, autant utiliser le type dédié Wink


RE: [MySQL] Quel type utilisé ? - MdE - 08-02-2009

Apparemment, le Tinyint(1) accepte quand même les chiffres jusqu'à 127 chez moi.

Par contre, le Enum fonctionne bien, mais est-ce vraiment le mieux ?

J'ai la version 4.1.9 de MySQL mais je n'ai pas de type BOOLEAN :/

EDIT: En fait, une donnée ne peut-elle pas occuper moins d'1 octet ?


RE: [MySQL] Quel type utilisé ? - Ruz - 08-02-2009

a ma connaissance, impossible de descendre sous 1 octet avec MySql

TinyInt(1), TinyInt(2), TinyInt(3),TinyInt(4) acceptent toutes les memes valeurs (testé, suffit d'encoder 999 dans des champs des 4 types, et regardez les valeurs mémorisées)
Je n'ai tjs pas compris l'utilité de ce truc...

Maintenant, pour le type, Boolean serait le meilleur choix (histoire de limiter les possibilités) maitnenant, si t'as pas, ben, voir un substitutif, comme déjà évoqué


RE: [MySQL] Quel type utilisé ? - wild-D - 08-02-2009

^^ A ce que je sais, le chiffre entre parenthèse dans la déf des types en mysql, n'a aucun impact sur la taille de stockage; ça ne sert que pour l'affichage, donc tinyint(1) ou tinyint(2) pourront stocker exactement les même données.

perso j'utilise enum pour les donées "binaire" (vrai/faux)


RE: [MySQL] Quel type utilisé ? - MdE - 08-02-2009

Ok merci, je vais faire comme toi alors. Merci à tous.