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