我正在使用MySQL并且已经计划出我建立的系统的数据库结构。正如我一直在进行的那样,我开始怀疑在许多不同的表中是否可以接受特定的外键约束。根据我的理解,它会很好,因为它是有道理的。但是我想仔细检查。
例如,我有一个users表,我使用user_id作为许多表的外键,有时在一个表中多次。例如,我与one-to-one
表存在user_settings
关系,当然存储user_id
。然后我有一个公司表,其中只有一些对user_id
键的引用。在这种情况下,我有一个列,用于跟踪在系统中创建公司的用户(created_by
),该列是主要联系人(main_contact
的列,他也是系统的用户),可能还有另一个参考。仅此而已,已将user_id
密钥用作外键约束3-4次。
只是为了添加另一个信息,我有一个任务表,当然需要引用user_id
来跟踪它被分配给谁,我还有另一个列保持跟踪创建任务的用户。那将分别是assigned_to
和created_by
。
通过该引用返回该键还有更多表。我可能已经有8个参考。我相信到目前为止我已经正确地设计了它,但根据我所提到的,这听起来不错吗?
答案 0 :(得分:0)
根据我的未定,您定义的方式很好,即将用户ID用作许多表作为外键。
如果您的行::我有公司表,仅有一些对user_id键的引用并不意味着您在同一个表中使用multipe user_id而我知道您不是
答案 1 :(得分:0)
您的外键使用对我来说似乎很好 - 毕竟,您只是表示表之间的逻辑关系。
系统中的用户以多种方式与数据交互,并定义这些关系,您的方法是正确的。
我认为关键点在于,在很多情况下,您并不总是希望(或需要)创建代表您关系的所有连接 - 只需要在该环境中需要的连接。