Avatar billede Slettet bruger
16. december 2011 - 07:59 Der er 4 kommentarer og
1 løsning

Håndtering af åbningstider - tabelopbygning i mysql

Hej

Jeg har brug for lidt yderligere inspiration omkring håndtering af åbningstider i forhold til tabel-opbygning.

Jeg har en stribe butikker der alle har forskellige åbningstider.

Jeg havde forstillet mig at de skulle registrere deres generelle åbningstider, f.eks.

Mandag  09:00 - 17:00
Tirsdag 09:00 - 17:00
Onsdag  09:00 - 17:00
Torsdag 09:00 - 17:00
Fredag  09:00 - 18:00
Lørdag  10:00 - 13:00
Søndag  Lukket

Derudover skulle de så kunne registrere undtagelser, f.eks
23-12-2011 09:00 - 20:00
24-12-2011 Lukket

Nogle forslag til en tabelopbygning i mysql?
16. december 2011 - 08:35 #1
Siden der er en en-til-en relation mellem en butik og for eksempel dens mandags åbningstid vil jeg foreslå en tabel butik med butiks-id, de nødvendige kontaktoplysninger (adresse, telefon, ..) og derefter felterne mandagstart, mandagslut, tirsdagstart, tirsdagslut, o.s.v.

Men der er en en-til-mange relation mellem en butik og dens undtagelser.  Derfor vil jeg foreslå en særskilt tabel undtagelser med felter som id, butik, dato, bemærkning. Hvis der er undtagelser der ikke er knyttet til en bestemt dato, såsom 'sommeråbent fra 20.00-22.00 i juli og august' lades dato feltet tomt.

Så søger du efter $result = mysql_query("SELECT * FROM butik LEFT JOIN undtagelser ON butik.id = undtagelser.butik WHERE butik.id = $butik").
Avatar billede Slettet bruger
16. december 2011 - 09:07 #2
Jeg har alle oplysninger om butikkerne i én tabel.

Min første tanke var at lave en tabel med følgende felter:
shopid
weekday
open
close

Feltet weekday kan indeholde dagene: MON, TUE, WED, THU, FRI, SAT, SUN

De poster hvor der er angivet noget i weekday, vil open og close være klokkeslet, f.eks. 1200

Er feltet weekday tomt, vil open og close indeholde unix timestamps for undtagelserne.

På en eller anden måde synes jeg det virker forkert at have 2 forskellige formater i open/close, men det kan været det bare er mig?
19. december 2011 - 09:03 #3
For det første, jeg beklager den sene reaktion, jeg har været uden internet forbindelse et par dage.
Hvis jeg forstår dig rigtigt, så siger vi et langt stykke vej samme.  Du har (tror jeg) en tabel med alle generelle oplysninger om butikker, en række for hver butik og hvor hver butik har en id.  Så har du en tabel med åbningstider, hvor der er en en-til-mange relation mellem butikker og åbningstider.  Denne anden tabel med en-til-mange relation er du nødt til at have for undtagelserne hvis du skal kunne have mere end en undtagelse for en butik.  Da jeg startede med at besvare dit spørgsmål var jeg allerede, rutinemæssigt, begyndt at foreslå netop den tabel du beskriver.  Men eftersom en enkel butik (formentlig) kun har en mandags åbningstid og en mandags lukketid, så er der en en-til-en relation mellem butikken og mandags åbningstiden.  Og ligeledes med de andre ugedage åbningstider.  Derfor har du valget mellem at placere ugedags åbningstiderne i hovedtabellen eller i den anden tabel.  Så den løsning du beskriver er nok lige så god som den jeg foreslog.
Avatar billede Slettet bruger
19. december 2011 - 09:51 #4
Tak for din deltagelse i tråden. Altid rart med et andet blik på ens idéer.

Læg et svar og pointene er dine.
20. december 2011 - 22:41 #5
Så er jeg hjemme ved computeren igen.  Her er et svar fra mig.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester