Normalization

ID 反模式是什麼以及如何?

  • October 9, 2014

什麼是ID 反模式以及為什麼/在什麼情況下它被視為反模式

id 反模式在每個表中都有一個唯一的 ID 列。為每條新記錄生成 ID。為什麼這是反模式?– 安德魯·沃爾夫 11 分鐘前

id 反模式在每個表中都有一個唯一的 ID 列,而不需要(或通常不鼓勵)應用備用唯一鍵。為每條新記錄生成 ID。為什麼這是反模式?

數字代理鍵很好,包括當它們是單例主鍵時。

但是,每次我看到每個表都有這個 id 列的模式時,設計者希望該行就像一個記憶體句柄。這避免了主鍵設計的關鍵問題,並促進了重複插入矛盾的冗餘數據。它讓數據庫設計人員大發雷霆。

在正在執行的應用程序的記憶體中,像這樣的記憶體句柄是暫時的。當應用程序退出時它們已經死了,並且沒有重新啟動應用程序嘗試再次使用它們。這使得指針和對象句柄在該上下文中很有用。

類似地,將一個對象的句柄/指針儲存為另一個對象的一部分是有意義的。它將一個對象的所有權強加於另一個對象。

這些句柄只有在一些客戶進來並需要數據的情況下才具有內在意義。除了客戶端操作之外,句柄沒有任何意義。

但是,數據庫儲存具有永久 ID 的永久數據。您需要有一種方法可以在三天后恢復您想要的數據。要做到這一點,你需要在某個地方有一些有意義的東西,而不僅僅是永久的記憶體句柄。

為什麼數據庫設計者關心主鍵和備用鍵?因為當有人回到數據庫並且找不到他們的數據時,數據庫就一文不值了。如果您需要瀏覽和分析數據,如果您所見的任何地方都有名為“id”的列而沒有其他約束來告訴您它們的含義,您將如何弄清楚呢?object_label = ‘Important Thing’ 的 90000 行中的哪一行是您想要的?

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