sql >> データベース >  >> RDS >> Oracle

正規化されたテーブルを使用する方が本当に良いですか?

    それは依存します...テーブルの結合は、「事前に結合された」、つまり非正規化された1つの大きなテーブルを持つよりも本質的に遅くなります。ただし、非正規化すると、データの重複が発生し、テーブルが大きくなります。正規化は、「任意の」質問に答えることができるデータベースを作成するため、良いことと見なされます。正規化が適切に行われると、データにアクセスするための選択を作成できます。これは他のいくつかの形式のDBには当てはまらず、それらは現在(ほとんど)歴史的な無関係であり、正規化/関係DBがその戦いに勝ちました。

    質問に戻りますが、非正規化を使用して処理を高速化することは、広く受け入れられている手法です。通常、DBをしばらく実行して、非正規化するものとそのままにしておくものを理解するのが最善です。また、データを「正しい」正規化された形式のままにして、データを非正規化されたレポートのセットにプルすることも一般的です。定期的にテーブル。そのプロセスがレポート実行自体の一部として実行される場合、データも常に最新です。

    過度の正規化の例として、過去にDBを見て、曜日と月が別々のテーブルに引き出されました。日付自体は正規化されています。行き過ぎてしまう可能性があります。



    1. ORA-01843:有効な月ではありません

    2. PHPでSQLクエリを保護するための最良の方法

    3. MySqlCommand Prepare()がIsPreparedをtrueに設定することはありません

    4. node.js async/awaitをMySQLで使用する