通常、1 対 1 の関係は同じテーブルに格納できます。それらを同じテーブルに保存しない理由はありますか?
4 に答える
列の数とタイプ。テーブル内の列のサイズには制限があります。ここを参照してください。1 行あたり最大 8,060 バイトです。
非常に大きなテーブルもパフォーマンスに影響を与える可能性があり、最適化と適切なインデックス作成が困難になる可能性があります。
これは、互いに離れて、概念的に異なるデータを保持することとは別にあります。たとえば、国と通貨は 1 対 1 の関係にあります (実例として、常にそうとは限りません)。私はまだそれらを一緒に保ちません。
http://onlamp.com/pub/a/onlamp/2001/03/20/aboutSQL.htmlで、1 対 1 の関係を作成すると便利な場合についての情報を見つけることができます。
最も重要なことは次のとおりです。
1 対 1 のリレーションシップが必要になる可能性を示す重要な指標は、そのテーブル内のレコードの特定のサブセットにのみ使用されるフィールドを含むテーブルです。
ロック/ブロッキングを防ぐためにこれを行い、読み取りの多い列をあるテーブルに置き、重い列を別のテーブルに更新すると、魅力的に機能しました。多くの大きな脂肪更新トランザクションが、多くの読み取りを遅くしていました。
1対0または1の関係は一般的であり、オプションから必須にリンクされています-http://onlamp.com/pub/a/onlamp/2001/03/20/aboutSQL.htmlに示されている例はこれです親切で、一対一ではありません。タイプ/サブタイプの関係は、このように実装できます。
1 対 1 の関係は、それぞれが明確で意味のあるエンティティを表している場合に発生します。異なるコンテキストでは異なる関係にある可能性があり、要件の小さな変更によって関係のカーディナリティが変わる可能性があります。どちらにリンクするかは任意であるため、1 つをオプションとして選択し、1 から 0 または 1 に変換するのが最善です。