Projekt Ferienhof

Aus Informatik
Wechseln zu: Navigation, Suche

Aufgabe

Ein Besitzer mehrerer Ferienwohnungen möchte diese auf einer Website präsentieren. Die Wohnungen werden mittels einer Datenbank verwaltet.
Kunden können auf der Seite Ferienwohnungen unter bestimmten Kriterien suchen, deren Eigenschaften in Erfahrung bringen und direkt eine Wohnung buchen. Es soll außerdem ein Belegungsplan für die Wohnungen eingesehen werden können. Kunden, die bereits gebucht haben, können mit ihrer Kundennummer und ihrem Passwort direkt buchen. Neukunden geben ihre persönlichen Daten ein und buchen dann die gewünschte Wohnung.
Wichtig hierbei ist, dass doppelte Buchungen vermieden werden müssen, d.h. es muss geprüft werden, dass eine Wohnung in einem Zeitraum von nur einem Kunden gebucht wird.

Geschäftsregeln

- Eine Wohnung kann von keinem oder mehreren Kunden gebucht werden
- In einem Zeitraum kann die Wohnung nur von einem Kunden belegt sein
- Ein Kunde kann keine oder mehrere Wohnungen buchen
- Eine Buchung gehört zu genau einem Kunden
- Eine Buchung gehört zu genau einer Wohnung

ERM

Ferienwohnung.jpg

RM

wohnung(fewoname, adresse, tierfreundlichkeit, landkreis, betten, kueche, badezimmer, fernseher, preis, zimmer)
kunde(knr, name, anschrift, telNr, email, passwort)
belegung(fewoname, knr, ankunftTag, ankunftMonat, ankunftJahr, abreiseTag, abreiseMonat, abreiseJahr)

Erstellen der Datenbank

Die Datenbank

CREATE DATABASE IF NOT EXISTS ferienwohnung;

Tabelle Kunde

CREATE TABLE IF NOT EXISTS ferienwohnung.kunde (
  `knr` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(30) NOT NULL,
  `anschrift` varchar(40) NOT NULL,
  `telNr` varchar(20) DEFAULT NULL,                    
  `email` varchar(42) DEFAULT NULL,
  `passwort` varchar(20) NOT NULL,
  PRIMARY KEY (`knr`)
) ENGINE=InnoDB 

Tabelle Wohnung

CREATE TABLE IF NOT EXISTS ferienwohnung.wohnung(
  `fewoname ` varchar(20) NOT NULL,
  `adresse` varchar(50) NOT NULL,
  `tierfreundlichkeit` enum(‚Ja‘,‘Nein‘) NOT NULL,
  `landkreis` varchar(10) NOT NULL,
  `betten` int(1) NOT NULL,
  `küche` enum(‚Ja‘,‘Nein‘) DEFAULT ‚Nein‘,
  `badezimmer` int(1) NOT NULL,
  `fernseher` enum(`Ja`,‘Nein‘) NOT NULL,
  `preis` decimal(5,2) NOT NULL,
  `zimmer` int(1) NOT NULL,
  PRIMARY KEY (`fewoname`)
) ENGINE=InnoDB 

Tabelle Belegung

CREATE TABLE IF NOT EXISTS ferienwohnung.belegung  (
  `knr` int(11) NOT NULL,
  `fewoname` varchar(30) NOT NULL,
  `ankunftJahr` int(4) NOT NULL,
  `ankunftMonat` int(2) NOT NULL,
  `ankunftTag` int(2) NOT NULL,
  `abreiseJahr` int(4) NOT NULL,
  `abreiseMonat` int(2) NOT NULL,
  `abreiseTag` int(2) NOT NULL,
  KEY `fewoname` (`fewoname`),
  KEY `knr` (`knr`)

) ENGINE=INNODB;

Es verbraucht mehr Speicherplatz das Datum in dieser Weise zu speichern, erleichtert jedoch das Rechnen.

Einfügen der Fremdschlüssel

ALTER TABLE ferienwohnung.belegung
  ADD FOREIGN KEY (`fewoname`) 
  REFERENCES ferienwohnung.wohnung` (`fewoname`) 
  ON UPDATE CASCADE ON DELETE RESTRICT; 

ALTER TABLE ferienwohnung.belegung
  ADD FOREIGN KEY (`knr`) REFERENCES ferienwohnung.kunde (`knr`) 
  ON UPDATE CASCADE ON DELETE RESTRICT; 



Füllen mit Datensätzen
Beispiele:

INSERT INTO ferienwohnung.kunde (knr, name, anschrift, telNr, email, passwort) VALUES
(1, 'Geier, Arthur', 'Moritzgasse 1, 34829 Schönstadt', '04478/3498', NULL, 'aasfresser32'),
(26, 'Adler, Horst', 'Sackgasse 14, 30229 Hannover', '04829/39291', 'horstadler@gmx.net','freibier4ever');
INSERT INTO ferienwohnung.wohnung (fewoname, adresse, tierfreundlichkeit,
 landkreis, betten, kueche, badezimmer, fernseher, preis, zimmer) 
 VALUES
('Adlerhorst', 'Am Felsen 2, 39204 Donautal', 'Nein', 'Narnia', 6, 'Ja', 1,
 'Ja', '70.00', 3),
('Bibertal', 'Dammstraße 7, 57398 Bibertal', 'Ja', 'Auenland', 4, 'Nein', 0,
 'Nein', '30.00', 2);
INSERT INTO ferienwohnung.belegung(knr, fewoname, ankunftJahr,
 ankunftMonat, ankunftTag, abreiseJahr, abreiseMonat, abreiseTag) 
 VALUES
 (3, 'Bibertal', '2011','09','12', '2011','09','18'),
 (26, 'Adlerhorst', '2011','07','15', '2011','08','02');


Screenshots

Kartescreen.jpg

Hier kann beispielsweise mittels Anklicken auf einer Karte direkt eine Ferienwohnung, oder alle Ferienwohnungen in einem Landkreis (unterstrichen) gewählt und ihre Attribute angezeigt werden.