FAQ |
Kalender |
2009-02-21, 13:23 | #11 | ||
|
|||
Guest
|
Det finns ju ett bra bokningssytem som heter phpScheduleIt. Kolla in hur det är upplagt så kanske du får lite idéer http://phpscheduleit.sourceforge.net/
|
||
Svara med citat |
2009-02-21, 13:57 | #12 | |||
|
||||
Mycket flitig postare
|
Citat:
DELETE FROM BokningsDatum WHERE bokingsid=x; INSERT det nya (BokningsDatum bör förstås ha bokningsid och inte kund_id som jag skrev ovan kund_id bör istället finnas i Bokningar) Båda modellerna har olika fördelar och nackdelar - exempelvis att se hur många x som är bokade ett visst datum blir svårare med TILL-FRÅN. Som du ser så av Roberts förslag så introducerar tid ett extra lager av komplexitet som du kan slippa med MySQL. Gäller det exempelvis hotellrum så kommer tid sannolikt aldrig bli särskilt viktigt - om det däremot gäller konferensrum (inte helt osannolikt i samma bokningssystem) så kan tid vara avgörande. Superviktigt är förstås att ha en tydlig kravspecifikation (i synnerhet om du inte kommer underhålla systemet senare) så att inte kunden kommer i efterhand och säger att det vore bra med tid också. |
|||
Svara med citat |
2009-02-21, 15:02 | #13 | ||
|
|||
Har WN som tidsfördriv
|
Jag förstår inte vad tid skulle orsaka för problem alls.
Om du inte vill använda datum kan du använda timestamp, eller TIME eller bara DATE eller DATETIME - Det finns ju flera typer som skulle kunna användas här. Du kan ju även använda DATETIME men skita i time, om du inte använder det. Stoppar du in ett datum i DATETIME så blir ju time 00:00:00 Om det är svårt att göra från-till så kan man inte tillräckligt mycket om SQL och får ju då tillfälle att lära sig något nytt :-) Vill man inte lära sig något nytt ska man nog inte programmera ett bokningssystem alls. |
||
Svara med citat |
2009-02-21, 18:28 | #14 | |||
|
||||
Mycket flitig postare
|
Citat:
Dessutom så gäller det att tänka igenom det hela ordentligt: bokar man en dag från 2009-11-11 till 2009-11-11 så är det solklart att det gäller en dag - om man däremot bokar från 2009-11-11 00:00:00 till 2009-11-11 00:00:00 så har man inte bokat en enda sekund. Det ger högre komplexitet och det finns ingen anledning att lägga till onödig data i en databas bara för att det går. Behövs tid så tar man med det - behövs det inte så tar man inte med det. De sämsta alternativet ta med saker i databasen och sedan "skita i" vad det innebär. Jag förstår inte heller riktigt poängen med att extra komplicera saker och ting när det inte är nödvändigt. Att bygga upp ett bokningssystem kan vara komplicerat nog för den utan erfarenhet. Missförstå mig inte - det är alltid bra att lära sig något nytt men man bör fokusera på det man behöver och vill åstadkomma. |
|||
Svara med citat |
2009-02-22, 19:22 | #15 | |||
|
||||
Klarade millennium-buggen
|
Mmm jag känner bara att lagra data dag för dag som enskilda rader inte är riktigt normaliserat, och det blir mycket jobb OM man vill utöka systemet att inkludera tid också. Även om det är helt solklart ifrån första början att tex systemet gäller rumsbokningar på ett hotell så kan man ge sig fan på att man senare ska kunna boka konferensrum samt projektor i samma system och då kommer tidsenheten som ett brev på posten. Jag tycker personligen inte ens att det är "att ta höjd" om man inför en tidsstämpel, utan det är mer sunt förnuft bara. Behöver man inte tidsstämpeln ifrån dag 1 så hårdsätter man dem till "00:00:00" resp "23:59:59".
|
|||
Svara med citat |
2009-02-22, 20:50 | #16 | ||
|
|||
Har WN som tidsfördriv
|
Citat:
Om jag gör en tabell för persondata så lägger jag automatiskt med ett fält för personnummer, även om jag inte behöver det, då jag vet att jag garanterat kommer komma på att jag behöver det i framtiden. Precis som jag alltid skapar fält för IP adress och regdate även om jag inte behöver dom. |
||
Svara med citat |
2009-02-22, 22:01 | #17 | |||
|
||||
Mycket flitig postare
|
Ok tack för alla svar. Jag lutar nog åt ett från-till system med datetime för jag kommer säkert att använda systemet i andra tillämpningar där timbokning är önskvärt. Frågan är då om att köra från och till på samma rad eller att ha dem på varsin rad, vad är "mest normaliserat"?
Kul att det finns så mycket kunniga människor här, och som ställer upp och hjälper! Det är ovärderligt. Hoppas kunna åtgälda tjänsten så småningom. |
|||
Svara med citat |
2009-02-22, 22:25 | #18 | ||
|
|||
Nykomling
|
Jag tycker tvärtemot många andra här inte att du ska fundera så mycket på vad du "kanske behöver i framtiden". Fokusera istället på vad du behöver nu. Annars kommer du att trassla in dig i något du kanske ändå aldrig använder och då förlorar du dyrbar tid i detta nu.
Därmed inte sagt att du inte ska bygga ett system som är lätt att utöka i framtiden. Det bästa sättet att göra det är att normalisera databasen så mycket det går. Först och främst lär du i vilket fall som helst besluta vad det egentligen är som ska bokas. Det är nämligen en avgörande skillnad på t ex hotellbokning och konferensrumsbokning. Hotellbokning är från dag till dag. Eller timme till timme på Arlanda. Konferensbokning däremot är något helt annat. Det är också timme till timme, men ofta (iaf på större företag) vill man boka återkommande möten i samma konferensrum. T ex kl 09:00 till 09:15 mån-fre, tills vidare, för det dagliga SCRUM-mötet. I det senare fallet behöver det nog tänkas till ett snäpp extra för att få det bra enligt mig. |
||
Svara med citat |
2009-02-23, 00:03 | #19 | |||
|
||||
Mycket flitig postare
|
Citat:
En tredje lösning är förstås att boka schemablock (som är definierade i en annan tabell), t.ex. block 1 från 9.15 till 10.00 som kan vara praktiskt för ett begränsat antal konferensrum. Citat:
Dessutom är det inte ovanlig att det tar sig en annan utveckling en man tänkt sig - kanske är det inte tid man måste förbereda sig för utan förändrad moms eller paketpriser - ofta tar det sig en helt annan oväntad vändning. Planera inte för vad du tror utan vad du fått i uppdrag i din produktspec. Jag skulle använda DATE eftersom det är det som är mest normaliserat och om konferensrum tillkommer lägga dessa i en separat tabell "KonferensBokningar" (detta fungerar dessutom utmärkt i skriptimplementeringen med en abstrakt klass som antingen tar hand om konferens- eller rumsbokningar). Citat:
Har du aldrig hört talas om ALTER TABLE ADD COLUMN?? (Det är mycket enkelt att se till att en applikation inte påverkas av att nya fält tillkommer vilket man alltid bör se till.) mephisto73: som du ser så finns det lite olika åsikter och olika möjligheter - det beror väldigt mycket på vad som ska bokas som synes - och även då finns det olika lösningar som är kan vara bra i vissa sammanhang. Tänk över vad det är du behöver och se framförallt till att ha en klar kravspec. |
|||
Svara med citat |
Svara |
|
|