Database-Design
如何對有時(但不總是)有小節的數據進行建模?
我正在嘗試幫助我的妻子為她的項目創建一個模式,但我對她的一些數據以及如何對其建模感到有些困惑。
她有一堆進入數據庫的“標準”。這些都相當簡單。就像是:
Standards ID Code Description -- ---- ----------- 1 7DF1 Description of some standard blah 2 7DF2 Description of some other standard asdf 3 8A33 Yet another description
但是,這些“標準”中的一些有一種“不合標準”。所以 8A33 可能有 a、b 和 c 部分需要單獨引用。
所以很容易創建一個如下所示的 Substandards 表:
Substandards ID StandardID Code Description -- ---------- ---- ----------- 1 3 a Description of 8A33 part a 1 3 b Description of 8A33 part b
但是現在其他表需要參考一個標準,這個標準可以是正常的標準,也可以是不合格的。我不知道如何保持正常形式。我能想到的就是這樣做,但這似乎是錯誤的:
SomeOtherTableThatReferencesStandards ID StandardID SubstandardID -- ---------- ------------- 1 1 2 2 3 3 a 4 3 b
SubstandardID 欄位中存在空數據表明我可能做錯了什麼,但我想不出更好的方法來做到這一點。我考慮過有一個欄位告訴您 ID 是標準還是子標準,但是我不能真正保持參照完整性(沒有外鍵)。
我知道這有點模糊,因為我這裡沒有真實數據,但我認為這可能是一個很容易解決的常見問題,我希望有人能認識到它。
考慮一個用於層次結構的 parent_id 列。這將類似於員工表的常見概念。使用員工結構,您不會為達到就業層級創建表。
在這種結構中,所有標準都在同一個表中。但是,子標準將在 parent_id 列中有一個值,將它們指向它們是子標準的標準。下面是如何儲存數據的範例。任何具有 NULL parent_id 的標準都可以被視為頂級標準。