sgd-praktikum/SQL/Schema.sql

111 lines
2.8 KiB
MySQL
Raw Normal View History

2023-04-27 17:29:39 +02:00
DROP TABLE BookingGuest;
2023-05-25 15:42:37 +02:00
DROP TABLE BookingRoom CASCADE CONSTRAINTS;
2023-04-27 17:29:39 +02:00
DROP TABLE Booking;
2023-04-27 17:34:18 +02:00
DROP TABLE CleaningClerk;
2023-05-25 15:42:37 +02:00
DROP TABLE CleaningPlan CASCADE CONSTRAINTS;
2023-04-27 17:15:35 +02:00
DROP TABLE Client;
2023-04-27 17:34:18 +02:00
DROP TABLE Clerk;
DROP TABLE Person;
DROP TABLE Room;
2023-05-12 17:18:56 +02:00
DROP TABLE Address;
DROP SEQUENCE address_seq;
DROP SEQUENCE room_seq;
DROP SEQUENCE person_seq;
DROP SEQUENCE cleaningPlan_seq;
DROP SEQUENCE booking_seq;
2023-04-27 17:15:35 +02:00
2023-05-12 17:18:56 +02:00
CREATE TABLE Address
2023-04-27 17:15:35 +02:00
(
2023-05-12 17:18:56 +02:00
addressId NUMBER PRIMARY KEY,
2023-04-27 17:15:35 +02:00
street VARCHAR2(50) NOT NULL,
houseNumber NUMBER NOT NULL,
postalCode NUMBER NOT NULL,
city VARCHAR2(50) NOT NULL,
country VARCHAR2(50) NOT NULL
);
CREATE TABLE Room
(
roomNumber NUMBER PRIMARY KEY,
floor NUMBER NOT NULL,
roomTyp VARCHAR2(50) NOT NULL,
2023-04-27 17:34:18 +02:00
"size" NUMBER NOT NULL,
2023-04-27 17:15:35 +02:00
accessibility NUMBER NOT NULL,
beds NUMBER NOT NULL
);
CREATE TABLE Person
(
personId NUMBER PRIMARY KEY,
name VARCHAR2(50) NOT NULL,
lastName VARCHAR2(50) NOT NULL,
age NUMBER NOT NULL,
2023-05-12 17:18:56 +02:00
addressId NUMBER NOT NULL,
FOREIGN KEY (addressId) REFERENCES Address(addressId)
2023-04-27 17:15:35 +02:00
);
CREATE TABLE Clerk
(
personId NUMBER PRIMARY KEY,
staff NUMBER NOT NULL UNIQUE,
salary NUMBER NOT NULL,
2023-04-27 17:36:37 +02:00
FOREIGN KEY (personId) REFERENCES Person(personId)
2023-04-27 17:15:35 +02:00
);
CREATE TABLE Client
(
personId NUMBER PRIMARY KEY,
bankDetails VARCHAR2(22) NOT NULL,
2023-04-27 17:36:37 +02:00
FOREIGN KEY (personId) REFERENCES Person(personId)
2023-04-27 17:15:35 +02:00
);
2023-04-27 17:20:38 +02:00
2023-05-12 17:18:56 +02:00
CREATE TABLE CleaningPlan
2023-04-27 17:34:18 +02:00
(
cleaningPlanId NUMBER PRIMARY KEY,
2023-04-27 18:03:36 +02:00
"date" DATE NOT NULL,
2023-04-27 17:34:18 +02:00
duration NUMBER NOT NULL,
roomNUMBER NUMBER NOT NULL,
2023-04-27 17:36:37 +02:00
FOREIGN KEY (roomNUMBER) REFERENCES ROOM(roomNumber)
2023-04-27 17:34:18 +02:00
);
CREATE TABLE CleaningClerk
(
clerkId NUMBER,
cleaningPlanId NUMBER,
2023-04-27 17:36:37 +02:00
PRIMARY KEY (clerkId,cleaningPlanId),
FOREIGN KEY (clerkId) REFERENCES Clerk(personId),
2023-05-12 17:18:56 +02:00
FOREIGN KEY (cleaningPlanId) REFERENCES CleaningPlan(cleaningPlanId)
2023-04-27 17:34:18 +02:00
);
2023-04-27 17:20:38 +02:00
CREATE TABLE Booking (
2023-05-12 17:18:56 +02:00
bookingId NUMBER PRIMARY KEY,
2023-04-27 17:20:38 +02:00
arrivalDate DATE NOT NULL,
2023-05-12 17:18:56 +02:00
departureDate DATE NULL,
2023-04-27 17:20:38 +02:00
cost NUMBER NULL,
2023-04-27 18:09:06 +02:00
pensionType VARCHAR2(50) NOT NULL,
2023-04-27 17:20:38 +02:00
lateCheckout NUMBER NULL,
clientId NUMBER NOT NULL,
2023-04-27 17:56:22 +02:00
FOREIGN KEY (clientId) REFERENCES Client(personId)
2023-04-27 17:20:38 +02:00
);
2023-04-27 17:27:30 +02:00
CREATE TABLE BookingGuest (
bookingId NUMBER NOT NULL,
personId NUMBER NOT NULL,
2023-04-27 17:34:18 +02:00
PRIMARY KEY(bookingId, personId),
2023-06-23 09:53:14 +02:00
FOREIGN KEY (bookingId) REFERENCES Booking(bookingId) ON DELETE CASCADE,
2023-04-27 17:27:30 +02:00
FOREIGN KEY (personId) REFERENCES Person(personId)
2023-04-27 17:29:39 +02:00
);
CREATE TABLE BookingRoom (
bookingId NUMBER NOT NULL,
roomNumber NUMBER NOT NULL,
2023-04-27 17:34:18 +02:00
PRIMARY KEY(bookingId, roomNumber),
2023-06-23 09:53:14 +02:00
FOREIGN KEY (bookingId) REFERENCES Booking(bookingId) ON DELETE CASCADE,
2023-04-27 17:29:39 +02:00
FOREIGN KEY (roomNumber) REFERENCES Room(roomNumber)
2023-05-12 16:52:59 +02:00
);
2023-05-12 17:18:56 +02:00
CREATE SEQUENCE address_seq;
CREATE SEQUENCE room_seq;
CREATE SEQUENCE person_seq;
CREATE SEQUENCE cleaningPlan_seq;
CREATE SEQUENCE booking_seq;