Vinnaren i pepparkakshustävlingen!
2012-02-22, 14:20
  #1
Medlem
Fris avatar
Istället för att uppfinna hjulet igen, undrar jag vad det finns för best practice när det gäller databashanteringen av bokningar. Platser och personer bokas ihop med varandra, så det blir ju tre tabeller.

Min första tanke var det uppenbara:
- En plats vid en tidpunkt i en bokning med flera personer.

Men det kanske ska användas för distanskontakter också, så att olika personer är på olika platser under samma möte:
- Flera platser vid en tidpunkt i en bokning med flera personer.

Fast då är ju plats och person en egen relation, så en mellantabell ska man väl ha:
- Flera(en person vid en plats) vid en tidpunkt i en bokning.

Tabeller:
- Personer
- Platser
- Person vid Plats-kombination (va heter det nu igen på databasiska?)
- Bokningar

Fan att man kan röra till nånting så simpelt! Men det är väl bäst att tänka efter före. Och jag har en känsla av att detta har tänkts igenom av andra många gånger förut.
Citera
2012-02-22, 17:44
  #2
Medlem
kelebs avatar
Frågan kanske passar bättre i Databasforumet (https://www.flashback.org/f207). Utan allt för mycket kunskap om databaser skulle min första lösning på problemet vara att ha en tabell för Person och all information du måste ha om denna. En tabell för en föreställning/avgång/flygning/möte (vad det nu är du ska boka) för information om denna (tid/bolag/film/pjäs/plats) och en för relationen mellan dem innehållande en kolumn för föreställningen och en kolumn för varje brukningsbar plats. Ytterligare en tabell om du vill hålla information om när själva bokningen las.

Skulle säga att nackdelen med ovanstående helt klart är att det behövs en ny tabell per "plats" för att få rätt antal kolumner.
Citera
2012-02-22, 19:40
  #3
Moderator
Protons avatar
Java -> Databaser /Mod
Citera
2012-02-23, 17:20
  #4
Medlem
Det här är på intet sätt någon lösning men hur skulle det se ut om du hade bara tre tabeller (person, bokning, rum) och där bokningen kan innehålla fler än en person och fler än ett rum?
Citera
2012-02-23, 19:23
  #5
Medlem
qrizzes avatar
Om man har två olika databaser kan man alltid använda SQL INNER JOIN
http://w3schools.com/sql/sql_join_inner.asp
Citera
2012-02-29, 13:28
  #6
Medlem
Fris avatar
Jag sköt frågan åt sidan, så tråden föll i glömska ett tag. (Och hamnade först i fel forum).

Jag försöker tänka mig ett alternativ till bokningstabellen. Jag är faktiskt inte intresserad av själva mötena, utan av var personer individuellt har varit och var de har bokat in att de ska vara i framtiden.

Och tider är ju speciella på så sätt att de inte är återkommande. En person eller en plats har ju liksom fasta existenser och samma person och samma plats (resurs) återkommer i olika sammanhang. Men 2012 1/3 kl 13:00 kommer och går en gång för alla. En tidpunkt är inget mer än ett id.

Därför skulle man väl kunna ha en "timeline", en kalender, där plats och person förenas med start- och sluttid. Kolumner: Starttid, Sluttid, Person-id, Plats-id. Om två personer har möte, så blir det två records på timeline. Själva mötet/bokningen har ingen egen id. Men man skulle ju kunna lägga till kolumner för eventuella egenskaper hos "bokningen", t.ex. kostnader eller ett memo i klartext. De måste då göras per person, vilket ju kan vara nödvändigt ändå eftersom kostnader och memo kan variera individuellt.

En person ska kunna aktivera sin GPS och på så sätt löpande registrera sina platser, t.ex. under en biltur. Timeline kommer då att fyllas i med punktvisa positioner (utan sluttider).

Jag vill alltså inte göra en traditionell bokningsapplikation, när jag tänker efter. Men det vore ju smidigt om min "positionerings"-databas automatiskt kunde hämta information från användarens traditionella kalenderbokningssystem. Så man får väl ta en titt på hur de ser ut.
__________________
Senast redigerad av Fri 2012-02-29 kl. 13:32.
Citera

Stöd Flashback

Flashback finansieras genom donationer från våra medlemmar och besökare. Det är med hjälp av dig vi kan fortsätta erbjuda en fri samhällsdebatt. Tack för ditt stöd!

Stöd Flashback