[02] Added schema sql

Signed-off-by: Jim Martens <github@2martens.de>
This commit is contained in:
Jim Martens 2017-04-12 15:05:28 +02:00
parent 95f0478aa9
commit a8290b7d6e
1 changed files with 80 additions and 0 deletions

80
02/sql/schema.sql Normal file
View File

@ -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)
);