Database-Design

如何規範化具有通用和非通用欄位的表?

  • August 3, 2017

並提前感謝。

我正在嘗試規範一個表“ People”,其中每個條目(人)屬於許多不同類別之一(例如“律師”、“客戶”、“法官”)。某些欄位在類別中是通用的(例如,firstNamelastName)。

但是,某些(一組)欄位對於每個類別都是唯一的:例如,“客戶”可能沒有“ LawyerBoardID”編號。因此,當且僅當該人屬於“律師”類別時,該條目才會在該欄位中具有值;換句話說,該欄位將NULL適用於所有其他類別。

這對子表有影響。“ ”表中的一個人,許多條目Address- 教科書範例。如果我將我的 " People" 表拆分為多個表 - 即每個類別一個 - 那麼我將不得不在 " Address" 表中放入盡可能多的 FK,對嗎?因此,如果我有 10 個類別,就會有 9 個NULLFK。

有什麼建議嗎?也非常歡迎提供相關網頁的連結。

您的案例看起來像類/子類的實例(或者,如果您願意,類型/子類型)。您可以在 SO 或 DBA 中找到許多類似的答案。

不要為每個人用單獨的表替換人。您可能需要帶有類型特定數據的類型的子表。這些將具有與 people 表相同的主鍵,但僅在需要時才存在。

律師可能具有特定於作為律師的律師事務所地址,該地址將儲存在律師子類型表中。對於其他子類型,請遵循此模式。

考慮一個人是否可以是多個子類型以及如何處理這種情況。某些子類型看起來好像它們可能與不同實體(例如案例)的關係產生。考慮子類型欄位是否真的是關係欄位。連接表可以包含其他欄位。

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