2016-08-16 16 views
-2

私はデータベースを持っていますが、私は子供一人一人に別の本を追加する効率的な方法が必要だと感じています。たとえば、データベースに50人のクラブ員がいるかもしれません。各クラブは自分の本に収められ、シンプルにするために、各本にはクラブが完了しなければならない10のセクションがあります。私は10のセクションで各子供のためのテーブルを作ることを考えていたが、それは私のデータベースの50以上のテーブルで終わるだろう。私はまた、本と呼ばれるテーブルを作成し、そのテーブルに10のセクションが含まれていることを考えましたが、その問題はそれぞれの子供が8つの異なる書籍のいずれかになる可能性があります。だから、本と呼ばれる1つのテーブルはどちらもうまくいきません。私のデータベースを設定するのに最適な方法/適切な方法

誰でもデータベースにこれを設定する方法についての良い提案がありますか?私の最終的な目標は、各子供が利用可能な8冊の書籍の1つにリンクさせることです。次にデータベースは、各小児が特定の本のためにどのセクションに入っているかを追跡する。だから今日のクラブAは本1のセクション1と2を終えることができましたが、クラブBは本2のセクション1のみを完成させるかもしれません。私はデータベースからこの情報を引き出して各クラブがどこにいるのかを見たいと思います。 ..しかし...私はまず、データベースを正しく設定する必要があります。

書籍ごとに8つのテーブルを作成し、テーブルのデータをセクション1 ...セクション2 ...にする必要がありますか?または、1つの表を作成して8冊の本をリストし、セクション情報を持つ別の表にリンクする必要がありますか?それとももっと良い方法がありますか?あなたは、子供と親の間のN-Nの関係で終わるようにするには、各行のテーブルの子とテーブル親から中間テーブルのid_childたchild_parentとid_parentを追加することができます任意の助け![mydatabase

+0

このトピックについて[記事の束](http://code.tutsplus.com/articles/sql-for-beginners-part-3-database-relationships--net-8561)を読むことをお勧めしますあなたのサイトにとって他人が思うものの答えを得るだけでなく、プロセスやそれぞれが何を使うのかを学ぶことができます。異なるテーブル構造や関係についていくつかの研究を行い、どの名前が有用な構造として優れているのかを調べ、それらの名前を調べて、それらを実装し維持する方法のガイドを入手してください。 – Martin

+0

Clubber:[ナイトクラブを頻繁に訪れる](http:// www .thefreedictionary.com/clubber)。ブックナイトクラブ。 「バンギン」。文字通り。 – Martin

答えて

1

書籍用のテーブルとセクション用のテーブルが必要です。セクションにはbook_idが含まれるため、そのブックの一部を知ることができます。次に、あなたの子供たちをセクションにリンクさせ、section_idがどのセクションにあるかを示します。書籍に参加するクエリは、その書籍の一部であることを示します。

子どもが複数の書籍を同時に読むことができる場合は、子供のIDとセクションIDの両方を含む2つのテーブルの間に論理的に存在する中間テーブルが必要になるため、複数の書籍を同じ子。

+0

これはまさに私が求めていたものです!ありがとうございました!この愚かな質問をする前に、私は一週間、多くのフォーラムや画像をオンラインで検索しました。私はあまりにも子供たちを本に結びつけるというアイデアに縛られていましたが、それらをセクションにリンクさせることは完全に働いています!それは私が走っていた他の問題を解決することさえあります!ありがとうございました! –

+0

問題ありません。これはリレーショナルデータベースの "標準化"の原則に基づくかなり標準的な設計です - 将来このようなことに悩まされた場合には勉強するのに良い話題かもしれません:-) – ADyson

0

ため

感謝。

+0

子供には複数の親(!)が付いていることがよくありますが、これは有益な提案ですが、OPは子供がどの書籍を読んでいるか、どのセクションを読んでいるかを尋ねていました。 – ADyson

関連する問題