web-dev-qa-db-ja.com

場所の営業時間のデータベース

開店時間のデータベースを設計して、このソリューションを作成しました。

MySQLとなるデータベースの仕様は、場所には週に標準的な営業時間があり、クリスマスなどの特別な営業時間を持つことができるというものです。

したがって、エントリの営業時間を知りたい場合は、最初に「special_opening」で特定の日を検索し、結果が返されない場合は「opening」からデータをロードします。

これはデータベースを実現する正当な方法ですか?それを行うより良い方法はありますか?

2
Kingalione

日付範囲と競合するレコードを解決するための優先度コードを含む単一のテーブルにすべての営業時間を保持することで、設計を簡素化してより強力にすることができます。

次のようになります。

create table OPENING
( id INT
, entry_id INT
, from_date DATE
, to_date DATE
, priority INT
, weekday_id INT
, start TIME
, end TIME
, pause_start TIME
, pause_end TIME
, editor_id INT
, timestamp TIMESTAMP
)

モデルとこのモデルの違いは次のとおりです。

  • 現在のデータだけではなく、適用される日付範囲ごとに1セットのレコードを保持します。
  • 営業時間の日付範囲履歴を保持できます。これにより、事前にデータを設定しておくのに便利な将来の日付範囲にもアクセスできます。
  • 通常の営業時間と例外を1つのテーブルに保持するため、営業時間を取得するときに条件付きロジックを使用する必要はありません。
  • 例外にも日付範囲があり、それが当てはまる場合は、多くの場合1日の範囲です。
  • すべてのレコードには優先度レベルがあります。通常のレコードの優先度は低く、例外的なレコードの優先度は高くなります。読んでいるときは、優先度の降順で上位1件の注文を選択します。
4
Joel Brown