私は非正規化の定義を行っていましたが、冗長なデータを追加すると複雑な結合を取り除くことができますか?どのように冗長データを追加すると、非正規化で複雑な結合を取り除くことができますか?
0
A
答えて
0
は、次の2つの関係を考えてみましょう:
Department (department_id PK, department_name, manager_employee_id)
Employee (employee_id PK, employee_name, department_id)
が上司の名前と一緒に従業員の名前のリストを取得するには、我々は次のようなクエリ必要があります:場合は、今すぐ
SELECT e.employee_name, m.employee_name AS manager_name
FROM Employee AS e
INNER JOIN Department AS d ON e.department_id = d.department_id
INNER JOIN Employee AS m ON d.manager_employee_id = m.employee_id
を推移的な関数依存性employee_id -> department_id -> manager_employee_id -> employee_name
をEmployeeテーブルに非正規化すると、テーブルは次のようになります。
Department (department_id PK, department_name, manager_employee_id)
Employee (employee_id PK, employee_name, department_id, manager_employee_id, manager_name)
実際には、冗長性が慎重に同期されていないとデータの一貫性が損なわれる可能性があるため、これは良い設計ではない可能性があります。しかし、この例では、そのリスクを無視します。新しいテーブルで
、我々は今、このような従業員と管理者の名前のリストを取得することができます。
SELECT employee_name, manager_name
FROM Employee
冗長性は、いくつかのクエリをより簡単に表現することを助けることができるが、それはデータの矛盾のリスクを導入することができます慎重に考慮され、制御される必要があります。また、ディスク上のページに収まる行が少なくなるため、冗長性にはより多くの記憶領域が必要になり、クエリが遅くなります。一方で、結合や計算を削除することでクエリを高速化することができ、一貫性を維持するために使用することもできます。それぞれの場合は、それぞれのメリットを考慮する必要があります。
関連する問題
- 1. 冗長なPythonの正規表現を取り除く
- 2. 追加されたビットで結合を非正規化すべきか、それとも何か?
- 3. AndroidStudioでキーストアを開くことができない - 「冗長な長さのバイトが見つかりました」
- 4. 正規化では、関数の依存関係がある場合、冗長属性を削除します
- 5. 非リレーショナルデータベースでは冗長データはどのように回避されますか?
- 6. 異なるテーブル内の冗長データが3NF正規化と壊れていますか?
- 7. 冗長正規表現を削除しますか?
- 8. どのように私は小さなマップをGoogleマップで取り除くことができますか?
- 9. 返品確認のためにこのコードを簡略化することはできますか?非常に冗長であるようです
- 10. パラメータが正規表現である場合、どのようにリクエストからデータを取得できますか?
- 11. BDDシナリオをどのように書くことができますか?複雑なフロー
- 12. データの正規化中に、自分の属性を追加できますか?
- 13. 冗長データを削除しますか?
- 14. Grails - 複数の結合でリストビューに冗長データが表示される
- 15. C#ジェネリック型から非ジェネリック型へ継承するとき、どのように冗長性を減らすことができますか?
- 16. 追加の条件を追加するときに「結合述語がありません」 - なぜですか?
- 17. 冗談はこれをテストすることができますどのよう
- 18. jQueryとAjaxからどのようにHTMLにデータを正しく追加できますか?
- 19. 結晶レポートで負の値を取り除くことができます
- 20. この結合は複雑ですか?
- 21. Mochaテストで冗長な結果をプログラムで取得するにはどうすればよいですか?
- 22. ロダシュでどのように深く取り除くことができますか?
- 23. 迷惑メールデータをテキスト分析からどのように取り除くことができるのですか
- 24. どのように各ループのAsp.Net MVCで名前空間を取り除くことができますか?
- 25. "link_to"をどのように追加することができますか? "検索結果に戻る"機能
- 26. どのように(複雑な)教義2オブジェクトをシリアル化できますか?
- 27. どのようにしてこの正規表現を定式化して、ネストまたは非貪欲なマッチングを避けることができますか?
- 28. これはどのようにしてAndroid用の正規表現を書くことができますか?
- 29. Minmax正規化は複雑な部分をキャストしますか?
- 30. テーブルを正しく結合する複雑なMySQLクエリ
データが完全に非正規化されている場合、参加するものはありません。 –
@Oilver簡単な質問です。すべてが非正規化データの1つのテーブルにありますか? –
あなたが与えた「非正規化」の定義は何ですか? – philipxy