8791 sujets

Développement web côté serveur, CMS

salut!
je fais une table avec des utilisateurs, et je voudrais noter si l'utilisateur appartient ou pas a un groupe: le type booléen serait super, mais je trouve pas comment faire avec Mysql!

@+
salut,

a ma connaissance il n'y a toujours pas de champs booleen sous mysql.

solution un peu bof:

tu peux utiliser une variable qui prend peu de place TINYINT (avec 0 et 1) ou un ENUM avec comme valeur authorisé true et false.

c'est ce que je faisais a mes débuts mais je ne crois pas que ce soit hyper-élégant.
puis je suis passé a sql server.

a mon avis la solution la plus propre c'est avec 3 tables.

les tables groupes et utilisateurs avec chacune leur champs clé primaire

+ une table intermédiaire où la clé fait 2 champs qui reprennent les 2 clés des tables précédentes. (plus d'éventuelles informations genre date d'inscription au groupe ).

comme ça tu n'es pas gêné au niveau de la structure de ta table utilisateur
si tu veux ajouter des groupes

Pascal
Modifié par CPascal (28 Mar 2010 - 20:36)
CPascal a écrit :
a ma connaissance il n'y a toujours pas de champs booleen sous mysql.

Une petite recherche sur le manuel en ligne de MySQL me donne cette page sur les types numériques, qui dit, entre autres, ceci :
Le manuel en ligne de MySQL a écrit :
BIT, BOOL, BOOLEAN

Ce sont des synonymes de TINYINT(1). Le synonyme BOOLEAN a été ajouté en version 4.1.0

Autrement dit, il est possible de créer une colonne de type BOOLEAN dans MySQL. Smiley cligne
@Victor BRITO il fallait lire la suite :

CPascal a écrit :

tu peux utiliser une variable qui prend peu de place TINYINT (avec 0 et 1) ou un ENUM avec comme valeur authorisé true et false.


Car il avait donné la solution Smiley langue
Modifié par Benjamin-Ds (29 Mar 2010 - 00:11)
Heyoan a écrit :
Salut,

ça n'empêche pas que le type BOOL existe. Smiley cligne


Il est là pour faire beau non? Smiley murf

Car lorsque je creer un champ de type bool je me retrouve avec tinyint(1) donc ...
oui mais bon avouons que ça fait trop longtemps que je n'utilise plus mysql.

faut que je m'y remette Smiley ravi
Benjamin-Ds a écrit :
lorsque je creer un champ de type bool je me retrouve avec tinyint(1) donc ...
Certes mais la requête exécutée est
ALTER TABLE `ma-table` ADD `booleen` BOOL NOT NULL ;
Donc le type est reconnu même s'il faudra encore attendre avant que le type créé soit vraiment BOOL ou BOOLEAN.

Les avantages (pour l'instant limités) :
* choix logique du type lors de la création de la table.
* "pérennité" puisqu'avec un DUMP actuel réutilisé avec la v 7.0 de Mysql ( Smiley lol ) un vrai type BOOL sera créé.