2017-02-01 17 views
1

データベース内のnからmのリレーションシップについて言及するときは、多くの場合、交差テーブルが言及されます。 など。著者や書籍があり、著者は多くの書籍との関係を持ち、その逆もあります。SQL:1つのテーブル内のリレーションを持つデータベース内のnとmの関係

しかし、私はどのように関係をモデル化することができますか?

など。 - 著者Aは書籍1と書籍2を、著者Aは著者Bの友人です。 - 書籍1は書籍2と同じジャンルに関連しています。

次に複数の交差テーブルがありますか? など。著者 - ブック関係テーブル、著者 - 著者 "友人" - 関係テーブルとブックブック "ジャンル"関係?

私は、データベースやSQLに関する初心者です... はい、これはかなり標準的である アン

+0

Table1:著者、Table2:ブックとテーブル3:Author_Book_Mapping –

+0

著者 - 著者マッピングとブックブックマッピングについてはどうですか? –

+0

著者と著者との関係は書籍のみですか?または著者を別の著者に直接リンクさせたいのですか? –

答えて

0

単純な1:nリレーションシップを作成するには、関連するレコードを指定するのにFOREIGN KEYカラムを1つだけ設定すれば十分です。

m:nリレーションシップをモデル化する場合や、1:nリレーションシップに追加情報を追加する必要がある場合は、マッピングテーブルが必要です。

  • マッピングテーブル1:nの関係:書籍に現在のリーダーが1つしかない場合を想像してみてください。 BookテーブルにFK CurrentReaderIDを使用すると、FK値を変更すると以前の読者を見つけることができなくなります。
  • m:n関係と
  • マッピングテーブル:(...、validTo、CREATEDBY)独自の具体的な詳細データを独自にオブジェクトとして関係を考える

とはい:うまく設計されたデータベースでは、 多くのテーブルの異なる関係/マッピングがあります。

0

、あなたの助けをいただき、ありがとうございます。書籍が複数のジャンルを持つことができる場合は、一方のジャンルIDともう一方の書籍IDを含むブックジャンルテーブルが完全に適切です。交差テーブルが著者テーブルに2回(著者 - 友人関係の各著者ごとに1回ずつ)参加するため、著者 - 友人関係は少し面倒ですが、本質的に同じです。

あなたが特定したように、これはn:mベースで書籍を著者にリンクさせるBook-Authorテーブルと同じです。

学生と教師のコースの例は類似しており、しばしばn:mの説明の一部です。

関連する問題