【发布时间】:2020-05-09 17:42:37
【问题描述】:
假设我有四个表:
Table 1 - Users - id, name
Table 2 - Models - id, user_id, name
Table 3 - Types - id, user_id, name
Table 4 - Cars - id, user_id, model_id, brand_id
从技术上讲,我不需要 Cars 表中的“user_id”列。
使用 'user_id' fk 是个好习惯吗?冗余?当然它更容易编程......
【问题讨论】:
-
你能解释一下为什么在 Models and Types 中有一个 user_id 列吗?
-
需要吗?这就像在
Users中询问您是否需要一个列email— 如果您需要该信息,则需要它,如果您不想要它,则不需要它。我们不知道您的数据意味着什么,但您可能有负责给定型号、类型或汽车的用户……或不负责。也许问题在于user_id并没有真正解释角色的含义(与例如main_driver_user_id进行比较)。 -
FK 提供了一个索引(用于
JOINs中的效率)和一个约束(用于数据完整性)。您可以制作自己的索引;约束是检查你最终会消除的错误。
标签: mysql database database-design foreign-keys