[SQL] Updated for proper usage

Signed-off-by: Jim Martens <github@2martens.de>
This commit is contained in:
Jim Martens 2017-04-14 15:42:03 +02:00
parent 1fc1b0518b
commit db98e8d596
1 changed files with 77 additions and 64 deletions

View File

@ -1,81 +1,94 @@
CREATE TABLE EstateAgent ( CREATE TABLE VSISP12.EstateAgent
ID INT NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY (START WITH 1, INCREMENT BY 1, NOCYCLE), (
name VARCHAR(255) NOT NULL, ID INT PRIMARY KEY NOT NULL GENERATED ALWAYS AS IDENTITY(START WITH 1 INCREMENT BY 1),
address VARCHAR(255) NOT NULL, name VARCHAR(255) DEFAULT '' NOT NULL,
login VARCHAR(255) UNIQUE NOT NULL, address VARCHAR(255) DEFAULT '' NOT NULL,
password VARCHAR(255) NULL login VARCHAR(255) DEFAULT '' NOT NULL,
password VARCHAR(255)
);
CREATE UNIQUE INDEX EstateAgent_login_uindex ON VSISP12.EstateAgent (login);
CREATE TABLE VSISP12.Estate
(
ID INT PRIMARY KEY NOT NULL GENERATED ALWAYS AS IDENTITY(START WITH 1 INCREMENT BY 1),
city VARCHAR(255) DEFAULT 'Musterstadt' NOT NULL,
postalCode VARCHAR(5) DEFAULT '00000' NOT NULL,
street VARCHAR(255) DEFAULT 'Musterstraße' NOT NULL,
streetNumber SMALLINT DEFAULT 0 NOT NULL,
squareArea INT DEFAULT 0 NOT NULL,
agent INT NOT NULL,
CONSTRAINT Estate_ESTATEAGENT_ID_fk FOREIGN KEY (agent) REFERENCES ESTATEAGENT (ID)
); );
CREATE TABLE Estate ( CREATE TABLE VSISP12.Apartment
ID int NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY (START WITH 1, INCREMENT BY 1, NOCYCLE), (
city VARCHAR(255) NOT NULL, ID INT PRIMARY KEY NOT NULL,
postalCode VARCHAR(5) NOT NULL, floor SMALLINT DEFAULT 0 NOT NULL,
street VARCHAR(255) NOT NULL, rent INT DEFAULT 0 NOT NULL,
streetNumber int NOT NULL, rooms SMALLINT DEFAULT 1 NOT NULL,
squareArea int NOT NULL, balcony SMALLINT DEFAULT 0 NOT NULL,
agent VARCHAR(255), builtInKitchen SMALLINT DEFAULT 1 NOT NULL,
FOREIGN KEY (agent) REFERENCES EstateAgent(ID) CONSTRAINT Apartment_ESTATE_ID_fk FOREIGN KEY (ID) REFERENCES ESTATE (ID)
); );
CREATE TABLE Apartment ( CREATE TABLE VSISP12.House
ID int NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY (START WITH 1, INCREMENT BY 1, NOCYCLE), (
floor int NOT NULL, ID INT PRIMARY KEY NOT NULL,
rent int NOT NULL, price INT DEFAULT 0 NOT NULL,
rooms int NOT NULL, garden SMALLINT DEFAULT 0 NOT NULL,
balcony SMALLINT NOT NULL, CONSTRAINT House_ESTATE_ID_fk FOREIGN KEY (ID) REFERENCES ESTATE (ID)
builtInKitchen SMALLINT NOT NULL ,
FOREIGN KEY (ID) REFERENCES Estate(ID)
); );
CREATE TABLE House ( CREATE TABLE VSISP12.Contract
ID int NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY (START WITH 1, INCREMENT BY 1, NOCYCLE), (
price int NOT NULL, contractNumber INT PRIMARY KEY NOT NULL GENERATED ALWAYS AS IDENTITY(START WITH 1 INCREMENT BY 1),
garden SMALLINT NOT NULL, date DATE,
FOREIGN KEY (ID) REFERENCES Estate(ID) place VARCHAR(255) DEFAULT 'Musterstadt' NOT NULL
); );
CREATE TABLE Contract ( CREATE TABLE VSISP12.PurchaseContract
contractNumber int NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY (START WITH 1, INCREMENT BY 1, NOCYCLE), (
date DATE NOT NULL, contractNumber INT PRIMARY KEY NOT NULL,
place VARCHAR(255) NOT NULL numberOfInstallments SMALLINT DEFAULT 0 NOT NULL,
interestRate SMALLINT DEFAULT 0 NOT NULL,
CONSTRAINT PurchaseContract_CONTRACT_CONTRACTNUMBER_fk FOREIGN KEY (contractNumber) REFERENCES CONTRACT (CONTRACTNUMBER)
); );
CREATE TABLE PurchaseContract ( CREATE TABLE VSISP12.TenancyContract
contractNumber int NOT NULL PRIMARY KEY, (
numberOfInstallments int NOT NULL, contractNumber INT PRIMARY KEY NOT NULL,
interestRate int NOT NULL, startDate TIMESTAMP,
FOREIGN KEY (contractNumber) REFERENCES Contract(contractNumber) duration TIMESTAMP,
additionalCosts INT DEFAULT 0 NOT NULL,
CONSTRAINT TenancyContract_CONTRACT_CONTRACTNUMBER_fk FOREIGN KEY (contractNumber) REFERENCES CONTRACT (CONTRACTNUMBER)
); );
CREATE TABLE TenancyContract ( CREATE TABLE VSISP12.Person
contractNumber int NOT NULL PRIMARY KEY, (
startDate DATE NOT NULL, ID INT PRIMARY KEY NOT NULL GENERATED ALWAYS AS IDENTITY(START WITH 1 INCREMENT BY 1),
duration int NOT NULL, firstName VARCHAR(255) DEFAULT 'Max' NOT NULL,
additionalCosts int NOT NULL, name VARCHAR(255) DEFAULT 'Mustermann' NOT NULL,
FOREIGN KEY (contractNumber) REFERENCES Contract(contractNumber) address VARCHAR(255) DEFAULT 'Musterstraße' NOT NULL
); );
CREATE TABLE Person ( CREATE TABLE VSISP12.Sales
ID int NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY (START WITH 1, INCREMENT BY 1, NOCYCLE), (
firstName VARCHAR(255) NOT NULL, contractNumber INT PRIMARY KEY NOT NULL,
name VARCHAR(255) NOT NULL, person INT NOT NULL,
address VARCHAR(255) NOT NULL house INT NOT NULL,
CONSTRAINT Sales_PURCHASECONTRACT_CONTRACTNUMBER_fk FOREIGN KEY (contractNumber) REFERENCES PURCHASECONTRACT (CONTRACTNUMBER),
CONSTRAINT Sales_PERSON_ID_fk FOREIGN KEY (person) REFERENCES PERSON (ID),
CONSTRAINT Sales_HOUSE_ID_fk FOREIGN KEY (house) REFERENCES HOUSE (ID)
); );
CREATE UNIQUE INDEX Sales_house_uindex ON VSISP12.Sales (house);
CREATE TABLE Sales ( CREATE TABLE VSISP12.Rentals
contractNumber int NOT NULL PRIMARY KEY, (
personID int NOT NULL, contractNumber INT PRIMARY KEY NOT NULL,
house int UNIQUE NOT NULL, person INT NOT NULL,
FOREIGN KEY (contractNumber) REFERENCES PurchaseContract(contractNumber), apartment INT NOT NULL,
FOREIGN KEY (personID) REFERENCES Person(ID), CONSTRAINT Rentals_TENANCYCONTRACT_CONTRACTNUMBER_fk FOREIGN KEY (contractNumber) REFERENCES TENANCYCONTRACT (CONTRACTNUMBER),
FOREIGN KEY (house) REFERENCES House(ID) CONSTRAINT Rentals_PERSON_ID_fk FOREIGN KEY (person) REFERENCES PERSON (ID),
CONSTRAINT Rentals_APARTMENT_ID_fk FOREIGN KEY (apartment) REFERENCES APARTMENT (ID)
); );
CREATE UNIQUE INDEX Rentals_apartment_uindex ON VSISP12.Rentals (apartment);
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)
);