Aller au contenu

Créer une association "plusieurs à plusieurs" avec MySQL


Arcy

Messages recommandés

Bonjour,

Je dispose de deux tables :

[DROITS]

clé primaire : IDdroit

propriété : nomDroit

propriété : descriptionDroit

[uTILISATEURS]

clé primaire : ID

propriété : nomUtilisateur

Mon but est de réaliser une association de type "plusieurs à plusieurs [m, n]" où 1 utilisateur peut avoir plusieurs droits et 1 droit peut être attribué à plusieurs utilisateurs.

Cette propriété est censé avoir la forme :

[LIGNE_DROIT]

clé primaire : IDdroit

clé primaire : IDutilisateur

propriété portée : afficher(O/N)

Le problème est que MySQL ne semble pas permettre la création de telles associations ... et le manuel ne m'aide pas beaucoup.

Quelqu'un a déjà rencontré ce problème ou a un script qui pourrait répondre à ça ?

:merci:

EDIT : J'étais parti sur ça avant, mais ça ne marche pas :

CREATE TABLE ligneDroit (
IDdroit INTEGER REFERENCES droits(IDdroit) NOT NULL,
IDutilisateur INTEGER REFERENCES utilisateurs(ID) NOT NULL,
afficherPropriété INTEGER DEFAULT 0,
CONSTRAINT pk_lig_droits PRIMARY KEY(IDdroit, IDutilisateur)
);

#1064 - Erreur de syntaxe près de 'NOT NULL,
IDutilisateur INTEGER REFERENCES utilisateurs(ID) NOT NULL,
afficher' Ã la ligne 2

Lien vers le commentaire
Partager sur d’autres sites

Tu n'aurais pas mal placé le NOT NULL ?

CREATE TABLE ligneDroit (
IDdroit INTEGER NOT NULL REFERENCES droits(IDdroit),
IDutilisateur INTEGER NOT NULL REFERENCES utilisateurs(ID),
afficherPropriété INTEGER DEFAULT 0,
CONSTRAINT pk_lig_droits PRIMARY KEY(IDdroit, IDutilisateur)
);
Aussi évite les accents dans les noms de tables/colonne/autres, c'est problématique avec certains outils.

Pour les références la colonne source et destination doivent être du même type, pas de INTEGER pointant vers un VARCHAR.

Lien vers le commentaire
Partager sur d’autres sites

C'est ce que me donnait effectivement le message d'erreur mais, MySQL étant aussi compréhensible sur les messages d'erreurs qu'un français parlant anglais à l'étranger, ça m'a pas paru aussi ... simple sur le coup (surtout que je me suis basé sur d'anciens cours qui avaient cette syntaxe ...).

Sinon quand je créer la table, ça va la remplir automatiquement avec toutes les possibilités ou pas ?

Lien vers le commentaire
Partager sur d’autres sites

Finalement, cette partie du projet a été abandonné, trop compliqué à mettre en place (le site, réservé à une utilisation interne, n'avait pas été pensé à la base pour ça, donc trop d'éléments à modifier).

Par contre il semblerait que phpmyadmin puisse finalement le faire : on créer la table/association avec propriété portée puis on défini les liaisons en allant sur "Structures" puis "Vue relationnelle".

Par contre il génère pas la requête, il ne fait que l'exécuter ... c'est dommage.

Non. Quand tu crées une table, ça ne met jamais rien dedans. De toute manière, tu ne veux pas donner tous les droits à tous tes utilisateurs, si ? ;)

Dans mon cas ça n'aurait pas dérangé, la création de l'utilisateur et la gestion des droits sont sur la même page.

Le problème était surtout dans le cas où on ajoute de nouveaux droits possibles (modifier le mot de passe de quelqu'un d'autre, etc ...), ce qui allait devenir ingérable et trop lourd.

L'intégralité du projet aurait dû tourner autour de ça dés le début ...

Lien vers le commentaire
Partager sur d’autres sites

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...