dis/02/sql/schema.sql

95 lines
3.4 KiB
SQL

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 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 VSISP12.House
(
ID INT PRIMARY KEY NOT NULL,
price INT DEFAULT 0 NOT NULL,
garden SMALLINT DEFAULT 0 NOT NULL,
floors SMALLINT DEFAULT 1 NOT NULL,
CONSTRAINT House_ESTATE_ID_fk 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 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 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 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 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 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 UNIQUE INDEX Rentals_apartment_uindex ON VSISP12.Rentals (apartment);