2012-07-18 81 views
0

我不知道我是否遵循一個好的設計以下的數據庫表。好的設計:2個表與一個外鍵到相同的主鍵

表:

  • Project_Proposal
  • Milestones_Proposal
  • Resources_Proposal
  • 項目
  • Milestones_Project
  • Resources_Project

兩個里程碑表都具有相同的列,並且兩個資源表具有相同的列。

我的問題是我是否應該

  1. 合併Milestones_Proposal與Milestones_Project
  2. 合併Resources_Proposal與Resources_Project
  3. 創建一個「TYPE」列,以確定是否這些表中的數據屬於任何一個項目或項目建議書
  4. 根據「類型」值在里程碑和資源中定義外鍵,該外鍵指向Project_Proposal或Project表。

設計會那麼這樣的:

  • Project_Proposal
  • 項目
  • 里程碑
  • 資源

非常感謝, 彼得

+0

Project和Project_Proposal有什麼區別? – 2012-07-18 11:38:00

回答

0

你有相同的字段,但他們通過外鍵「指向」不同的表,所以你不能把它們合併成一個字段。你最終得到的是一個CHECK,它允許一個字段或另一個字段根據類型字段包含非NULL值。

在這種簡單的情況下,這是完全正確的。你基本上是遵循3 possible strategies中的策略#1來實現繼承。

相關問題