2009-03-05 8 views
0

J'ai deux tables:InnoDB un (ou pas) à un problème relation

alt text http://img.zoodia.com/pics/643d0c93d59782ae16c0fbb85cabdb88.png

 
CREATE TABLE `Car` (
    `car_id` int(11) NOT NULL AUTO_INCREMENT, 
    `car_name` varchar(25), 
    PRIMARY KEY(`car_id`) 
) 
ENGINE=INNODB; 
 
CREATE TABLE `Tire` (
    `tire_id` int(11) NOT NULL AUTO_INCREMENT, 
    `tire_size` int(11), 
    `car_id_FK` int(11) NOT NULL DEFAULT '0', 
    PRIMARY KEY(`tire_id`), 
    CONSTRAINT `Ref_Car_Has_tire` FOREIGN KEY (`car_id_FK`) 
    REFERENCES `Car`(`car_id`) 
    ON DELETE NO ACTION 
    ON UPDATE NO ACTION 
) 
ENGINE=INNODB; 

Mon problème est qu'un pneu ne doit pas appartenir à une voiture, il pourrait y avoir Soyez des pneus supplémentaires tout simplement assis autour. Tenter de créer un pneu sans car_id bien sûr entraîne une erreur.

Maintenant je pourrais simplement enlever la référence mais je suis sûr qu'il y a une manière appropriée de manipuler cette situation.

Répondre

2

Je ne sais pas maintenant si MySQL permet cela, mais je pense que ce qui suit pourrait résoudre votre problème:

`car_id_FK` int(11) DEFAULT NULL, 
+0

Une telle réponse rapide et simple, je suis presque honte d'avoir dû demander. Je me suis assis ici en me grattant la tête pendant un bon moment. A travaillé parfaitement, merci beaucoup. – Mike

+0

Ne vous dérange pas du tout. Si ma réponse était utile, j'apprécierais que vous la marquiez comme acceptée. Merci! –

+0

FWIW, oui, MySQL autorise NULL dans une colonne avec une contrainte de clé étrangère. La contrainte NOT NULL est indépendante. –

Questions connexes