From db98e8d596d45d6057d56eed3e94bec0f823776e Mon Sep 17 00:00:00 2001 From: Jim Martens Date: Fri, 14 Apr 2017 15:42:03 +0200 Subject: [PATCH] [SQL] Updated for proper usage Signed-off-by: Jim Martens --- 02/sql/schema.sql | 141 +++++++++++++++++++++++++--------------------- 1 file changed, 77 insertions(+), 64 deletions(-) diff --git a/02/sql/schema.sql b/02/sql/schema.sql index 3bef4c5..17047ef 100644 --- a/02/sql/schema.sql +++ b/02/sql/schema.sql @@ -1,81 +1,94 @@ -CREATE TABLE EstateAgent ( - ID INT NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY (START WITH 1, INCREMENT BY 1, NOCYCLE), - name VARCHAR(255) NOT NULL, - address VARCHAR(255) NOT NULL, - login VARCHAR(255) UNIQUE NOT NULL, - password VARCHAR(255) NULL +CREATE TABLE VSISP12.EstateAgent +( + ID INT PRIMARY KEY NOT NULL GENERATED ALWAYS AS IDENTITY(START WITH 1 INCREMENT BY 1), + name VARCHAR(255) DEFAULT '' NOT NULL, + address VARCHAR(255) DEFAULT '' NOT 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 ( - ID int NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY (START WITH 1, INCREMENT BY 1, NOCYCLE), - 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(ID) +CREATE TABLE VSISP12.Apartment +( + ID INT PRIMARY KEY NOT NULL, + floor SMALLINT DEFAULT 0 NOT NULL, + rent INT DEFAULT 0 NOT NULL, + rooms SMALLINT DEFAULT 1 NOT NULL, + balcony SMALLINT DEFAULT 0 NOT NULL, + builtInKitchen SMALLINT DEFAULT 1 NOT NULL, + CONSTRAINT Apartment_ESTATE_ID_fk FOREIGN KEY (ID) REFERENCES ESTATE (ID) ); -CREATE TABLE Apartment ( - ID int NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY (START WITH 1, INCREMENT BY 1, NOCYCLE), - 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 VSISP12.House +( + ID INT PRIMARY KEY NOT NULL, + price INT DEFAULT 0 NOT NULL, + garden SMALLINT DEFAULT 0 NOT NULL, + CONSTRAINT House_ESTATE_ID_fk FOREIGN KEY (ID) REFERENCES ESTATE (ID) ); -CREATE TABLE House ( - ID int NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY (START WITH 1, INCREMENT BY 1, NOCYCLE), - price int NOT NULL, - garden SMALLINT NOT NULL, - FOREIGN KEY (ID) REFERENCES Estate(ID) +CREATE TABLE VSISP12.Contract +( + contractNumber INT PRIMARY KEY NOT NULL GENERATED ALWAYS AS IDENTITY(START WITH 1 INCREMENT BY 1), + date DATE, + place VARCHAR(255) DEFAULT 'Musterstadt' NOT NULL ); -CREATE TABLE Contract ( - contractNumber int NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY (START WITH 1, INCREMENT BY 1, NOCYCLE), - date DATE NOT NULL, - place VARCHAR(255) NOT NULL +CREATE TABLE VSISP12.PurchaseContract +( + contractNumber INT PRIMARY KEY 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 ( - contractNumber int NOT NULL PRIMARY KEY, - numberOfInstallments int NOT NULL, - interestRate int NOT NULL, - FOREIGN KEY (contractNumber) REFERENCES Contract(contractNumber) +CREATE TABLE VSISP12.TenancyContract +( + contractNumber INT PRIMARY KEY NOT NULL, + startDate TIMESTAMP, + duration TIMESTAMP, + additionalCosts INT DEFAULT 0 NOT NULL, + CONSTRAINT TenancyContract_CONTRACT_CONTRACTNUMBER_fk 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 VSISP12.Person +( + ID INT PRIMARY KEY NOT NULL GENERATED ALWAYS AS IDENTITY(START WITH 1 INCREMENT BY 1), + firstName VARCHAR(255) DEFAULT 'Max' NOT NULL, + name VARCHAR(255) DEFAULT 'Mustermann' NOT NULL, + address VARCHAR(255) DEFAULT 'Musterstraße' NOT NULL ); -CREATE TABLE Person ( - ID int NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY (START WITH 1, INCREMENT BY 1, NOCYCLE), - firstName VARCHAR(255) NOT NULL, - name VARCHAR(255) NOT NULL, - address VARCHAR(255) NOT NULL +CREATE TABLE VSISP12.Sales +( + contractNumber INT PRIMARY KEY NOT NULL, + person INT 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 ( - 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 VSISP12.Rentals +( + contractNumber INT PRIMARY KEY NOT NULL, + person INT NOT NULL, + apartment INT NOT NULL, + CONSTRAINT Rentals_TENANCYCONTRACT_CONTRACTNUMBER_fk FOREIGN KEY (contractNumber) REFERENCES TENANCYCONTRACT (CONTRACTNUMBER), + CONSTRAINT Rentals_PERSON_ID_fk FOREIGN KEY (person) REFERENCES PERSON (ID), + CONSTRAINT Rentals_APARTMENT_ID_fk FOREIGN KEY (apartment) REFERENCES APARTMENT (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 +CREATE UNIQUE INDEX Rentals_apartment_uindex ON VSISP12.Rentals (apartment); \ No newline at end of file