[解決済み] データベースの1:1リレーションを使うことに意味があることはあるのでしょうか?
2022-04-22 13:31:47
質問
先日、正規化について考えていて、ふと思ったのですが、データベースの中で1対1の関係があるべき時が思い浮かびません。
-
Name:SSN
? 同じテーブルの中に置いておくと -
PersonID:AddressID
? 再び、同じテーブルで。
1:manyやmany:manyの例は(適切な中間テーブルを使って)いくらでも思いつくが、1:1の例はない。
何か当たり前のことを見逃していませんか?
どのように解決するのですか?
1対1の関係は、通常、何らかの理由で大きなエンティティをパーティション分割したことを示します。多くの場合、物理スキーマのパフォーマンス上の理由ですが、データの大きな塊が同時に "unknown"になると予想される場合、ロジック側でも起こり得ます(その場合、1:0または1:1を持ちますがそれ以上ではありません)。
論理的なパーティションの例として、ある従業員に関するデータがありますが、その従業員が健康保険を選択した場合にのみ収集する必要がある、より大きなデータセットがあります。健康保険に関する人口統計学的なデータを別のテーブルに置いておくと、セキュリティのパーティショニングが容易になり、保険とは関係のないクエリーでそのデータを持ち運ぶこともなくなります。
物理的なパーティションの例としては、同じデータが複数のサーバーでホストされていることが挙げられます。例えば、健康保険の人口統計データを別の州(人事部のある場所)に置き、プライマリー・データベースはリンクされたサーバーを経由してのみそれにリンクすることができます...機密データを他の場所に複製することを避けつつ、(ここではまれだと仮定して)それを必要とするクエリーに利用可能にすることができます。
物理的なパーティショニングが有効 いつでも より大きなエンティティの一貫したサブセットを必要とするクエリがある場合。
関連
-
[解決済み] SQL Serverで実行中の合計を計算する
-
[解決済み] PostgreSQLからのPL/pgSQL出力をCSVファイルに保存する
-
[解決済み] SQLite - UPSERT *not* INSERT or REPLACE
-
[解決済み] フラットテーブルをツリーにパースする最も効率的/エレガントな方法は何ですか?
-
[解決済み] 複数の列に対してSELECT DISTINCTする方法(またはできる方法)は?
-
[解決済み] SQL ServerでINSERT INTOとしてデータをエクスポートする
-
[解決済み】NULL列を含む一意制約の作成
-
[解決済み】Common Table Expression(CTE)を使用するタイミングについて)
-
[解決済み】データベースで継承を表現するには?
-
[解決済み] データベースへの「コメント」「いいね!」の実装
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
windows mysql prompt access denied for user ''@'localhost' to database.
-
SQL-初心者のためのベスト入門SQLクエリ I
-
[解決済み] SQL Serverで実行中の合計を計算する
-
[解決済み] ...値に挿入する ( SELECT ... FROM ... )
-
[解決済み] SQL ServerでJOINを使用してUPDATE文を実行するにはどうすればよいですか?
-
[解決済み] SQL Serverでシングルクォートをエスケープするにはどうすればよいですか?
-
[解決済み] SQL Server における DateTime2 と DateTime の比較
-
[解決済み] SQL SELECT WHERE フィールドに単語が含まれる場合
-
[解決済み] DISTINCTでCOUNT(*)を選択する
-
[解決済み] SQLのインデックスとは何ですか?