2016-07-17 51 views
0

私はBookという名前のテーブルとAuthorというテーブルを持っています。著者と書籍をリンクするには、AuthorOfBookという別のテーブルを作成しました。ここで、Priorityは整数値であり、正しい順序(1,2,3、...)で各書籍の著者を取得するのに役立ちます。書籍の著者をデータベースに保存する最良の方法は何ですか?

Before

それは良い解決策か?最初は、文字列全体よりも多くの数値を格納することはスペースを節約するのに役立つだろうと考えましたが、次にブックの表紙画像でバイナリフィールドを追加しました。 AuthorOfBookテーブルを削除し、外部キーBookIdAuthorテーブルに追加する必要がありますか?私がそれをすると、私のクエリはよりシンプルに見え、私は非常に多くのテーブルを必要としませんが、著者を管理することは難しくなります。私Priority列に関する

After

そして、何?そのためのコーディング標準はありますか?

+0

最初の解決策は正しいです。それで。 – Renzo

+0

2番目の解決策は、その本が確実に1人の作者しか持てない場合にのみ使用できます。しかし、ブックテーブルに著者のFKを追加してください – Fabio

+0

AuthorOfBookテーブルは、「複数の著者が本を書くことができる」ケースのデザインサポートを追加するものです。それを落とすと、多対多の関係が失われます。 – x82

答えて

1

私はあなたが優先権を必要とする場合は、最初のオプションは間違いなく最高で最も正しいものだと思います。優先順位は関係者の特性であり、著者ではないので、著者には提示すべきではありません。著者が1冊の本と5冊の書籍に優先権を持っている場合はどうなりますか? :)

+0

2番目の方法を使用した場合、同じ著者名を持つ複数のレコードが作成者テーブルに存在する可能性があります。 –

関連する問題