[SQL] Updated for proper usage
Signed-off-by: Jim Martens <github@2martens.de>
This commit is contained in:
parent
1fc1b0518b
commit
db98e8d596
|
@ -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)
|
||||
);
|
||||
CREATE UNIQUE INDEX Rentals_apartment_uindex ON VSISP12.Rentals (apartment);
|
Loading…
Reference in New Issue