ハングアウト Web サイト用の DB (MySQL) を作成したいのですが、最適な設計が見つかりません (私の最初の DB です)。主な問題は、クラブが曜日に応じて入場料または音楽スタイルを変更することです。そのため、これを解決する方法は今のところありません。ところで、MySQL を使用した DB 設計に関する適切なハンドブックをご存知ですか?
どうもありがとう!よろしく。
ハングアウト Web サイト用の DB (MySQL) を作成したいのですが、最適な設計が見つかりません (私の最初の DB です)。主な問題は、クラブが曜日に応じて入場料または音楽スタイルを変更することです。そのため、これを解決する方法は今のところありません。ところで、MySQL を使用した DB 設計に関する適切なハンドブックをご存知ですか?
どうもありがとう!よろしく。
データベース、外部キーなどについて必ず読む必要があります。これらは基本的なものであり、その知識がなければ何も得られません。
しかし、あなたが始めるために、ここにあなたが要求した仕事をする単純な構造があります. ここで詳細をほとんど説明しなかったので、正しく理解できたことを願っています。
テーブル:
1) CLUB - 静的な属性があります - ID、名前、住所、ウェブサイト、電話番号などのように頻繁に変更することはありません。
データ行の例:
ID name website phone
1 clubA www.aclub.com 565-554-666
2 clubB www.bclub.com 523-552-778
2) MUSIC - 音楽スタイル、属性の表: ID、style_name)
データ行の例:
ID style_name
1 jazz
2 metal
3 techno
3) CLUB_DETAIL - club テーブルと music テーブルを外部キー (クロステーブルとも呼ばれる) で接続し、両方のテーブルに属する情報を保持します。属性: ID、club_id、music_id、date、price
データ行の例:
ID club_ID music_ID day_of_week entrance_fee
1 1 1 Monday 10$
2 1 2 Tuesday 8$
3 2 3 Monday 6$
.. etc.
ID は各テーブルのプライマリ キーであり、レコードを一意に識別します。club_ID はテーブル CLUB の ID に対する外部キーです。
テーブル CLUB_DETAIL では、必要なすべての可能な組み合わせを使用できるため、CLUB テーブルで列を 7 倍に複製する必要はありません。
これは単なる例であり、実際のユースケースはおそらく異なるでしょうが、より具体的にするのに十分な情報を提供していません. day_of_week の代わりに date を使用します。これにより、スケジュールが週ごとに異なるローテーションに変更された場合に、より柔軟に対応できます。