【问题标题】:Good design: 2 tables with a foreign key to the same primary key好的设计:2个表的外键指向同一个主键
【发布时间】:2012-07-18 18:16:44
【问题描述】:

我想知道我是否遵循了一个好的设计来跟踪数据库表。

表格:

  • Project_Proposal
  • 里程碑_提案
  • Resources_Proposal
  • 项目
  • 里程碑_项目
  • Resources_Project

两个里程碑表具有相同的列,两个资源表具有相同的列。

我的问题是我是否应该这样做

  1. Merge Milestones_Proposal with Milestones_Project
  2. 将 Resources_Proposal 与 Resources_Project 合并
  3. 创建一个“TYPE”列来标识这些表中的数据是属于项目还是属于项目提案
  4. 根据“类型”值在里程碑和资源中定义指向 Project_Proposal 或 Project 表的外键。

设计应该是这样的:

  • Project_Proposal
  • 项目
  • 里程碑
  • 资源

非常感谢, 彼得

【问题讨论】:

  • Project 和 Project_Proposal 有什么区别?

标签: database-design


【解决方案1】:

您拥有相同的字段,但它们“指向”(通过外键)不同的表,因此您不能将它们合并到一个字段中。您最终会得到一个 CHECK,它允许一个字段或另一个字段包含非 NULL 值,具体取决于类型字段。

在这种简单的情况下,这完全没问题。您基本上遵循3 possible strategies 中的策略#1 来实现继承。

【讨论】:

    猜你喜欢
    • 2017-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-07
    • 1970-01-01
    • 2011-07-11
    相关资源
    最近更新 更多