costruire un altro tavolo, lo chiamano schedules
, aggiungere una chiave esterna alla chiave primaria del tavolo shops
, un campo Day of week
, time_open
, time_closed
. I dati dovrebbero essere simile a questa:
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
Questo vi darà l'opportunità di costruire qualsiasi tipo di programmi, con il maggior numero di finestre che si desidera, con il numero di eccezioni che vi serve. È universale, limitato solo al fatto che si aspetta che tutte le settimane siano identiche. Nessuna festività considerata, né pianificazioni dispari/pari della settimana che qualcuno potrebbe usare.
Edit:
Con domanda di Julien, sugli orari di un'azienda che lavora di notte, si è giunti alla mia attenzione che la soluzione precedente non è la migliore bu lontano. Non puoi aprire un bar alle 20:00, chiudere alle 06:00 e confrontare se l'ora corrente (02:45) si trova all'interno di questo intervallo, perché non lo sarà. Ecco perché sarebbe più conveniente registrare non il tempo di chiusura, ma il tempo totale di lavoro, nella comoda unità di misura (ad esempio minuti).
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
questo ti permetterà di aggiungere un terzo programma per un dato giorno, se questa è una violazione delle tue regole, dovrai controllare attentamente l'aggiunta di nuovi programmi per verificarlo ... o potresti aggiungere un " sched_num "con un vincolo check che può essere 0 o 1 e un vincolo univoco su day_of_week e sched_num. –
che è il modo migliore per gestire gli orari di apertura di un locale notturno, come un bar, aperto dalle 22:00 alle 04:00. Aggiungi due voci (giorno1: 22: 00-> 23:59 e giorno2: 00: 00-> 04:00)? o una voce (giorno 1: 22: 00-> 04:00)? – Julien
Interessante domanda. In questo caso sarebbe più ragionevole ri-fare questa situazione. Vedi la risposta modificata. – AlexanderMP