web-dev-qa-db-ja.com

いくつかの異なる値に対して正規化するかどうか

Postgresデータベースを想定すると、partyというテーブルがあり、 'Person'や 'Organization'など、明確に定義された_party_types_が5つ未満になる場合があります。

_party_type_をpartyテーブルに保存しますか(例:_party_type = 'Person'_)または正規化しますか(例:_party.party_type = 1_およびparty_type(id, name) = (1, 'Person'))?
なぜ?

3
Mike81

パーティーとロールの関係モデルまたはその一部を実装する場合は、party_type独立したエンティティとして非常に重要です。 party_typeへの外部キーを持つさらに多くのテーブルがある場合があります(たとえば、特定のロールの適用を特定のパーティータイプに制限するため、または異なるタイプのパーティー間の関係を実施するためなど)。そのような場合に任意の形式(列挙型を含む)でチェック制約を使用すると、ロジックが非表示になり、保守が困難になります。

7
a1ex07

enum type を使用します。

5
GhostGambler