linfo2172-databases/P2/exo3/exo3.sql

67 lines
2.1 KiB
MySQL
Raw Normal View History

2024-04-24 10:41:54 +02:00
CREATE TABLE "Customer" (
"cid" integer NOT NULL,
"firstname" varchar NOT NULL,
"lastname" varchar NOT NULL,
"preference_vcid" integer NOT NULL,
"preference_vcname" varchar NOT NULL,
PRIMARY KEY ("cid", "firstname", "lastname")
FOREIGN KEY ("preference_vcid") REFERENCES "VehicleClass" ("vcid");
FOREIGN KEY ("preference_vcname") REFERENCES "VehicleClass" ("vcname");
);
CREATE TABLE "VehicleClass" (
"vcid" integer NOT NULL,
"vcname" varchar NOT NULL,
"length" integer NOT NULL,
"width" integer NOT NULL,
"height" integer NOT NULL,
PRIMARY KEY ("vcid", "vcname")
);
CREATE TABLE "Vehicle" (
"vid" integer NOT NULL,
"vcid" integer NOT NULL,
"vcname" varchar NOT NULL,
"last_check_date" datetime NOT NULL,
"plate_num" integer,
"street" varchar NOT NULL,
"postcode" varchar NOT NULL,
"city" varchar NOT NULL,
"name" varchar NOT NULL,
PRIMARY KEY ("vid", "vcid", "vcname", "street", "postcode", "city", "name")
FOREIGN KEY ("vcid") REFERENCES "VehicleClass" ("vcid");
FOREIGN KEY ("vcname") REFERENCES "VehicleClass" ("vcname");
FOREIGN KEY ("street") REFERENCES "Station" ("street");
FOREIGN KEY ("postcode") REFERENCES "Station" ("postcode");
FOREIGN KEY ("city") REFERENCES "Station" ("city");
FOREIGN KEY ("name") REFERENCES "Station" ("name");
);
CREATE TABLE "Station" (
"street" varchar NOT NULL,
"postcode" varchar NOT NULL,
"city" varchar NOT NULL,
"name" varchar NOT NULL,
PRIMARY KEY ("street", "postcode", "city", "name")
);
CREATE TABLE "Reservation" (
"startDateTime" datetime NOT NULL,
"endDateTime" datetime NOT NULL,
"frid" integer,
"cid" integer NOT NULL,
"cname" varchar NOT NULL,
"vid" integer NOT NULL,
PRIMARY KEY ("startDateTime", "cid", "cname", "vid")
FOREIGN KEY ("frid") REFERENCES "FinishedReservation" ("frid");
FOREIGN KEY ("cid") REFERENCES "Customer" ("cid");
FOREIGN KEY ("cname") REFERENCES "Customer" ("firstname");
FOREIGN KEY ("vid") REFERENCES "Vehicle" ("vid");
);
CREATE TABLE "FinishedReservation" (
"frid" integer PRIMARY KEY NOT NULL,
"distance" integer NOT NULL,
"cost" integer NOT NULL
);