我正在MySQL工作台上进行数据建模。
我有三个数据实体:
company
driver
car
关系是,一个公司有很多驾驶员,一辆汽车有两个驾驶员(主驾驶员和副驾驶员)
这是我到目前为止的数据模型(我只创建了一个driver
链接到图片中的car
):
如上图所示,我以一对多的关系将company
链接到driver
。该工具将按预期在company_id
表中自动创建driver
外键。没问题。
问题driver
和car
之间存在关系。在图片中,我只将car
与driver
之间的一对一关系建立了联系,我希望该工具会创建一个driver_id
外键,但是工具会自动创建两个外键:driver_id
和driver_company_id
。
(如果我为从car
到driver
的副驾驶员创建另一个一对一关系,该工具将再次创建两个新的外键,即图片中未显示)
那是为什么?为什么该工具为何除了driver_company_id
外键之外还创建一对一关系的driver_id
外键?背后的概念是什么?如果现在我手动删除driver_company_id
外键会有什么区别?
答案 0 :(得分:0)
实心连接器指示identifying relationship,这意味着driver.company_id
必须是复合主键的一部分。
因此,从car
到driver
的外键必须引用一个复合主键,因此它将创建两个列。
如果您想做我想做的事,请使两个外键连接器都使用虚线,这表示未识别的关系。