この質問は多少広がっているので、私はその概念を説明します。
ビューはある一般レポーティング/データプレゼンテーションの目的のために使用し、それゆえ、私はそれらを正常化しようとしないでしょう。あなたのケースは異なるかもしれません。
あなたは、プライマリ/外部キーの概念について明確にする必要があります。テーブルの上に定義された実際の制約の
不足(例えばPRIMARY KEY
、FOREIGN KEY
)は、テーブル、列に論理的な関係を持っていないことを意味するものではありません。
Triggers
でデータメンテナンスを実装できます。
あなたが本当に非常にデ正規化されたデータの多くは、明らかな理由もなくテーブルに存在している状況があり、それを正常化したい場合は、この問題は、2つの方法でアプローチすることができます。
- 完全な再 - 書き込み - 私は小さな/新しいアプリにお勧めします
- "漸進的な"リファクタリング - 大規模な/成熟したアプリケーションでは、基礎となるデータ関係が複雑で、完全には理解できないかもしれません。 「段階的」リファクタリング以内
いくつかの方法が同様にあります
2.a.節1つの古いテーブルを新しいテーブルに置き換え、同時に新しいテーブルを使用するために古いテーブルを使用するすべてのコードを変更します。大規模システムでは、このテーブルを参照するすべての場所を認識していない可能性があるため、問題がある可能性があります。一方、テーブル構造の変更が重要でない場合や依存関係の数が少ない場合には、便利な場合があります。
2.b。別の方法は、あなたが望む形状/フォームで(同じデータベース内に)新しいテーブルを作成することです。現在のテーブルは、同じデータを(古いテーブルに)返すが、「新しい」テーブルに由来するView
に置き換える必要があります。このアプローチは、すべての依存関係を直ちに変更する必要性を取り除き/最小化します。欠点は、特に、View Instead Of Trigger
を実装する必要がある場合は、古いテーブルを置き換えるビューがかなり複雑になる可能性があることです。
あなたのデータベースは何らかの理由で正規化されていない可能性がありますか?それはデータウェアハウスであり、それを別の方法で使用することを意味するため、正規化しようとしていますか?ポイントは、データと矛盾の量を減らすことで正規化を行うことですが、クエリはより高価です...ところで、それはあまりにも広範な問題であり、マニュアルを探すならおそらく良いでしょう。エンティティとエンティティ間の関係が何であるかを理解する必要があることを確実にするために、ゼロからの再起動が簡単になるかもしれません。 –
こんにちは。文字通り数十の情報モデリングとdbデザインの教科書はpdf形式で無料でダウンロードできます。多くの学術スライド(例:sfu.ca)とコース(例:stanford.edu)があります。再度プロシージャ/プロセスには、htmlとpdfsの製品のイントロとリファレンスがあります。そのようなリソースをここで求めているのは、話題にはならず、コンテンツが広すぎることを求めることです。 [ask]を読んで行動してください。 – philipxy
これは有効な質問だと思います。これは、既存のデータベース設定の観点からのものです。私は、既存のデータベーステーブルを取得して正規化し、これらのテーブルにさらに多くのデータを挿入する際に正規化を維持するためのステップまたは方法を求めています。 – NonProgrammer