この質問で回答されているように: Cardinality in PostgreSQL、カーディナリティは Constraint を使用して適用されます。
カーディナリティ ルールは、1 対多、多対多などの関係の許容数を定義します。多対多は結合テーブルを使用して実現され、1 対多は FOREIGN KEY を使用して実現されます。
しかし、1 対 1 または多 (1 対 1+) の関係を実装するにはどうすればよいでしょうか。これは質問するのと同じです: PostgreSQL で最小限のカーディナリティを適用するにはどうすればよいですか?
実際の状況は、人 (ユーザーまたは顧客など) によって提供されなければならない (ただし、複数の場合もある) 住所 (または電話番号) を保存する必要がある場合です。
編集:
上記の状況は、一般的な問題の特殊なケース (カーディナリティ 1) です。一般的な問題は次のとおりです。任意の数のカーディナリティを強制する方法は?
jug が回答したように、最小カーディナリティが 1 の場合、 null 以外のFOREIGN KEY 参照を回避策として使用できます。また、多くの中からデフォルトを選択する追加機能も提供します。
しかし、クリケットのチームとその選手の間の関係の別の状況を考えてみましょう。チームとしての資格を得るには、すべてのチームに最低 11 人のプレーヤーが必要です。ここでは、最小カーディナリティは 11 です。
同様に、コースと学校の学生との関係では、すべての学生が少なくとも 5 つのコースに登録する必要があり、すべてのコースに最低 10 人の学生が必要です。