0

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

表:

  • 项目建议书
  • 里程碑_提案
  • 资源_提案
  • 项目
  • 里程碑_项目
  • 资源_项目

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

我的问题是我是否应该

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

设计将是这样的:

  • 项目建议书
  • 项目
  • 里程碑
  • 资源

非常感谢,彼得

4

1 回答 1

0

You have the same fields, but they "point" (through foreign keys) to different tables, so you can't just merge them into a single field. What you'll end-up with is a CHECK that allows one field or the other to contain a non-NULL value, based on the type field.

Which is perfectly fine in this simple case. You are essentially following the strategy #1 out of the 3 possible strategies for implementing inheritance.

于 2012-07-18T10:16:44.620 回答