2012-04-13 20 views
0

私は何千もの本(タイトル、年、作家など)を持つdbテーブルを持っています。ユーザーは、読んだ本をリストに追加することができます。私は、彼らがdbで利用できない場合、彼ら自身の本を追加する能力を与えたいと思っており、そのユーザーだけが利用できるようになります。新しいテーブルを作成するか、 "is_custom"カラムと "user_id"カラムを持つメインテーブルにブックを追加するだけですか? 2番目の方法は、私が管理する方がはるかに簡単です(例えば、検索の面で2つのテーブルに参加することは馬鹿だと思われます)。しかし、私の両書籍(書籍とユーザーの書籍)はかなり大きくなるでしょう。1つまたは2つのDBテーブルを作成する必要がありますか?

ありがとうございました!

答えて

0

理論的には、1つのエンティティに対して1つのテーブルを使用することをお勧めします。したがって、バリアント1 'ユーザー' - リンクテーブルを介した別のテーブル(多対多)。あなた自身の書籍は、あらかじめ定義された定数ユーザー(より良い、またはユーザーへのリンクなし)に所有されています。

OOPデータベースでは、親テーブルと2つの子を使用できます。しかし、最初の見通しでは、あなたの状況はそれを要求するものではありません。

0

私は単純性と保守性を優先して設計し、問題があることがわかったらパフォーマンスの向上を紹介します。

"かなり大きい"とは人によって異なることを意味しますが、その問題を解決する必要がある場合は、2つのテーブルにまたがってデータを分割するか、おそらくさらに悪い「booksBook」テーブルを管理するための「userBooks」テーブルとは異なるソリューションです。

関連する問題