ERモデルからの関係構造の構築

記事「 開発」→「データベーステーブル開発の 関係」 →「ユビキタスueasleyの データベースの設計」に少し追加したいと思います。

リレーショナルデータベーススキーマを構築できるルールを説明したいと思います。 これらのルールは開発者が直感的なレベルで使用するため、これらのルールを必要とする人はほとんどいませんが、データベーススキーマを構築するプロセスを形式化するからです。

これらの規則は、ERモデル、つまりエンティティ関係モデルに適用されます。

ERモデル



ERモデルは図であり、その構成要素は次のとおりです。
例を挙げます。
顧客とその注文に関する情報を保存する必要があります。 チャートを作成する

ER図オーダーメイド
図1

「ORDER」エンティティの側では、関係が追加の長方形で示されていることに注意してください-これは、「ORDER」の各インスタンスが「CLIENT」エンティティのインスタンスに対応することを意味します(クライアントの場合、順序は不要です)。 「M」の度合いは、エンティティ「CUSTOMER」のインスタンスごとにエンティティ「ORDER」のインスタンスが複数存在する可能性があることを意味します(ただし、逆はできません。各注文には常に1人の顧客しかいないため、「1」

リレーション(通常はデータベース内のテーブルに対応)は、エンティティと混同しないでください。 エンティティは、ERダイアグラムから抽出することにより、関係に変換します。

設計手順


  1. 概念設計


    すべてのエンティティと関係を含むER図が作成されます。 概念(情報)モデルを取得します。 そのようなモデルは、設計されたデータベースの関係構造に対応しない可能性があることを理解されたい。

    注文、顧客、従業員に関する完全な情報を保存する必要があるデータベースを構築するとします。 各注文には、この注文の要素のリスト(いくつかの製品)があり、それぞれの要素は、消費された材料と実行された作業のリストに関連付けられています。

    私は次の図を得ました。


    図 2

  2. 論理設計


    予備的な関係のセットは、各関係の主キーの指示とともに構築されます。 属性のリストがコンパイルされ、これらの属性は関係によって配布されます。 すべての関係がNBFIと維持されることが不可欠です。

    関係構造への移行(一連の関係の構築)は、次の規則に従って実行されます。

    1. バイナリ通信の程度が1:1で、両方のエンティティのメンバーシップクラスが必須の場合、必要な関係は1つだけです。 この関係の主キーは、これら2つのエンティティのいずれかのキーになります。 この場合、関係のインスタンス内の各キー値の単一の出現が保証されます。
    2. バイナリ接続の程度が1:1で、エンティティの1つのクラスがオプションである場合、2つの関係を構築する必要があり、各エンティティに対して1つの関係を選択する必要があります。 メンバーシップクラスがオプションであるエンティティキーは、必要なメンバーシップクラスを持つエンティティに割り当てられた関係に属性として追加されます。
    3. バイナリ通信の程度が1:1で、どのエンティティのメンバーシップクラスもオプションではない場合、3つのリレーションが使用されます-各エンティティに1つ-キーは対応するリレーションのプライマリとして機能し、もう1つは通信に使用されます。 通信に割り当てられた関係には、各エンティティから1つのエンティティキーがあります。
    4. バイナリ接続の次数が1:Mであり、M接続されたエンティティのメンバーシップクラスが必須である場合、エンティティキーが対応する関係のプライマリキーとして機能するという条件で、エンティティごとに1つの2つの関係を使用するだけで十分です。 単純に接続されたエンティティのキ​​ーは、M接続されたエンティティに割り当てられた関係に属性として追加する必要があります。
    5. バイナリ接続の次数が1:Mであり、M接続されたエンティティのメンバーシップクラスがオプションの場合、エンティティごとに1つ、通信用に3つの関係を使用する必要があります。 リンクには、その属性の中で、各エンティティからのエンティティキーが必要です。
    6. バイナリ通信の程度がM:Mに等しい場合、データを保存するには3つの関係が必要です。エンティティごとに1つ、通信に1つです。 本質の鍵はコミュニケーションに入ります。 エンティティの1つが縮退している場合、2つの関係があります(つまり、2つのテーブルで十分です)。
    7. 3者間通信の場合、4つの関係を使用する必要があります:エンティティごとに1つ、通信用に1つです。 接続によって生成される関係には、属性の中でも、各エンティティの本質のキーがあります。


    ルールを使用し、データをテーブルに縮小します。

    エンティティルール番号関係
    お客様
    ご注文
    4顧客(#顧客
    注文(#Order、#Customer
    従業員
    ご注文
    4従業員(#従業員
    注文(#Order、#Employee
    ご注文
    注文品
    4注文(#Order
    注文アイテム(#注文アイテム、#注文
    旅団
    注文品
    4旅団(#旅団
    注文アイテム(#要素、#旅団
    製品
    注文品
    4製品(#製品
    注文アイテム(#アイテム、#製品
    お客様
    ご注文
    6顧客(#顧客
    注文(#Order
    支払い(#Payment、#Customer、#Order
    旅団
    従業員
    5旅団(#旅団
    従業員(#従業員
    チームメンバー(#チームメンバー、#従業員、#チーム
    注文品
    運営
    5注文アイテム(#アイテム
    操作(#操作
    レコード操作(#レコード、#要素、#操作
    注文品
    素材
    5注文アイテム(#アイテム
    マテリアル(#Material
    消費(#レコード、#要素、#材料
    タブ。 1

    取得したリレーションに従って属性を配布すると、次のようになります(最初のフィールドのリストには主キーがあり、「#」でマークされた他は外部キーです)。

    旅団(#旅団、#准将、場所)
    オフィス(#ポジション、ポジション、給与)
    ご注文(#Order、#Customer、#Employee、Placement Date、RequiredDate、Execution Date、Description)
    顧客(#顧客、名前、名、姓、組織または部門、住所、電話番号、電子メールアドレス)
    録音(#レコード、#要素、#操作、#従業員、数量)
    お支払い(#Payment、#Customer、#Order、支払額、支払日、メモ)
    消費量(#Records、#RaxMat、#Element、Quantity)
    構成(#Item、#Order、#Product、#Gangs、Quantity)
    コレクション(#Sotr旅団、#旅団、#従業員)
    従業員(#従業員、パスポート番号、姓、名、愛称、#役職、住所、自宅の電話番号、職場の電話番号、生年月日、雇用日、契約終了日、写真、メモ)
    操作(#操作、説明、コスト、時間、機器、実行)
    素材(#RaskhMat、NaimRaskhMat、価格、密度、タイプ、構成)
    PRODUCT(#アイテム、ブランド、名前、アイテムの説明、タイプ、シリアル番号、在庫、価格)
    タブ。 2


それが私たちが大学でやることを教えられたものです。 誰かが興味を持つかもしれません。 「必要かどうか」については、あなたの意見を聞いています!

プログイット

Source: https://habr.com/ru/post/J50312/


All Articles