イベント(コンサート、劇場、映画館など)の予約サイトを作りたい
venues
テーブル:
-ID
-name
-address
stages
テーブル:
-ID
-venue_id
-title
-seats
-seats
はjsonで、座席の行と列が含まれています
次に、各シートの価格とevent_idを設定するshowtimes
テーブルが必要です。
showtime
テーブルを作成する最適な方法があるかどうか知りたいですか?新しいデータベースを設計するときは、それがどのように使用されるかを事前に知っておくことが重要です。もちろん、プロトタイピングやビジネスニーズの変化などにより、データベースがどのように使用されるかを正確に把握しておくことは困難です。
トランザクション処理システム用のリレーショナルデータベースを設計するための良い目安は、[システムが追跡する具体的なものはそれぞれ独自のテーブルを取得するであると想定することです。
状況に応じて次のERDを検討してください。
あなたの場合、VENUE
sがあり、それぞれに1つ以上のSTAGE
sがあります。各ステージには多数のSEAT
sがあります。ただし、シートのPRICE
sを追跡する必要があるため、価格設定データを維持するために、シートはSECTION
sに配置されています。価格は、個々の座席レベルではなくセクションレベルで設定されます。曜日や時間帯によって価格が異なる場合があるため(たとえば、平日のマチネーは土曜日の夜よりも安い)、価格はショーの時間(EVENT)にも依存します。
複数の上映時間がありますが、複数の上映時間があるイベントには多くの共通点があるため、EVENT
テーブルと子SHOW
テーブルが必要です。これにより、表示とイベント(表示時間)の情報を第3正規形(3NF)に保つことができます。これは、常にトランザクションシステムデータベースから始めるのに適した場所です。
実際に各シートに誰がいるかを追跡したい場合、TICKET
sとCUSTOMER
sもデータベースに含める必要があります。
座席を行または列として追跡する方法に関する特定の質問に対処するには、座席を行として追跡することを強くお勧めします。 MySQLのようなリレーショナルデータベース管理システムは、データの行を簡単に処理できるように構築されています。座席を列として扱う場合は、ステージごとに座席が異なるため、ステージごとに異なる座席テーブルが必要になる可能性があります。そのため、クエリが非常に扱いにくく複雑になります。データにリレーショナルデータベースを使用する場合は、リレーショナルデータベースを使用してthingsを行に入れ、facts列の中のものについて。あなたのコードはより単純になり、あなたの人生はより良くなるでしょう。