Postgresql
對少數不同的值進行規範化或不規範化
假設在 Postgres 數據庫中,您有一個名為 的表
party
,它可以包含少於 5 個定義良好的表,party_types
例如“Person”或“Organization”。您會將其儲存
party_type
在party
表中(例如party_type = 'Person'
)還是對其進行規範化(例如party.party_type = 1
andparty_type(id, name) = (1, 'Person')
)?為什麼?
如果您正在實施黨-角色-關係模型或其中的一部分,那麼擁有
party_type
一個單獨的實體非常重要。您可能有更多帶有外鍵的表 party_type (例如,將某些角色的適用性限制為特定的派對類型$$ s $$,或強制執行不同類型的各方之間的關係等)。在這種情況下使用任何形式的檢查約束(包括列舉)都會隱藏邏輯並使維護更加困難。
我會為此使用一種
enum
類型。