2016-10-17 10 views
1

SQLの多対多の関係に関して、私は簡単な質問があります。 理論的には、ERモデルの2つのエンティティの間にM:Nの関係がある場合、両方の複合プライマリキーを持つ交差/参照テーブルを含む2つの1:Nの関係に分割する必要があることを理解しています親テーブルしかし、ここで私の質問は、複合主キーに加えて、2つの親テーブルのいずれにもない複合テーブルに追加された他の余分な列がある可能性がありますか? (intersectionTableId、table1ID、table2IDを除く)4番目の列は全く新しいもので、2つの親表のいずれにもありません。私にお知らせください。SQL m:nの関係を持つクエリ

+0

どのようなDBMSが作成され、どのように作成されますか? –

+1

絶対に!そのようなテーブルのBELONGSに関するデータ。顧客/映画レンタルデータベースについて考えてみましょう。私は顧客がどんな映画を多くの映画を持っていたかをチェックアウトしたことを知りたいし、一度に1人の顧客しか映画をチェックアウトすることはできません。私は映画の歴史をチェックアウトし、それが返された時を知りたい。連想表は、CheckoutとCheckInの日付を持つことができます。これは私に顧客のチェックアウトの歴史と期間を教えてくれるかもしれません。おそらく映画の属と顧客の賃貸映画に基づいて、提案リストを作成することができます... – xQbert

答えて

0

はい、「関係」テーブルを明示的に(他のエンティティと同様に)モデリングすることで、これを行うことができます。

ここに、その質問に関する正確な記事があります。はい - 一言で

Create code first, many to many, with additional fields in association table

Entity Framework CodeFirst many to many relationship with additional information

+0

皆さんありがとうございます:)大変感謝しています。 – Vish

2

。 2つのエンティティ間の関係のプロパティを表すのが一般的な方法です。 N関係テーブル:人はあなたの古典的なMである複数のチームを、好きなこと

CREATE TABLE person (
    id INT PRIMARY KEY, 
    first_name VARCHAR(10), 
    last_name VARCHAR(10) 
); 

CREATE TABLE team (
    id INT PRIMARY KEY, 
    name VARCHAR(10) 
); 

:例えば

は、あなたが人々の詳細と、彼らが好きなスポーツチームを格納するデータベースを持って検討してください。しかし、あなたがチームを好きにしたときなど、このエンティティにいくつかの詳細を追加することもできます。

CREATE TABLE fandom (
    person_id INT NOT NULL REFERENCES person(id),  
    team_id INT NOT NULL REFERENCES team(id), 
    fandom_started DATE, 
    PRIMARY KEY (person_id, team_id) 
); 
関連する問題