baut eine andere Tabelle, nennt es schedules
, Fügen Sie dem shops
Tabellenprimärschlüssel, einem Day of week
-Feld, time_open
, time_closed
einen Fremdschlüssel hinzu. Die Daten wie folgt aussehen sollte:
shop_id day_of_week time_open time_closed
1 1 09:00 12:00
1 1 16:00 19:00
1 2 09:00 12:00
1 2 16:00 19:00
1 3 09:00 12:00
1 3 16:00 19:00
1 6 10:00 14:00
2 1 09:00 12:00
2 1 13:00 18:00
Diese Ihnen die Möglichkeit geben, jede Art von Zeitplänen zu bauen, mit so viele Fenster wie Sie wollen, mit wie vielen Ausnahmen, die Sie benötigen. Es ist universal, nur darauf beschränkt, dass alle Wochen identisch sind. Keine Feiertage, keine Wochenpläne, die jemand benutzen könnte.
Edit:
Mit Julien Frage, über Stunden einer Nacht Unternehmen arbeitet, hat es zu meiner Aufmerksamkeit gekommen, dass die bisherige Lösung nicht die beste bu ist. Sie können nicht um 20:00 eine Leiste geöffnet haben, um 06:00 schließen, und vergleichen, wenn die aktuelle Zeit (02:45) innerhalb dieses Intervalls ist, weil es nicht sein wird. Deshalb ist es am bequemsten, nicht die Schließzeit, sondern die Gesamtarbeitszeit in der passenden Maßeinheit (zB Minuten) zu erfassen.
shop_id day_of_week time_open working_time
1 1 09:00 180
1 1 16:00 180
1 2 09:00 180
1 2 16:00 180
1 3 09:00 180
1 3 16:00 180
1 6 10:00 240
2 1 09:00 180
2 1 13:00 300
Dies ermöglicht es Ihnen, einen dritten Zeitplan für einen bestimmten Tag hinzuzufügen, wenn dies einen Verstoß gegen Ihre Regeln darstellt, müssen Sie das Hinzufügen neuer Zeitpläne genau kontrollieren, um dies zu überprüfen ... oder Sie können einen "" hinzufügen sched_num "-Spalte mit einer Prüfbedingung, dass es entweder eine 0 oder 1 und eine eindeutige Einschränkung für day_of_week und sched_num ist. –
das ist der bessere Weg, um Öffnungszeiten für Nacht-Business zu behandeln, wie eine Bar, geöffnet von 22.00 Uhr bis 04.00 Uhr. Zwei Einträge hinzufügen (Tag1: 22: 00-> 23:59 und Tag 2: 00: 00-> 04:00)? oder ein Eintrag (Tag1: 22: 00-> 04:00)? – Julien
Interessante Frage. In diesem Fall wäre es am sinnvollsten, diese Situation wieder herzustellen. Siehe bearbeitete Antwort. – AlexanderMP