質問

KISS(愚か、それをシンプルに保つ)ボイス・コッド正規形であり、どのように正規化されていないテーブルを取り、それをBCNFために何を思い出すための方法とは?

ウィキペディアするさんの情報:私のためにひどく有用ではない。

役に立ちましたか?

解決

クリス日付の定義があまりにも長い間、あなたが理解し、彼が何を意味するのか、実際には非常に良いです

各属性

あなたのデータは、他の属性に依存しない独立した、個別の属性/列/値に分割する必要があります。あなたのフルネームは属性です。あなたの誕生日は、属性です。あなたの年齢は属性ではありません、それはあなたの誕生日の一部ではない、現在の日付に依存します。

という事実を表している必要があります。

各属性は、単一の事実ではなく、事実のコレクションです。属性に1ビットを変更すると、全体の意味を変更します。あなたの誕生日は事実です。あなたのフルネームは事実ですか?あなたの姓を変更した場合、あなたのフルネームが異なるのでまあ、いくつかのケースではそれが正しい、ありますか?しかし、系図学者に、あなたは姓と家族の名前を持っている、そして、あなたの姓を変更した場合、あなたの家族の名前は変更されませんので、それらは別々の事実です。

キーについて、

一つの属性は、それが重要なのです、特別です。キーは、データ内のすべての情報に対して一意である必要があり、変更することはありませんしなければならない属性です。それは変更することができますので、あなたのフルネームはキーではありません。彼らは再利用しますので、あなたの社会保険番号がキーではありません。あなたのSSNプラス誕生日には、属性は二つの事実を組み合わせることはできませんので、組み合わせは、再利用することはできません場合でも、キーではありません。 GUIDが鍵となります。あなたはインクリメントし、再利用することはありません数が鍵となります。

全キー、

だけではキーはあなたの値を識別するのに十分な[!の、必要なの]でなければなりません。あなたは異なるキーによって表される同じデータを持つことができない、また、キー列のサブセットは、事実を識別するのに十分であることができます。 あなたがGUIDキー、名前とアドレス値とアドレス帳を持っていたとします。彼らが別の人を代表して「同じデータ」でない場合は、別の鍵で二回表示される同じ名前を持つことがOKです。 会計処理のメアリー・ジョーンズは、メアリー・スミスに彼女の名前を変更した場合は、販売中のメアリー・ジョーンズは、同様に彼女の名前を変更しません。 メアリー・スミスとジョン・スミスが同じ住所を持っており、それが実際には同じ場所である一方、これは許可されていません。あなたは住所と新しいキーで新しいキー/値のペアを作成する必要があります。

あなたが今も同じ住所キーを2回表現されるので、アドレス帳の値として、この新しい単一住所のキーを使用することはできません。 代わりに、アドレス帳キーおよび住所キーの値を持つ第三のキー/値のペアをしなければなりません。あなたは、この値のグループに帳簿キーとアドレスキーを照合することによって個人の住所を見つけます。

とキー

何も

自分の価値観を識別するキー以外の何があってはなりません。たとえば、あなたは、あなたが同じレコード内の都市値を許可されていません(1つだけであると仮定して)「タージマハル」のアドレスを許可されている場合 あなたがアドレスを知っている場合ので、あなたも街を知っているだろう。これはまた、そこに別の都市に複数のタージ・マハルである可能性を開くでしょう。 代わりに、あなたは再びタージ、DCのホワイトハウスなど、およびその都市のようなユニークな値を持つ二次場所のキーを作成する必要があります。 や都市に固有な「アドレス」を禁止しています。

だからコッド、私を助けて。

他のヒント

ここで第3正規形の上のWikipediaのページからいくつかの有用な抜粋です

ビル・ケントは、この方法を第3正規形を定義します:

  

各非キー属性が「提供する必要があります   キー、キー全体についての事実、   そしてキー何も。」

     

非キー属性があることを必要と   「全キー」性を保証に依存   表には、2NFであること。さらに   非キー属性があることを要求します   「キー何も」に依存   表が3NFであることを保証します。

クリス・日はボイス・コッド正規形を定義するためのケントのニーモニックを適応します:

  

「各属性は、事実を表現しなければなりません   キー、キー全体、約   キーは何もありません。」ここ   要件は、すべてに関係しています   だけではなく、テーブル内の属性   非キー属性ます。

テーブルには、複数の化合物の候補キーを持っており、一つの候補キー内の属性が別の候補キーのの部分のに依存していたときに

これが場に出ます。それがキー属性を除外しているため第3正規形は、これを禁止しています。しかし、BCNFは、同様にキー属性にルールを適用します。

表がBCNFを満たすようにする方法については、あなたは別の属性で、おそらく別のテーブルに属性を分割することによって、余分な依存関係を表現する必要があります。

I「はボイスのCODD正規形を」グーグルとウィキペディアの後にこれが第2の結果です。私の教科書は、リレーショナル・データベース管理システムの面で非常に単純な定義を与えます:

  

すべての自明でないFDの左側はスーパーキーでなければならない。

- ガルシア - モリーナ、ウルマンとWidomによる「データベース・システムコンプリートブック」

私が読んだ最高の非公式答えはBCNFでは、すべての機能依存内のすべての「矢印」は候補キーのうち「矢」である、ということです。私はソースを覚えていませんが、それはおそらくクリス日付が書いたものだった。

基本的にはボイス・コッドは、「第5正規形」です。これは、タイプ(例えばロール、状態、プロセスの状態、位置型、携帯電話型、等)のようなもののために、データ・モデル内の「連体エンティティ」のexistanceによって視覚的に認識可能です。 連体エンティティ(サブサブタイプ)はさらに、クラスレベルのエンティティを分類値の有限集合のリストです。だから、電話型(「携帯」、「机」、「VOIP」)電子メールアカウントの種類(「ビジネス」、「個人」、「ゲーム」)、役割(プロジェクトマネージャー、データ・モデラー、スーパーモデル)などを有することができます。 別の形態学的手がかりは、スーパータイプのexistanceである、などの締約国として(別名。マスタークラス、スーパークラス、メタ実体)(サブタイプなど、会社、人、です)。

これは、基本的に分類は、原子またはリーフレベルに(動画はそのエキサイティングではありません..no)野生行っています。より技術的な説明のために上記のビルKarwinさんのコメントを参照してください。

ボイス・コッド・レベル・モデルは、本質的に、より単純なビジネスベースの概念モデルに由来する非常に詳細な論理的なモデルです。 **これらは、性能(または機能シンプル)のためのPDMの最適化は、スーパータイプにつながる可能性があるため、通常、物理モデルにbatimのver実装されていないと連体エンティティはUIの中に、または場面ロジックの後ろにドロップダウンリストとして管理されていますアプリケーションで、またはデータベースの制約と参照整合性を強制する方法インチ(すなわち、それらは、PDMスキーマのルックアップテーブルのように終わる可能性があり、またはそれらがコードによって処理され、データベースには示されていないことがある)。

だから、 - 彼らはPDMで終わるかもしれない場合は、なぜそれらを行いますか?あなたは「最適化」の前に、データベースの構造が現実世界を反映しているので、私たちは継承し、当社のビジネス/クライアントとして動作させるために英雄的な行為をしなければならない典型的なクラッジよりも安定しているように、あなたは、良い3NFモデルを構築し、同様の理由要件が変更されます。

しばしばそれはあなたの腸を聞くことが最も簡単であり、これは自然に来ます。あなたは3NFを満たしていれば一般的に言って、あなたはBCNFを満たしています。これは、ERDの詳細な分析をカバーするかの例を持っていますが、コッドに応じて13個のルールがありません。私はそれが最高のこれらの規則に従うことを見つけるが、常にそう物事を行う緩くそれらに従うことを誰も正しい方法はありません覚えています。そこでここでは、RDBMSに関する規則があります:

http://www.87android.com / 12ルールのリレーショナル・データベース・モデル・バイ・CODD /

この直接質問に答えることはできませんが、あなたはBCNFか、あなたは十分に正規化を理解していないことを覚えて簡単に取得する方法について尋ねている場合。それはしかし関係ないのです。リレーショナル・データベースは多くの形態を取り、非常に少数のはよく行われています。あなたができる最善のことは、関係あることを意味するものを知っている上記のルールに従うと、正規化のレベルを心配しないでくださいです。正規化のプロセスは、データの重複を排除します。各レベルは、よりのでによる機能依存性のマイグレーションに移動します。心の中でそれを維持し、あなたは大丈夫だろう、あなたの腸と知性が残りの作業を実行します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top