是否可以在MySQL中创建两个不同的主键来互相引用?

时间:2015-05-10 22:41:09

标签: mysql

我有两张桌子: 1.使用case_id作为主键和事件的事件 2.带有vehicle_no作为主键的车辆。 是否可以使vehicle_no引用case_id?

2 个答案:

答案 0 :(得分:1)

是的。虽然两个看似不同的实体共享一个密钥有点奇怪。这通常发生在相关实体上。 (特别关注的是,他们将这些东西命名为完全不同的东西,这可能会导致后来出现混淆。)但无论如何,相同的模式都有效。

你会得到Incident表:

Incident
----------
case_id    PK    auto-increment
some_other_field
etc.

这将创建一个正常的自动增量键,就像任何其他键一样。那么你的Vehicle表只会有一个外键,它也是它的主键:

Vehicle
----------
vehicle_no    PK    FK to Incident
another_field
etc.

插入Vehicle时,只需要为INSERT语句提供外键的有效值,就像在外键字段中插入任​​何其他值一样。

答案 1 :(得分:0)

标准化不足。车辆肯定会涉及多个事故?一个事件可能涉及多个车辆?因此,您不希望将车辆行直接与案例相关联,或者反之亦然。你需要的是第三个表,{case_id,vehicle_id}对。