【问题标题】:InnoDB one (or none) to one relationship problemInnoDB 一对一(或无)关系问题
【发布时间】:2009-03-05 13:18:44
【问题描述】:

我有两张桌子:

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

创建表`汽车`( `car_id` int(11) NOT NULL AUTO_INCREMENT, `car_name` varchar(25), 主键(`car_id`) ) 引擎=创新; 创建表`轮胎`( `tire_id` int(11) NOT NULL AUTO_INCREMENT, `tire_size` int(11), `car_id_FK` int(11) NOT NULL DEFAULT '0', 主键(`tire_id`), 约束`Ref_Car_Has_tire`外键(`car_id_FK`) 参考`汽车`(`car_id`) 删除无操作 更新无动作 ) 引擎=创新;

我的问题是轮胎不一定属于汽车,可能会有额外的轮胎只是闲置。尝试在没有正确 car_id 的情况下创建轮胎当然会引发错误。

现在我可以简单地删除引用,但我确信有适当的方法来处理这种情况。

【问题讨论】:

    标签: mysql database database-design innodb


    【解决方案1】:

    我现在不确定 MySQL 是否允许这样做,但我认为以下方法可以解决您的问题:

    `car_id_FK` int(11) DEFAULT NULL,
    

    【讨论】:

    • 这样一个快速而简单的答案,让我不得不问这个问题我几乎感到羞愧。我坐在这里为此挠了很久。完美运行,非常感谢。
    • 没关系。如果我的回答有帮助,如果您将其标记为已接受,我将不胜感激。谢谢!
    • FWIW,是的,MySQL 允许在具有外键约束的列中使用 NULL。 NOT NULL 约束是独立的。
    猜你喜欢
    • 2014-01-11
    • 2014-02-17
    • 2013-02-08
    • 1970-01-01
    • 2020-10-17
    • 2019-11-25
    • 1970-01-01
    • 1970-01-01
    • 2011-03-23
    相关资源
    最近更新 更多