4 fields snake case

This commit is contained in:
2026-04-05 15:41:06 +03:00
parent 11ba82ebf0
commit 35354b1cd5
2 changed files with 84 additions and 80 deletions

View File

@ -10,39 +10,41 @@ CREATE TYPE "UsageType" AS ENUM (
CREATE TABLE "Person" (
id int GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
person_id int GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
full_name text NOT NULL,
passwd_hash bytea NOT NULL
);
CREATE TABLE "Client" (
"Person_id" int UNIQUE NOT NULL,
person_id int PRIMARY KEY,
phone text NOT NULL,
email text NOT NULL,
billing_account text NOT NULL,
FOREIGN KEY ("Person_id") REFERENCES "Person" (id)
FOREIGN KEY (person_id) REFERENCES "Person" (person_id)
ON DELETE CASCADE
ON UPDATE CASCADE
);
CREATE TABLE "Master" (
"Person_id" int UNIQUE NOT NULL,
person_id int PRIMARY KEY,
passport text UNIQUE NOT NULL,
readme text NOT NULL,
FOREIGN KEY ("Person_id") REFERENCES "Person" (id)
FOREIGN KEY (person_id) REFERENCES "Person" (person_id)
ON DELETE CASCADE
ON UPDATE CASCADE
);
CREATE TABLE "Studio" (
id int GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
studio_id int GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
address text UNIQUE NOT NULL,
capacity int NOT NULL CHECK (capacity > 0),
begin_date timestamptz NOT NULL,
@ -53,13 +55,14 @@ CREATE TABLE "Studio" (
CREATE TABLE "Course" (
id int GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
"Master_id" int,
course_id int GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
master_id int,
name text NOT NULL,
price real NOT NULL CHECK (price > 0),
deadline_date timestamptz NOT NULL,
FOREIGN KEY ("Master_id") REFERENCES "Master" ("Person_id")
FOREIGN KEY (master_id) REFERENCES "Master" (person_id)
ON DELETE SET NULL
ON UPDATE CASCADE
);
@ -73,36 +76,35 @@ CREATE TYPE "ClassType" AS ENUM (
CREATE TABLE "Class" (
begin_date timestamptz,
"Course_id" int,
"Studio_id" int,
course_id int,
PRIMARY KEY (begin_date, course_id),
studio_id int,
name text NOT NULL,
type "ClassType" NOT NULL,
duration interval NOT NULL,
PRIMARY KEY (begin_date, "Course_id"),
FOREIGN KEY ("Course_id") REFERENCES "Course" (id)
FOREIGN KEY (course_id) REFERENCES "Course" (course_id)
ON DELETE CASCADE
ON UPDATE CASCADE,
FOREIGN KEY ("Studio_id") REFERENCES "Studio" (id)
FOREIGN KEY (studio_id) REFERENCES "Studio" (studio_id)
ON DELETE SET NULL
ON UPDATE CASCADE
);
CREATE TABLE "Class_Master" (
"Class_begin_date" timestamptz,
"Class_Course_id" int,
"Master_id" int,
class_begin_date timestamptz,
class_course_id int,
master_id int,
PRIMARY KEY (class_begin_date, class_course_id, master_id),
PRIMARY KEY ("Class_begin_date", "Class_Course_id", "Master_id"),
FOREIGN KEY ("Master_id") REFERENCES "Master" ("Person_id")
FOREIGN KEY (master_id) REFERENCES "Master" (person_id)
ON DELETE CASCADE
ON UPDATE CASCADE,
FOREIGN KEY ("Class_begin_date", "Class_Course_id") REFERENCES "Class" (begin_date, "Course_id")
FOREIGN KEY (class_begin_date, class_course_id) REFERENCES "Class" (begin_date, course_id)
ON DELETE CASCADE
ON UPDATE CASCADE
);
@ -115,138 +117,140 @@ CREATE TYPE "RegistrationStatus" AS ENUM (
CREATE TABLE "Registration" (
"Client_id" int,
"Course_id" int,
client_id int,
course_id int,
PRIMARY KEY (client_id, course_id),
date timestamptz NOT NULL,
status "RegistrationStatus" NOT NULL,
PRIMARY KEY ("Client_id", "Course_id"),
FOREIGN KEY ("Client_id") REFERENCES "Client" ("Person_id")
FOREIGN KEY (client_id) REFERENCES "Client" (person_id)
ON DELETE CASCADE
ON UPDATE CASCADE,
FOREIGN KEY ("Course_id") REFERENCES "Course" (id)
FOREIGN KEY (course_id) REFERENCES "Course" (course_id)
ON DELETE CASCADE
ON UPDATE CASCADE
);
CREATE TABLE "FoodProductEnum" (
id int GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
food_product_enum_id int GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
name text NOT NULL,
avg_price real NOT NULL
);
CREATE TABLE "FoodProduct" (
id int GENERATED ALWAYS AS IDENTITY,
"FoodProductEnum_id" int,
"Class_begin_date" timestamptz,
"Class_Course_id" int,
food_product_id int GENERATED ALWAYS AS IDENTITY,
food_product_enum_id int,
PRIMARY KEY (food_product_id, food_product_enum_id),
class_begin_date timestamptz,
class_course_id int,
buy_price real NOT NULL,
buy_date timestamptz NOT NULL,
delivery_price real NOT NULL,
delivery_date timestamptz NOT NULL,
expires_date timestamptz NOT NULL,
PRIMARY KEY (id, "FoodProductEnum_id"),
FOREIGN KEY ("FoodProductEnum_id") REFERENCES "FoodProductEnum" (id)
FOREIGN KEY (food_product_enum_id) REFERENCES "FoodProductEnum" (food_product_enum_id)
ON DELETE RESTRICT
ON UPDATE RESTRICT,
FOREIGN KEY ("Class_begin_date", "Class_Course_id") REFERENCES "Class" (begin_date, "Course_id")
FOREIGN KEY (class_begin_date, class_course_id) REFERENCES "Class" (begin_date, course_id)
ON DELETE SET NULL
ON UPDATE CASCADE
);
CREATE TABLE "Equipment" (
id int GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
"Studio_id" int,
equipment_id int GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
studio_id int,
name text NOT NULL,
usage_price real NOT NULL,
usage_type "UsageType" NOT NULL,
delivery_price real NOT NULL,
delivery_date timestamptz NOT NULL,
FOREIGN KEY ("Studio_id") REFERENCES "Studio" (id)
FOREIGN KEY (studio_id) REFERENCES "Studio" (studio_id)
ON DELETE SET NULL
ON UPDATE CASCADE
);
CREATE TABLE "Class_Equipment" (
"Class_begin_date" timestamptz,
"Class_Course_id" int,
"Equipment_id" int,
class_begin_date timestamptz,
class_course_id int,
equipment_id int,
PRIMARY KEY (class_begin_date, class_course_id, equipment_id),
PRIMARY KEY ("Class_begin_date", "Class_Course_id", "Equipment_id"),
FOREIGN KEY ("Class_begin_date", "Class_Course_id") REFERENCES "Class" (begin_date, "Course_id")
FOREIGN KEY (class_begin_date, class_course_id) REFERENCES "Class" (begin_date, course_id)
ON DELETE CASCADE
ON UPDATE CASCADE,
FOREIGN KEY ("Equipment_id") REFERENCES "Equipment" (id)
FOREIGN KEY (equipment_id) REFERENCES "Equipment" (equipment_id)
ON DELETE RESTRICT
ON UPDATE CASCADE
);
CREATE TABLE "DrugEnum" (
id int GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
drug_enum_id int GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
name text NOT NULL,
avg_price real NOT NULL
);
CREATE TABLE "Drug" (
id int GENERATED ALWAYS AS IDENTITY,
"DrugEnum_id" int,
"Course_id" int,
drug_id int GENERATED ALWAYS AS IDENTITY,
drug_enum_id int,
PRIMARY KEY (drug_id, drug_enum_id),
course_id int,
buy_price real NOT NULL,
buy_date timestamptz NOT NULL,
delivery_price real NOT NULL,
delivery_date timestamptz NOT NULL,
expires_date timestamptz NOT NULL,
PRIMARY KEY (id, "DrugEnum_id"),
FOREIGN KEY ("DrugEnum_id") REFERENCES "DrugEnum" (id)
FOREIGN KEY (drug_enum_id) REFERENCES "DrugEnum" (drug_enum_id)
ON DELETE RESTRICT
ON UPDATE RESTRICT,
FOREIGN KEY ("Course_id") REFERENCES "Course" (id)
FOREIGN KEY (course_id) REFERENCES "Course" (course_id)
ON DELETE SET NULL
ON UPDATE CASCADE
);
CREATE TABLE "DrugIntolerance" (
"Person_id" int,
"DrugEnum_id" int,
person_id int,
drug_enum_id int,
PRIMARY KEY ("Person_id", "DrugEnum_id"),
PRIMARY KEY (person_id, drug_enum_id),
FOREIGN KEY ("Person_id") REFERENCES "Person" (id)
FOREIGN KEY (person_id) REFERENCES "Person" (person_id)
ON DELETE CASCADE
ON UPDATE CASCADE,
FOREIGN KEY ("DrugEnum_id") REFERENCES "DrugEnum" (id)
FOREIGN KEY (drug_enum_id) REFERENCES "DrugEnum" (drug_enum_id)
ON DELETE CASCADE
ON UPDATE CASCADE
);
CREATE TABLE "ActivityLog" (
id int GENERATED ALWAYS AS IDENTITY,
"Person_id" int,
activity_log_id int GENERATED ALWAYS AS IDENTITY,
person_id int,
PRIMARY KEY (activity_log_id, person_id),
action text NOT NULL,
PRIMARY KEY (id, "Person_id"),
FOREIGN KEY ("Person_id") REFERENCES "Person" (id)
FOREIGN KEY (person_id) REFERENCES "Person" (person_id)
ON DELETE NO ACTION
ON UPDATE CASCADE
);