常に少なくとも第 3 正規形 (3NF) でデータベースを設計していますか? なんで?
4 に答える
一般的に、そうしない正当な理由がある場合を除いて、少なくともボイス コッド / 第 5 正規形のデータベースを設計することを目指しています。通常形式を使用する主な理由は、不正確な結果の原因となる冗長性を避けるためです。もう 1 つの利点は、Normal Form がデータベース設計の「偏り」 (他の使用パターンよりもいくつかの使用パターンに適合する傾向) を回避するのに役立つことです。これにより、要件の進化に伴うスキーマ変更のサポートが容易になります。
昔、データ分析に ER モデリングを使用し、リレーショナル モデルに変換し、リレーショナル モデルを SQL テーブル (インデックス付き) に変換しました。複雑に聞こえますが、そうではありません。各ステップはシンプルで扱いやすいです。
ER モデリングを正しく行うと、各属性を正しいエンティティまたは関係に関連付けることができます。自然か合成かを問わず、すべてのエンティティはキーを取得します。すべての有用な関係を発見することは、データ分析の最も深い部分です。
ER モデルは、属性から関係を形成するためのガイドとして使用できます。すべてのエンティティは関係を取得し、すべての多対多の関係は関係を取得しますが、多対 1 の関係はエンティティ関係の 1 つで外部キーを取得します。
このような設計は自動的に 3NF になります。BCNF、4NF、5NFからの出発は稀です。
リレーションに基づいて SQL テーブルを作成するのは簡単です。インデックスの設計では、ボリューム、負荷、およびリソースを予測する必要があり、多少 DBMS に依存します。
いいえ、常にではありません。
ばかげた間違いをしないように、正規形をよく理解する必要があります。しかし、利便性やパフォーマンス上の理由から、便利な場合もあります。(キャッシング)
同期が取れなくなる可能性のあるデータの重複を避けることが最も重要だと思います。(名前を変更し、リソースを再配置しました。) それでも、それがまさにあなたが望むものである場合があります。(特定の時点での請求書の概要。)
「dportas」には偏見についての重要なポイントがあります。標準形式のルールを破ると、コードとデータの保守性と柔軟性が低下する傾向があります。
私は少なくともそのように設計します(異なるルールを持つデータウェアハウスを作成していない限り)。人々が初期の設計段階で非正規化しようとするのを見たときはいつでも、彼らが解決したよりもはるかに多くの問題を引き起こしました。私はこのがらくたを直す人なので、毎日それらの人々をのろいます。