2016-05-05 9 views
0

私は学校のデータベースについて学習しており、正規化を行う必要があるという課題があります。私は考えていることをよく理解しています。私はいくつかのテーブルに対して正規化を実行する必要があることを私が研究しているプロジェクトを持っています。私はいくつかのテーブルでそれを行うことができましたが、他のものは部分的または推移的な依存関係を考えることができません。私の質問は、すべてのテーブル/エンティティが正規化を行う必要があるということですか?すべてのテーブルを正規化する必要がありますか?

返信いただきありがとうございます。

+1

正規化の熟練度は非常に重要なので、実際のデータベースで使用するのがいつ適切であるかを知ることができます。 –

+0

No.この場合、データは正規化されます。 –

答えて

1

、あなたを持つべきだと思う場合は、それらを使用することができますデータベースの初期設計は正規化されました。これは、Boyce-Codd Normal FormまたはFourth Normal Formの問題のある依存関係との関係を分解することで単純に冗長性を排除することを意味します(依存関係を失う場合を除き、第3正規形を選択する必要があります)。

もちろん、推移関係や部分依存関係、多値依存関係などの関係に問題がない場合は、すでに正規化されているため、関係に触れてはいけません。その後

が、必要な場合は、クエリのパフォーマンスを見ることで、あなたは、インスタンスが一緒に別の関係を置くために、非正規化、および限られた冗長性の量、または変更の異常を受け入れることができます。すでに正規化されているリレーションを分割することができます。これは、複雑なプログラムの複雑さと不一致のリスクの面で価格を支払わなければならないためです。厳密に必要な場合にのみ支払います。

+0

この回答の2番目の段落は、OPの質問の中核に到達するために私に見えます。正規化は、正規化されていないテーブルから通常の形式へと導くプロセスとして、しばしば教えられます。しかし、テーブルを非正規化して最初に設計する必要はありません。特に、正規化されたテーブルを設計する経験があるため、特別な理由がある場合を除いて、正規化されていないテーブルを設計する考えはありません。 – TAM

+0

@TAM、これは絶対に正しいです! – Renzo

0

短い答え:はい、少なくとも3NFに行くことをお勧めします。

長い答え:いいえ、特定のアプリケーション固有の要件があります。これは、正規化しないことを意味します。

あなたが望むについて知らないかもしれない学生なので、あなたが「私は正規化する必要がありますが、それがないとあまり意味があります」の一般的なアドバイスとして

関連する問題