-- Таблица "Страховой агент"
CREATE TABLE insurance_agents
(
id SERIAL PRIMARY KEY,
last_name CHARACTER VARYING(30) NOT NULL CHECK(last_name != ''),
first_name CHARACTER VARYING(30) NOT NULL CHECK(first_name != ''),
middle_name CHARACTER VARYING(30) NOT NULL CHECK(middle_name != ''),
phone CHARACTER VARYING(18) NOT NULL UNIQUE CHECK(phone != ''),
email CHARACTER VARYING(30) NOT NULL CHECK(email != '') UNIQUE,
insurance_percent REAL CHECK((insurance_percent >= 0.2) AND (insurance_percent <= 1)) NOT NULL
);
-- Таблица "Страхователь"
CREATE TABLE insurants
(
id SERIAL PRIMARY KEY,
last_name CHARACTER VARYING(30) NOT NULL CHECK(last_name != ''),
first_name CHARACTER VARYING(30) NOT NULL CHECK(first_name != ''),
middle_name CHARACTER VARYING(30) NOT NULL CHECK(middle_name != ''),
phone CHARACTER VARYING(18) NOT NULL UNIQUE CHECK(phone != ''),
email CHARACTER VARYING(30) NOT NULL CHECK(email != '') UNIQUE
);
-- Таблица "Выгодоприобретатель"
CREATE TABLE beneficiaries
(
id SERIAL PRIMARY KEY,
last_name CHARACTER VARYING(30) NOT NULL CHECK(last_name != ''),
first_name CHARACTER VARYING(30) NOT NULL CHECK(first_name != ''),
middle_name CHARACTER VARYING(30) NOT NULL CHECK(middle_name != ''),
phone CHARACTER VARYING(18) NOT NULL UNIQUE CHECK(phone != ''),
email CHARACTER VARYING(30) NOT NULL CHECK(email != '') UNIQUE
);
-- Таблица "Страховой полис"
CREATE TABLE insuranсe_policies
(
id SERIAL PRIMARY KEY,
series_and_number CHARACTER VARYING(10) NOT NULL UNIQUE CHECK(series_and_number != ''),
object_insurance CHARACTER VARYING(30) NOT NULL CHECK(object_insurance != ''),
insurance_amount NUMERIC(8,2) NOT NULL,
insurance_premium NUMERIC(8,2) NOT NULL,
date_in DATE NOT NULL,
date_out DATE NOT NULL,
id_agent INTEGER,
id_insurant INTEGER,
id_beneficiary INTEGER,
FOREIGN KEY (id_agent) REFERENCES insurance_agents (id) ON DELETE CASCADE ON UPDATE CASCADE,
FOREIGN KEY (id_insurant) REFERENCES insurants (id) ON DELETE CASCADE ON UPDATE CASCADE,
FOREIGN KEY (id_beneficiary) REFERENCES beneficiaries (id) ON DELETE CASCADE ON UPDATE CASCADE
);