是否可以创建在数据库中不是真正外键的外键?

时间:2011-09-12 19:00:44

标签: database-design foreign-keys

我有这个模拟数据库:

用户:

  • 用户ID

公司:

  • COMPANY_ID
  • USER_ID

加盟店:

  • franchise_id
  • COMPANY_ID

存储

  • STORE_ID
  • franchise_id

这些都是主键和外键。

我想知道如果将诸如把user_id放在特许经营权表中这样做是不好的做法。

这样我可以在没有所有关系的情况下进行报告,并且万一“丢失”我可以找到它的去向。它们不是数据库中定义的外键,但它们看起来像外键。或者我应该把它们变成外键吗?

感谢您的投入。

编辑:我还认为像我一样思考的非规范化可能有助于加快速度,而不必使用所有连接。

2 个答案:

答案 0 :(得分:6)

您所谈论的是计划数据非规范化。您最好为报告访问表创建视图。这样您就不必更改表及其完整性(或存储冗余),但您仍然可以在报告中使用关联。

答案 1 :(得分:3)

我明白你在做什么。对我来说,你现在拥有的一切都很好;您不需要为特许经营添加额外的字段'user_id'。由于用户与公司有关系,公司与特许经营有关系;用户确实与特许经营权有联系。

您可能希望创建一个视图来显示所有内容,而不是向表中添加额外的字段。