一对一关系在MySQL工作台数据建模图中创建两个外键

时间:2019-01-25 14:36:55

标签: mysql foreign-keys mysql-workbench

我正在MySQL工作台上进行数据建模。

我有三个数据实体:

  1. company
  2. driver
  3. car

关系是,一个公司有很多驾驶员,一辆汽车有两个驾驶员(主驾驶员和副驾驶员)

这是我到目前为止的数据模型(我只创建了一个driver链接到图片中的car):

enter image description here

如上图所示,我以一对多的关系将company链接到driver。该工具将按预期在company_id表中自动创建driver外键。没问题。

问题drivercar之间存在关系。在图片中,我只将cardriver之间的一对一关系建立了联系,我希望该工具会创建一个driver_id外键,但是工具会自动创建两个外键:driver_iddriver_company_id

(如果我为从cardriver的副驾驶员创建另一个一对一关系,该工具将再次创建两个新的外键,即图片中未显示)

那是为什么?为什么该工具为何除了driver_company_id外键之外还创建一对一关系的driver_id外键?背后的概念是什么?如果现在我手动删除driver_company_id外键会有什么区别?

1 个答案:

答案 0 :(得分:0)

实心连接器指示identifying relationship,这意味着driver.company_id必须是复合主键的一部分。

因此,从cardriver的外键必须引用一个复合主键,因此它将创建两个列。

如果您想做我想做的事,请使两个外键连接器都使用虚线,这表示未识别的关系。