Casse tete BDD

Casse tete BDD - SQL/NoSQL - Programmation

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)
);

Reply

Marsh Posté le 09-11-2004 à 15:56:46   

Reply

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.

Reply

Sujets relatifs:

Leave a Replay

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