私は、機能依存と正規化を研究するための優れたリソースを見つけようとしています。
誰もがどこに目を向けるべきか考えていますか? FDが1NF、2NF、3NFのどれであるかを区別するのは難しいですか?
私はWikipediaを読んでいて、Google検索を使用して良い研究を見つけましたが、それを簡単な言葉で説明するものは見つかりません。
多分あなたはあなたがあなたの人生の間にFDと正規化をどのように学んだかについても共有することができます。
機能依存関係は、属性間の機能関係を定義します。例:PersonId
は、機能的にBirthDate
を決定します(通常、PersonId -> BirthDate
)。これの別の言い方は次のとおりです。人の任意の特定のインスタンスに対して正確に1つの生年月日があります。逆の場合もそうでない場合もあります。多くの人が同じ日に生まれたのかもしれません。 BirthDate
が与えられると、その日付を共有する多くのPersonId
が見つかることがあります。
機能の依存関係のセットを使用して、関係(テーブル)を合成できます。 Boyce Codd正規形(BCNF)を含む最初の3つの正規形の定義は、与えられた関係のセットが機能的な依存関係をどのように表すかという観点から述べられています。 4番目と5番目の正規形には、多価依存関係(別の魚のやかん)が含まれます。
ここでは、機能の依存関係、正規化、およびデータベース設計に関する無料のリソースをいくつか紹介します。この教材を研究するときは、脳と数学のスキルを行使する準備をしてください。
以下は様々な学術サイトからの「スライドショー」です...
以下は学術論文です。読書は多いですが、努力する価値は十分にあります。
この主題に真剣に関心がある場合は、リレーショナルデータベースの設計に関する主題の優れた本に現金を出すことをお勧めします。例: C.J。日付によるデータベースシステムの概要
機能依存は、テーブルの列間の制約です。たとえば、テーブルpersonの場合:
SSN |名前|生年月日|住所|電話番号 - - - - - - - - - - - - - - - - - - - - - - ----------------------------- 123-98-1234 |シンディ・クライ| 1983年5月15日|ロサンゼルス| 123-456-7891 121-45-6145 |ジョン・オニール| 1980年1月30日|パリ| 568-974-2562 658-78-2369 |ジョン・ラノイ| 1980年1月30日|ダラス| 963-258-7413
ここで、列SSN(社会保障番号)の値は、列名、生年月日、住所、および電話番号の値を決定します。これは、SSN列に同じ値を持つ2つの行がある場合、列の値、生年月日、住所、電話番号は等しくなります。 SSN 123-98-1234の人は常にCindy Cryと呼ばれ、15-05-1983に生まれます。このような状況は機能依存関係と呼ばれます。
関数従属関係の概念は、2番目、3番目の正規形、およびBoyce-Codd正規形(BCNF)を定義するために使用されます。
機能の依存関係と正規化の詳細については、CJ日付によるデータベースの紹介などの有名な学術書、またはH.ガルシアモリナ、J。ウルマンによる 本のいずれかを参照してください。 J.Widomトリオ 。
あまり正式でないアプローチが必要な場合は、データの正規化に関する一連の投稿を 弊社のブログ で開始します。
2つの属性があり、1つの属性が他の属性に完全に依存していると想定して、関数の依存関係を理解することができます。
実際の例を挙げてみましょう。私たちは誰もがその人の名前に対して社会保障番号を持っていることを知っています。フランクは人で、この人の社会保障番号を知りたいのですが、フランクという名前の人がたくさんいるので、データベースはこの情報を手伝うことができませんが、社会保障番号に対して人の名前を特定できるので、人は社会保障番号に完全に依存しています。
機能的な依存関係は通常の形式ではありません。正規形は、FDの特定のセットを満たす関係のプロパティです。
ウィキペディアやグーグルに依存しないでください。オンラインの情報源からの誤った情報やごみが多すぎる。試してください:
機能依存
機能の依存関係は、関係の属性間に存在する関係として定義できます。機能依存関係は、BCNFと略されるBoyce Codd正規形で関係を作成するために使用されます。 CとDがリレーションRの属性であり、属性Cが属性Dを機能的に決定する場合、両方の属性間の機能依存関係はC-> Dとして表すことができます。
例:人物スキーマの下
person(national_id、name、address);
ここで、national_idはperson_nameを機能的に決定します。したがって、機能的な依存関係は、national_id-> nameです。
機能の依存関係は、冗長性を排除する目的で、リレーショナルデータベースの設計で重要です。