2016-12-13 8 views
0

MySqlデータベースの多くのオブジェクトに多くを追加するが、多対多接続のどちらかの側に重複したエンティティを追加しない方が最適です。MySQL JDBC重複を追加しないで多数のオブジェクトを挿入する

たとえば、著者と書籍の間に多かれ少なかれ多くのつながりを持つ本のデータベースに本を追加したいとします。著者のテーブルに既に存在する場合は、既存の著者を追加するのではなく、著者のIDを見つけてその書籍に接続したいと思っています。これをJDBCで実行する最良の方法は何ですか?

以下は、この問題の詳細な説明です。私は3つのテーブルの本、著者と作家を持っています。以下の表は、これらの間のジョイントを表しています。

Book Title |  Book Author 
------------------------------------ 
Book 1  |  Book Author 1 
Book 2  |  Book Author 2 

"Author 2"というデータベースに既に存在する著者がいる別の書籍 "Book 3"を追加したいのですが。私は "著者2"をもう一度追加するのではなく、 "著者2"のIDを取得して、BookAuthorテーブルに使用します。

+1

3テーブル設定: 'Book'、' Author'、 'Book_Author'を使用し、後者は「link」テーブルを提供します。この設定では、複数の著者がいる書籍も処理します。 –

+0

小冊子「Book_Author」は、本が複数の著者を持つことができる場合にのみ必要です(OPの例は、単一著者の書籍の単純なケースと思われる)。 – CollinD

+0

申し訳ありません。関係自体は問題ではありません。問題は、すでに著者テーブルにある著者がいる書籍を追加しようとするときです。私は重複を追加したくない。私はその著者IDをBookAuthorテーブルに使用したいと思います。 – codeer

答えて

0

Thisは、最適な多対多の関係テーブルを記述する。

PRIMARY KEYは、(あなたの場合は書籍と著者の両方)をカバーするので、重複を防ぐことができます。

簡単にするために、単一著者の書籍を特別に扱うのではなく、すべての参照をテーブルに送信することもできます。

関連する問題