2

私は必ずしもMySQLまたはPHPコードを探しているわけではありません。むしろ、私はすべてを設定する方法の概念を取得しようとしています。

家族が所有するすべての本のMySQLを使用して(そしてPHPを使用してデータベースを更新して)データベースを作成したいと思います。家族の一人一人に異なる「本棚」を設置して、誰が特定の本を持っているかを確認したいと思います。

私が最初に考えたのは、すべてのタイトル、著者などのテーブルを用意し、ユーザーIDのフィールドを作成して誰が本を持っているかを示すことでした。ただし、私はハンガーゲームのコピーを持っている可能性があり、祖母はハンガーゲームのコピーを持っている可能性があります。両方の本棚に見せたいです。私のアイデアが機能する唯一の方法は、重複する本がない場合です。

次のアイデアは、ユーザーごとに異なるテーブルを使用し、ユーザーが所有する本ごとに本IDを含むフィールドを作成することでした。これは小規模では機能すると思いますが、効率的な設計ではないようです。安定したウェブサイトができたら、町のみんな(何千人)がデータベースを公開する予定なので、まずは正しいデザインから始めたいと思います。

これはどのように設計する必要がありますか?

4

5 に答える 5

3
BOOK
--------
book_id
title
other_book_related_info

PERSON
-------
person_id
name
other_person_info

BOOK_PERSON
-------------
book_id
person_id
possibly-dates-when-this-person-owned-this-book
于 2012-11-27T21:08:27.370 に答える
1

これが私が考えることができる1つの簡単な解決策です:

ブックテーブル:すべてのユニークな本のリスト

ユーザーブック:ユーザーIDとブックIDが含まれます。複数のユーザーが同じタイトルを所有できます。

ユーザー:ユーザーのリスト。

于 2012-11-27T21:07:34.837 に答える
1

これはかなり基本的なことです。所有者、本、著者は自明でなければなりません。必要なテーブルにフィールドを追加します。本棚とbook_authorsはどちらも相互参照テーブルであるため、各本には複数の所有者を含めることができ、各本には複数の著者を含めることができます。

**owner:**
owner_id
owner_name
...

**book:**
book_id
book_name
...

**author:**
author_id
author_name
...

**bookshelf:**
owner_id
book_id

**book_authors:**
book_id
author_id
于 2012-11-27T21:10:39.343 に答える
1

人々は間違いなく借りているので、あなたは本の所有権と現在の所有権を区別したいかもしれません。したがって、BOOK(DVDなどに拡張する場合はITEMと呼ぶのが最適です)とPERSONのテーブル、および所有権テーブルBOOK / MEDIA_OWNERには、ITEM_LOANテーブルが付随していると便利です。

アイテムのセットをグループ化して、本の複数のボリューム、またはショーシーズンのディスクを個別に識別できるようにすることもできます。本(や映画など)も連載されているので、それをどう表現するかも考えてみてください。

ちなみに、作品のエディションが印刷の実行間で20%以上変化する場合、それは新しい印象であるというのが一般的に受け入れられているルールですが、常に新しいISBNが付与されるわけではありません。出版社によって異なります。また、本の階層はWork-<Edition-<Impressionに基づいており、これらの人々は本に関連するデータ構造の優れた情報源になります。

于 2012-11-27T23:04:50.660 に答える
0

別の解決策は次のとおりです。

**** BOOK ***
book_id
book_title
book_desc
book_bought

*** USERS ***
user_id, 
name,
dateOfBirth

** Copies **
copy_id (PK)
user_id (FK)
book_id (FK)
NoOfCopies
于 2012-11-27T21:12:31.980 に答える