Database-Design

如何對有時(但不總是)有小節的數據進行建模?

  • March 15, 2022

我正在嘗試幫助我的妻子為她的項目創建一個模式,但我對她的一些數據以及如何對其建模感到有些困惑。

她有一堆進入數據庫的“標準”。這些都相當簡單。就像是:

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 的標準都可以被視為頂級標準。

引用自:https://dba.stackexchange.com/questions/308761