データベース設計では、1対1の関係をいつ使用する必要がありますか?私の意見では、2つのテーブルが1対1の関係にある場合、それらを1つのテーブルに結合することができます。これは本当ですか?データベース設計で1対1の関係を使用する必要があるときは、
答えて
垂直パーティショニング - しばしば対まれに照会されている別々の列を。
alter table
が「高価」である場合、運用システムに列を追加する。Super-type/subtypeパターン。
テーブル結合の恩恵を受ける垂直パーティショニング - オプティマイザを提供する は、I/Oとキャッシュを減らすためにこれをサポートします。 4と同様、しかし6NFにダウン -
一般的です。
特権を列のサブセットに異なる方法で割り当てる場合は例外です。
また、両側が必要な場合にのみこれが当てはまると考えてください。
頻繁にアクセスされるデータを1つのテーブルに格納し、他のテーブルのデータにアクセスすることはほとんどありません。それはより速く実行され、いくつかのメモリを節約します。
しかし、私はそれをする前に私の腕をひねってしまわなければならないでしょう。
時にはテーブルロックに便利です。データベースに列を追加すると、テーブル全体が完全に書き換えられるまでロックされます。これは、データベースに100k行がある場合にはほとんど影響を与えません。しかし、100Mの行または1Bの行がある場合、それはまったく別の話です...
余計なスペースを取る不都合な行を避けることも有効です。 MVCCを使用していて、一部の列が定期的に上書きされている場合は、別のテーブルに配置することが時折意味があります。間違いなく、自動吸引はついに始まるが、ハードドライブ作業を惜しまないために、テキスト、varchar(n)でいっぱいの行全体、および他に何を知っているのか分からないいくつかのintフィールドが別のテーブルにある。
最後に、ORMのselect *
の乱用が考えられます。たとえば、画像やブログ記事/記事を保存している場合は、BLOB /テキストフィールドを別のテーブルに保存するのが理にかなっています。理由やその他の理由でロードされるたびに、ORMは行全体をロードするためです。画像や投稿のURLだけが必要なときは、最後にデータベースからバイナリ/テキスト全体を取り出すことが必要です。まだあなたのORMは、まさにそれを行います... I/Oおよびキャッシュ要件削減する大規模なテーブルのための
- 1. 1対多関係データベース設計
- 2. データベース関係1:1対1:0..1
- 3. データベース:1対多(または1対1)関係
- 4. 1対多の関係で代理キーが必要ですか?
- 5. 外部キーと1対1の関係はどちらにする必要があります
- 6. EF 1 1に対して必要な関係
- 7. 1対1の関係を1対多の関係で返す方法
- 8. 1対1の関係
- 9. CoreData 1対1の関係
- 10. Rails 3 - 1対1の関係を持つモデル - 必要ですか?belongs_to
- 11. データベース設計の多対多の関係
- 12. Ruby Railsデータベースの関係 - 1対多
- 13. ハイバネートと1対1の関係
- 14. Hibernateツールが1対1の関係を検出できない
- 15. 新しいライブ逆の関係と1対1の関係レルム
- 16. スキーマで1対1の関係をモデル化する方法は?
- 17. MS Accessで1対1の関係
- 18. lift/mongodbと1対1の関係を作成する方法
- 19. MySQLデータベースの設計:1対1、多対多、多対多、多すぎますか?
- 20. MSAccess:1対1の関係から1行を選択する
- 21. Doctrine:1対1の関係を結ぶ
- 22. 1対1の関係を削除
- 23. データベース設計(私はEAVアプローチを使用する必要があります)
- 24. 1対多の関係をテストする
- 25. 1対1の関係で両方のレコードを削除する
- 26. SQL Serverで1対1の関係を定義する
- 27. SQLは1対1の関係の1対1の列ではありません
- 28. 1対1の関係が異なる可能性がある逆の一対一の関係で、どのようにprefetch_relatedできますか?
- 29. MVCスカッフォールディングとEFの1対0または1対1の関係エラー
- 30. JPA Hibernate 1対1の関係