这些外键太多了吗?

时间:2015-07-14 02:56:27

标签: mysql database

我正在使用MySQL并且已经计划出我建立的系统的数据库结构。正如我一直在进行的那样,我开始怀疑在许多不同的表中是否可以接受特定的外键约束。根据我的理解,它会很好,因为它是有道理的。但是我想仔细检查。

例如,我有一个users表,我使用user_id作为许多表的外键,有时在一个表中多次。例如,我与one-to-one表存在user_settings关系,当然存储user_id。然后我有一个公司表,其中只有一些对user_id键的引用。在这种情况下,我有一个列,用于跟踪在系统中创建公司的用户(created_by),该列是主要联系人(main_contact的列,他也是系统的用户),可能还有另一个参考。仅此而已,已将user_id密钥用作外键约束3-4次。

只是为了添加另一个信息,我有一个任务表,当然需要引用user_id来跟踪它被分配给谁,我还有另一个列保持跟踪创建任务的用户。那将分别是assigned_tocreated_by

通过该引用返回该键还有更多表。我可能已经有8个参考。我相信到目前为止我已经正确地设计了它,但根据我所提到的,这听起来不错吗?

2 个答案:

答案 0 :(得分:0)

根据我的未定,您定义的方式很好,即将用户ID用作许多表作为外键。

如果您的行::我有公司表,仅有一些对user_id键的引用并不意味着您在同一个表中使用multipe user_id而我知道您不是

答案 1 :(得分:0)

您的外键使用对我来说似乎很好 - 毕竟,您只是表示表之间的逻辑关系。

系统中的用户以多种方式与数据交互,并定义这些关系,您的方法是正确的。

我认为关键点在于,在很多情况下,您并不总是希望(或需要)创建代表您关系的所有连接 - 只需要在该环境中需要的连接。