From a8290b7d6eecf81a100e3404a4ea390ae0091b7c Mon Sep 17 00:00:00 2001 From: Jim Martens Date: Wed, 12 Apr 2017 15:05:28 +0200 Subject: [PATCH] [02] Added schema sql Signed-off-by: Jim Martens --- 02/sql/schema.sql | 80 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 80 insertions(+) create mode 100644 02/sql/schema.sql diff --git a/02/sql/schema.sql b/02/sql/schema.sql new file mode 100644 index 0000000..e7d330f --- /dev/null +++ b/02/sql/schema.sql @@ -0,0 +1,80 @@ +CREATE TABLE EstateAgent ( + name VARCHAR(255) NOT NULL, + address VARCHAR(255) NOT NULL, + login VARCHAR(255) PRIMARY KEY NOT NULL, + password VARCHAR(255) NULL +); + +CREATE TABLE Estate ( + ID int NOT NULL PRIMARY KEY, + city VARCHAR(255) NOT NULL, + postalCode VARCHAR(5) NOT NULL, + street VARCHAR(255) NOT NULL, + streetNumber int NOT NULL, + squareArea int NOT NULL, + agent VARCHAR(255), + FOREIGN KEY (agent) REFERENCES EstateAgent(login) +); + +CREATE TABLE Apartment ( + ID int NOT NULL PRIMARY KEY, + floor int NOT NULL, + rent int NOT NULL, + rooms int NOT NULL, + balcony SMALLINT NOT NULL, + builtInKitchen SMALLINT NOT NULL , + FOREIGN KEY (ID) REFERENCES Estate(ID) +); + +CREATE TABLE House ( + ID int NOT NULL PRIMARY KEY, + price int NOT NULL, + garden SMALLINT NOT NULL, + FOREIGN KEY (ID) REFERENCES Estate(ID) +); + +CREATE TABLE Contract ( + contractNumber int NOT NULL PRIMARY KEY, + date DATE NOT NULL, + place VARCHAR(255) NOT NULL +); + +CREATE TABLE PurchaseContract ( + contractNumber int NOT NULL PRIMARY KEY, + numberOfInstallments int NOT NULL, + interestRate int NOT NULL, + FOREIGN KEY (contractNumber) REFERENCES Contract(contractNumber) +); + +CREATE TABLE TenancyContract ( + contractNumber int NOT NULL PRIMARY KEY, + startDate DATE NOT NULL, + duration int NOT NULL, + additionalCosts int NOT NULL, + FOREIGN KEY (contractNumber) REFERENCES Contract(contractNumber) +); + +CREATE TABLE Person ( + ID int NOT NULL PRIMARY KEY, + firstName VARCHAR(255) NOT NULL, + name VARCHAR(255) NOT NULL, + address VARCHAR(255) NOT NULL +); + +CREATE TABLE Sales ( + contractNumber int NOT NULL PRIMARY KEY, + personID int NOT NULL, + house int UNIQUE NOT NULL, + FOREIGN KEY (contractNumber) REFERENCES PurchaseContract(contractNumber), + FOREIGN KEY (personID) REFERENCES Person(ID), + FOREIGN KEY (house) REFERENCES House(ID) +); + +CREATE TABLE Rentals ( + contractNumber int NOT NULL PRIMARY KEY, + personID int NOT NULL, + apartment int UNIQUE NOT NULL, + FOREIGN KEY (contractNumber) REFERENCES TenancyContract(contractNumber), + FOREIGN KEY (personID) REFERENCES Person(ID), + FOREIGN KEY (apartment) REFERENCES Apartment(ID) +); \ No newline at end of file