正規化のルールに当てはまる場合、1:1の関係は正規化できます(定義により!)-つまり、1:1の関係については、正規の形式に従うことが不可能になるものはありません。
1対1の関係の実用性についての質問に答えるために、これは、述語(列)が異なるサブタイプがある場合など、完全に便利な構成である場合があります。
1対1の関係を使用する理由は、視点によって異なります。DBAはすべてをパフォーマンスの決定であると考える傾向があります。データモデラーとプログラマーは、これらの決定をデザインまたはモデル指向であると考える傾向があります。実際、これらの視点の間には多くの重複があります。それはあなたの視点と優先順位が何であるかに依存します。以下は、1対1の関係の動機の例です。
非常に幅の広い列のサブセットがあり、パフォーマンス上の理由から、それらをストレージ内で物理的に分離したい場合。
頻繁に読み取られたり更新されたりしない列のサブセットがあり、パフォーマンス上の理由から、それらを頻繁に使用される列から離しておく必要があります。
一般にオプションの列がいくつかありますが、レコードが特定のタイプであることがわかっている場合は必須です。
サブタイプに論理的に属している列がいくつかあり、それらをモデル化して、コードのオブジェクトモデルにうまく適合させたいとします。
エンティティのスーパータイプの一部のサブタイプにのみ適用できる列がいくつかあり、スキーマで他のサブタイプにこのデータが存在しないようにする必要があります。
エンティティに属するいくつかの列がありますが、より制限されたアクセスルール(従業員テーブルの給与など)を使用してこれらの特定の列を保護する必要があります。
ご覧のとおり、ドライバーはパフォーマンスである場合もあれば、モデルの純粋さである場合もありますが、宣言型スキーマルールを最大限に活用したいという欲求もあります。