28. april 2010 - 21:49Der er
7 kommentarer og 1 løsning
Åbningstider opstilling i database? Lige og ulige uger
Hej allesammen,
Jeg er ved at tilknytte åbningstider til mine medlemmer. De skal alle sammen kunne vælge mandag-søndag for både lige og ulige uger.
Jeg har fundet 2 løsninger at gøre det på, men synes begge 2 er meget besværlige.
Løsning 1: Når en bruger opretter sig så tilføjer den en række i en tabel som indeholder felter som: - id - member_id - monday_open - monday_close - tuesday_open - tuesday_close
Løsning 2. Når en bruger opretter sig bliver der ikke lagt noget i databasen, men går han ind og retter sine åbningstider, f.eks. kun mandag i lige uger så smider den følgende ind: - id - member_id - day (f.eks. mandag) - open - close - weeks (lige eller ulige) og dette indsætter den så når brugeren retter i sine åbningstider, så der kun ligger det data som brugeren skriver ind. Hvis han nu f.eks. kun har åbent mandag og onsdag så slipper den for en masse tomme felter.
Jeg synes dog at begge løsninger virker utrolig uoverskuelige. Er der nogen der har erfaring med at bygge det på en mere solid og let måde som også gør det mere overskueligt at bygge og rode ved?
Sådan sikrer din virksomhed kontrollen over data, arkitektur, processer og AI i en stadig mere omskiftelig verden.
Slettet bruger
28. april 2010 - 22:42#1
Nu skriver du ikke hvad det er for nogen medlemmer og hvad de åbner og lukker... - eller om åbningstiderne har nogen konsekvenser for "systemet" (booking/reservation..?).
Men generelt: Den slags information, hvis den "bare" skal være menneske-læsbar, er det lettere at overlade helt til "leverandørene". De har sikkert allerede en formulering som de har filet på i årevis : )
Giv dem ét tekstarea, så kan de bare slå sig løs. - og du slipper for at bekymre dig om undtagelser og obskure helligdage.
Det skal være helt og aldeledes simpelt. De kan kun vælge dage i lige uger og ulige uger. Ikke noget med helligdage, eller booking, det er blot generelt for hele året.
Jeg tænkte også bare på simple forms, men det skal også være sådan at man kan se hvem der har åbent lige nu, så på en eller anden måde skal det jo struktureres ordentligt. Hvilken løsning vil du foreslå?
Synes godt om
Slettet bruger
29. april 2010 - 09:24#3
Ja, så har "vi" problemet : )
Jeg ville stille en enkel tabel på deres "stamdata side":
Evt. med dropdowns (hver halve time fra 05:00 - 22:30) til sikring af valide data i første forsøg... Med default values indsat ved oprettelsen: 9:00 - 17:00 f.eks.
Evt. to af disse "blokke" ved siden af hinanden, hvis det er nødvendigt at skelne mellem lige og ulige uger.. (hvor gør man det ?)
MEN du skal nok være forberedt på tæsk, hvis ikke de kan få lov at registrere undtagelser... Eller at de vil ændre disse data hele tiden = uheld, irritation, supportbøvl (og "kunder" som får forkert besked!)
I det mindste bør de kunne registrere hele lukke-dage: Ferie, helligdage, kurser...
Jeg ville tilføje en helt ny data-tabel kun til disse lukkedage. - og så tilføje et opslag i denne (id+dato) når du skal afgøre om der er åbent idag.
Jeg er næsten helt enig :) Se bort fra helligdagene, det kan de skrive i deres profil, det er blot generelle åbningstider.
Ville det ikke være smartere at adskille det fra deres stamdata fremfor at smide 14 rækker oveni de eksisterende 20 rækker jeg har?
Hvis nu de kun arbejder Mandag og onsdag alle lige uger, og holder lukket alle andre dage, så vil der jo være ekstremt mange tomme felter som blot ligger og fylder? Og med et par tusinde medlemmer skal databasen nok brokke sig på et tidspunkt.
Er det så ikke bedre at ligge det i en mellemtabel som laver REPLACE INTO når de retter deres åbningstider? På den måde vil den jo kun gemme de data de egentlig har og skal vise til besøgende. Så opretter de en bruger, men egentlig ikke er interesserede i at udfylde åbningstider så ligger der ikke en masse tomme felter og fylder? Eller? :)
id int(10) unsigned NOT NULL AUTO_INCREMENT, user int(10) unsigned NOT NULL ugedag int(1) unsigned NOT NULL lige int(1) unsigned NOT NULL DEFAULT '0' start time NOT NULL DEFAULT '00:00:00' slut time NOT NULL DEFAULT '00:00:00'
hvor feltet "user" jo så referer til din brugertabel Feltet lige afgør om det er lige eller ulige uger.
Ja det var det jeg tænkte på, nemlig at lave en mellemtabel, så den kun indeholder de data som brugeren egentlig skal fremvise, og ikke indeholder masser af tomme felter.
Jeg går i krig med det - puha - smid venligst svar for bidraget til af få min hjerne op og koge :o)
Hvis du får mange rækker, skal du nok ha' index på user, ugedag og lige
Synes godt om
Ny brugerNybegynder
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.