Postgresデータベースを想定すると、party
というテーブルがあり、 'Person'や 'Organization'など、明確に定義された_party_types
_が5つ未満になる場合があります。
_party_type
_をparty
テーブルに保存しますか(例:_party_type = 'Person'
_)または正規化しますか(例:_party.party_type = 1
_およびparty_type(id, name) = (1, 'Person')
)?
なぜ?
パーティーとロールの関係モデルまたはその一部を実装する場合は、party_type
独立したエンティティとして非常に重要です。 party_typeへの外部キーを持つさらに多くのテーブルがある場合があります(たとえば、特定のロールの適用を特定のパーティータイプに制限するため、または異なるタイプのパーティー間の関係を実施するためなど)。そのような場合に任意の形式(列挙型を含む)でチェック制約を使用すると、ロジックが非表示になり、保守が困難になります。
enum
type を使用します。