Ik heb een mooi opdracht gekregen om als bijbaantje te doen. Het betreft een plannings en reserverings systeem voor kamers voor buitenlandse studenten.
Ik heb al een redelijk uitgewerkt ontwerp, echter wilde ik jullie mening even hebben over mijn opzet, omdat ik nog nooit zo'n groot iets heb gemaakt voor iemand anders. Want dit is wel iets anders als een website voor jezelf.
----------
Opzet:
We hebben een clienten DB met daarin de standaard data (naam,adres enz) en belangrijkste hierin is: "gewenste datum van een kamer" en "kamer nodig tot".
Daarnaast hebben we een accomodatie DB met daarin de data voor een accomodatie (een kamer zeg maar). In deze DB zit een bool "beschikbaar" verder niet zoveel bijzonders.
Dit is allemaal nog redelijk standaard.
Nu moeten we dus een client gaan koppelen aan een accomodatie, daarvoor moet er een aanbieding gedaan worden aan de client.
Dit doen we door een selectie te maken uit de clienten DB (bv op "datum kamer nodig" en prioriteit). Deze lijst zetten we links op het scherm.
Daarna gaan we een selectie maken uit de accomodaties welke beschikbaar zijn (adhv reservering db zie verderop).
Deze selectie komt rechts op scherm. Nu moet er door de gebruiker een match gemaakt worden. Dus client_id=4 en accomodatie_id=3 selecteren en op "GO" drukken.
Deze aanbieding wordt in de aanbiedings db gezet met daarin:
#aanbieding_id ; client_id ; accomodatie_id ; datum_aanbieding
hierna wordt de accomodatie op niet beschikbaar gezet (er kunnen geen 2 aanbiedingen voor 1 kamer gedaan worden)
Als de client accoord gaat met de aanbieding wordt de aanbieding verplaatst naar de reserverings db met daarin:
#reservering_id ; client_id ; accomodatie_id ; datum_in ; datum_uit
en tevens wordt de accomodatie weer beschikbaar gemaakt (zodat deze voor een volgende periode wel weer zichtbaar is in de selectie)
Gaat de client niet accoord, dan wordt de aanbieding verwijderd en gaat de kamer afwijzing_teller van de client omhoog en wordt de afwijzing in een andere DB gezet. Dit is handig, want dan kan gekeken worden of er een trend zit in het afwijzen van bv type kamers.
Mijn idee was om de reserverings en afwijzings DB per jaar te maken, zodat je wat eenvoudigere overzichten krijgt. Of is dit niet handig omdat je bv overlappende tijden hebt (een student kan een kamer huren van 1-12-2003 t/m 1-2-2004)??
-------
Dit zeg maar het globale verhaal, het gaat er mij vooral om of mijn werkwijze een beetje logisch is.
Handige tips voor het opzetten van zoiets zijn ook zeer welkom.
Dit geheel komt te draaien op een FreeBSD servertje PII 400 ofzo. Er werken maximaal 2 mensen tegelijkertijd met deze DB. Dit systeem is ook alleen toeganlijk voor een kleine groep mensen (4 a 5). Dus security is niet super belangrijk.
Ik ga ook gebruik maken van PostgreSQL, omdat deze foreign keys ondersteund en me dit wel erg handig leek in deze opzet. En de mogelijkheid van sub-query's (of zeg ik het nu verkeerd?? ik bedoel dus SELECT * FROM bla WHERE a=(SELECT.... )
Dus mensen spui je mening, graag opbouwende kritiek.
Ik heb al een redelijk uitgewerkt ontwerp, echter wilde ik jullie mening even hebben over mijn opzet, omdat ik nog nooit zo'n groot iets heb gemaakt voor iemand anders. Want dit is wel iets anders als een website voor jezelf.
----------
Opzet:
We hebben een clienten DB met daarin de standaard data (naam,adres enz) en belangrijkste hierin is: "gewenste datum van een kamer" en "kamer nodig tot".
Daarnaast hebben we een accomodatie DB met daarin de data voor een accomodatie (een kamer zeg maar). In deze DB zit een bool "beschikbaar" verder niet zoveel bijzonders.
Dit is allemaal nog redelijk standaard.
Nu moeten we dus een client gaan koppelen aan een accomodatie, daarvoor moet er een aanbieding gedaan worden aan de client.
Dit doen we door een selectie te maken uit de clienten DB (bv op "datum kamer nodig" en prioriteit). Deze lijst zetten we links op het scherm.
Daarna gaan we een selectie maken uit de accomodaties welke beschikbaar zijn (adhv reservering db zie verderop).
Deze selectie komt rechts op scherm. Nu moet er door de gebruiker een match gemaakt worden. Dus client_id=4 en accomodatie_id=3 selecteren en op "GO" drukken.
Deze aanbieding wordt in de aanbiedings db gezet met daarin:
#aanbieding_id ; client_id ; accomodatie_id ; datum_aanbieding
hierna wordt de accomodatie op niet beschikbaar gezet (er kunnen geen 2 aanbiedingen voor 1 kamer gedaan worden)
Als de client accoord gaat met de aanbieding wordt de aanbieding verplaatst naar de reserverings db met daarin:
#reservering_id ; client_id ; accomodatie_id ; datum_in ; datum_uit
en tevens wordt de accomodatie weer beschikbaar gemaakt (zodat deze voor een volgende periode wel weer zichtbaar is in de selectie)
Gaat de client niet accoord, dan wordt de aanbieding verwijderd en gaat de kamer afwijzing_teller van de client omhoog en wordt de afwijzing in een andere DB gezet. Dit is handig, want dan kan gekeken worden of er een trend zit in het afwijzen van bv type kamers.
Mijn idee was om de reserverings en afwijzings DB per jaar te maken, zodat je wat eenvoudigere overzichten krijgt. Of is dit niet handig omdat je bv overlappende tijden hebt (een student kan een kamer huren van 1-12-2003 t/m 1-2-2004)??
-------
Dit zeg maar het globale verhaal, het gaat er mij vooral om of mijn werkwijze een beetje logisch is.
Handige tips voor het opzetten van zoiets zijn ook zeer welkom.
Dit geheel komt te draaien op een FreeBSD servertje PII 400 ofzo. Er werken maximaal 2 mensen tegelijkertijd met deze DB. Dit systeem is ook alleen toeganlijk voor een kleine groep mensen (4 a 5). Dus security is niet super belangrijk.
Ik ga ook gebruik maken van PostgreSQL, omdat deze foreign keys ondersteund en me dit wel erg handig leek in deze opzet. En de mogelijkheid van sub-query's (of zeg ik het nu verkeerd?? ik bedoel dus SELECT * FROM bla WHERE a=(SELECT.... )
Dus mensen spui je mening, graag opbouwende kritiek.
http://www.bsdfreaks.nl Home site: http://rob.lensen.nu /me was RobL