RelationalDesign2: kreiranje6.sql

File kreiranje6.sql, 4.7 KB (added by 175012, 20 hours ago)
Line 
1
2drop schema if exists project_2425;
3
4DROP TABLE IF EXISTS project_2425.Travel_pol CASCADE;
5DROP TABLE IF EXISTS project_2425.Property_pol CASCADE;
6DROP TABLE IF EXISTS project_2425.Auto_pol CASCADE;
7DROP TABLE IF EXISTS project_2425.Payment CASCADE;
8DROP TABLE IF EXISTS project_2425.Policy CASCADE;
9DROP TABLE IF EXISTS project_2425.Covers CASCADE;
10DROP TABLE IF EXISTS project_2425.Package CASCADE;
11DROP TABLE IF EXISTS project_2425.Policy_Holder CASCADE;
12DROP TABLE IF EXISTS project_2425.Customer CASCADE;
13DROP TABLE IF EXISTS project_2425.Vehicle CASCADE;
14DROP TABLE IF EXISTS project_2425.Property CASCADE;
15DROP TABLE IF EXISTS project_2425.Pol_osi CASCADE;
16
17create schema project_2425;
18
19-- Клиент (user account)
20CREATE TABLE project_2425.Customer (
21 c_id BIGSERIAL PRIMARY KEY,
22 name VARCHAR(100) NOT NULL,
23 email VARCHAR(255) UNIQUE NOT NULL,
24 type VARCHAR(50) NOT NULL,
25 pass VARCHAR(255) NOT NULL
26);
27
28-- Полиса носител (осигуреник кој склучува договор)
29CREATE TABLE project_2425.Pol_dog (
30 d_embg CHAR(13) PRIMARY KEY, -- личен број
31 name VARCHAR(100) NOT NULL,
32 surname VARCHAR(100) NOT NULL,
33 birthdate DATE NOT NULL,
34 kontakt VARCHAR(100),
35 c_id BIGINT UNIQUE NOT NULL,
36 CONSTRAINT fk_ph_customer
37 FOREIGN KEY (c_id) REFERENCES project_2425.Customer(c_id)
38);
39
40-- Пакети (типови на осигурување)
41CREATE TABLE project_2425.Package (
42 code VARCHAR(30) PRIMARY KEY,
43 title VARCHAR(120) NOT NULL,
44 type_pol VARCHAR(50) NOT NULL,
45 total DECIMAL(12,2) NOT NULL,
46 value DECIMAL(12,2) NOT NULL
47);
48
49-- Покритија
50CREATE TABLE project_2425.Covers (
51 cov_id BIGSERIAL PRIMARY KEY,
52 cov_type VARCHAR(80) NOT NULL,
53 cov_amount DECIMAL(12,2) NOT NULL,
54 package_code VARCHAR(30) NOT NULL,
55 CONSTRAINT fk_covers_package
56 FOREIGN KEY (package_code) REFERENCES project_2425.Package(code)
57);
58
59-- Полиси
60CREATE TABLE project_2425.Policy (
61 p_id BIGSERIAL PRIMARY KEY,
62 s_date DATE NOT NULL,
63 e_date DATE NOT NULL,
64 package_code VARCHAR(30) NOT NULL,
65 d_embg CHAR(13) NOT NULL,
66 CONSTRAINT fk_policy_package
67 FOREIGN KEY (package_code) REFERENCES project_2425.Package(code),
68 CONSTRAINT fk_policy_holder
69 FOREIGN KEY (d_embg) REFERENCES project_2425.Pol_dog(d_embg)
70);
71
72-- Плаќања
73CREATE TABLE project_2425.Payment (
74 payment_num BIGSERIAL PRIMARY KEY,
75 visa_number VARCHAR(30),
76 p_date DATE NOT NULL,
77 p_amount DECIMAL(12,2) NOT NULL,
78 policy_id BIGINT NOT NULL,
79 CONSTRAINT fk_payment_policy
80 FOREIGN KEY (policy_id) REFERENCES project_2425.Policy(p_id)
81);
82
83-- Возила
84CREATE TABLE project_2425.Vehicle (
85 v_id BIGSERIAL PRIMARY KEY,
86 model VARCHAR(80) NOT NULL,
87 marka VARCHAR(80) NOT NULL,
88 type VARCHAR(50),
89 license_plate VARCHAR(20) UNIQUE NOT NULL
90);
91
92-- Неподвижен имот
93CREATE TABLE project_2425.Property (
94 prop_id BIGSERIAL PRIMARY KEY,
95 address VARCHAR(200) NOT NULL,
96 floor INT,
97 year_build INT,
98 security bool
99);
100
101-- Осигурено лице (за патничко осигурување)
102CREATE TABLE project_2425.Pol_osi (
103 o_embg CHAR(13) PRIMARY KEY,
104 name VARCHAR(100) NOT NULL,
105 surname VARCHAR(100) NOT NULL,
106 birthdate DATE NOT NULL,
107 kontakt VARCHAR(100)
108);
109
110
111-- Авто-полиси (поврзување Policy ↔️ Vehicle)
112CREATE TABLE project_2425.Auto_pol (
113 a_id BIGSERIAL PRIMARY KEY,
114 pol_id BIGINT NOT NULL,
115 v_id BIGINT NOT NULL,
116 CONSTRAINT fk_autopol_policy FOREIGN KEY (pol_id) REFERENCES project_2425.Policy(p_id),
117 CONSTRAINT fk_autopol_vehicle FOREIGN KEY (v_id) REFERENCES project_2425.Vehicle(v_id),
118 CONSTRAINT uq_autopol UNIQUE (pol_id, v_id)
119);
120
121-- Property-полиси (поврзување Policy ↔️ Property)
122CREATE TABLE project_2425.Property_pol (
123 pr_id BIGSERIAL PRIMARY KEY,
124 pol_id BIGINT NOT NULL,
125 prop_id BIGINT NOT NULL,
126 CONSTRAINT fk_proppol_policy FOREIGN KEY (pol_id) REFERENCES project_2425.Policy(p_id),
127 CONSTRAINT fk_proppol_property FOREIGN KEY (prop_id) REFERENCES project_2425.Property(prop_id),
128 CONSTRAINT uq_proppol UNIQUE (pol_id, prop_id)
129);
130
131-- Travel-полиси (поврзување Policy ↔️ осигурено лице)
132CREATE TABLE project_2425.Travel_pol (
133 tr_id BIGSERIAL PRIMARY KEY,
134 pol_id BIGINT NOT NULL,
135 o_embg CHAR(13) NOT NULL,
136 CONSTRAINT fk_travelpol_policy FOREIGN KEY (pol_id) REFERENCES project_2425.Policy(p_id),
137 CONSTRAINT fk_travelpol_person FOREIGN KEY (o_embg) REFERENCES project_2425.Pol_osi(o_embg),
138 CONSTRAINT uq_travelpol UNIQUE (pol_id, o_embg)
139);