レストランが時間帯や曜日に基づいて表示できるメニューを作成できるシステムを構築しようとしています。
たとえば、標準メニュー、ハッピーアワー メニュー、スペシャル メニューなど、すべてメニューごとに独自のアイテムがあり、アイテムごとに価格が設定されている場合があります。チーズピザは、金曜日の午前 10 時から午後 2 時までは 10 ドル、午後 3 時から午後 5 時までは 5.00 ドルです。
アイテムがさまざまな価格 (時間帯と曜日に基づく) を持つだけでなく、さまざまな「メニュー」に関連付けられる (それらを分類するため) ように、データベースを設計するための良い方法は何ですか?
私は現在、これを実際に許可していないシステムを使用しています (当時は時間ベースのメニューは必要なかったため)。
*価格、開始時間、終了時間の列を含む menu_items_times テーブルが必要ですか?*
会場テーブル- 個々のレストラン (primary_menu_id) はメニュー テーブルの menu_id に関連付けられています
+------------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------------+--------------+------+-----+---------+----------------+
| venue_id | bigint(20) | NO | PRI | None | auto_increment |
| name | varchar(256) | NO | | None | |
| primary_menu_id | bigint(20) | NO | | NULL | |
+------------------+--------------+------+-----+---------+----------------+
メニュー表各メニューとそれが属する会場
+----------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+----------+--------------+------+-----+---------+----------------+
| menu_id | bigint(20) | NO | PRI | None | auto_increment |
| venue_id | bigint(20) | NO | | None |
| name | varchar(256) | NO | | None | |
+----------+--------------+------+-----+---------+----------------+
menu_items テーブルメニューの個々のメニュー項目と、どのカテゴリ (つまり、「ドリンク」、「食品」、「スペシャル」カテゴリ) およびカテゴリを並べ替えるための「category_index」。
+---------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+---------------+--------------+------+-----+---------+----------------+
| menu_item_id | bigint(20) | NO | PRI | none | auto_increment |
| menu_id | bigint(20) | NO | | none | |
| name | varchar(256) | NO | | none | |
| price | float | NO | | none | |
| category | varchar(64) | NO | | none | |
| category_index| int(11) | NO | | none | |
+---------------+--------------+------+-----+---------+----------------+
menu_items_categories ビュー
+----------------+--------------+-----------+-------------+------+---------+
| Field | Type | Collation | Attributes | NULL | Extra |
+----------------+--------------+-----------+-------------+------+---------+
| menu_id | bigint(20) | | | No | |
| category | varchar(64) | | | No | |
| category_index | int(11) | | | No | |
+----------------+--------------+-----------+-------------+------+---------+