9

私は、何時間もの操作を使用し、ユーザーがそれで検索できるようにする必要があるアプリケーションを作成しようとしています(Yelpがこれをどのように行うかを考えてください)。

私はこれのための良いデザインが何であるかを議論しています。私が考えることができる唯一のことは、曜日と開店時間と閉店時間をリストする「Companies」テーブルへの外部キーを持つデータベーステーブルを持っていることです。

Tbl_Hours_Operation
- day_of_week
- open_time
- close_time
- company_id

うまくいき、より効率的な他のアプローチはありますか?

4

2 に答える 2

10

2つのテーブルがあります:

operation_hours(company_id、day_of_week、open_time、close_time)

operation_hours_special(company_id、date、open_time、close_time)

特別な時間を確認するには、2つのテーブルを結合する必要があります。

あなたの会社のいずれかが朝食、昼食、夕食、シエスタのために閉鎖されますか?もしそうなら、私は追加します:

operation_hours_closed(company_id、day_of_week、close_time、open_time)

さらに楽しいJOIN

于 2012-11-20T20:50:48.753 に答える
0

あなたのアプローチは健全に思えます。注意すべきいくつかの小さな点:

Company_Id と DayOfWeek_Id で (この順序で) このテーブルのインデックスを作成してください。また、会社が日中に閉まっている場合や夜間に営業している場合に備えて、(おそらく) 1 曜日に複数のエントリをサポートする必要があります。

CompanyDayOfWeek
----------------
Company_Id     INT/BIGINT    FK->Company table
DayOfWeek_Id   INT           (this can be a FK or just a hard coded list of IDs)
Open_Time      TIME          if your DB supports a dateless time data type
Close_Time     TIME
于 2013-01-03T18:23:35.557 に答える