Casse tete BDD - SQL/NoSQL - Programmation
Marsh Posté le 09-11-2004 à 21:43:43
a.b_id n'est pas une clé étrangère car b_id seule n'est pas une clé primaire... Soit tu rajoutes un champ a.c_id, soit tu retires c_id de la clé primaire de la table b.
Marsh Posté le 09-11-2004 à 15:56:46
Voila le pb :
J'ai une table a avec sa clef primaire a_id et une clef etrangere vers la table b, b_id
J'ai une table b avec sa clef primaire composée de :
b_id et c_id, c_id étant une clef etrangere vers la table c
J'ai une table c avec sa clef primaire c_id.
Pourquoi est-il impossible de representer cela en MPD ??? (si on essaie de le faire, cela ajoute systématiquement c_id dans la table a, car c_id et b_id sont la clef primaire composée de la table b...)
Pourtant, en générant l'ordre SQL généré par le MPD (avec DBdesigner)avec dans la table a les clef etrangère b_id et c_id, et en virant à la main la clef c_id de la table a, ca fonctionne...
CREATE TABLE c (
c_id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
PRIMARY KEY(c_id)
);
CREATE TABLE b (
b_id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
c_id INTEGER UNSIGNED NOT NULL,
PRIMARY KEY(b_id, c_id)
);
CREATE TABLE a (
a_id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
b_id INTEGER UNSIGNED NOT NULL,
PRIMARY KEY(a_id)
);