1 |
|
---|
2 | drop schema if exists project_2425;
|
---|
3 |
|
---|
4 | DROP TABLE IF EXISTS project_2425.Travel_pol CASCADE;
|
---|
5 | DROP TABLE IF EXISTS project_2425.Property_pol CASCADE;
|
---|
6 | DROP TABLE IF EXISTS project_2425.Auto_pol CASCADE;
|
---|
7 | DROP TABLE IF EXISTS project_2425.Payment CASCADE;
|
---|
8 | DROP TABLE IF EXISTS project_2425.Policy CASCADE;
|
---|
9 | DROP TABLE IF EXISTS project_2425.Covers CASCADE;
|
---|
10 | DROP TABLE IF EXISTS project_2425.Package CASCADE;
|
---|
11 | DROP TABLE IF EXISTS project_2425.Policy_Holder CASCADE;
|
---|
12 | DROP TABLE IF EXISTS project_2425.Customer CASCADE;
|
---|
13 | DROP TABLE IF EXISTS project_2425.Vehicle CASCADE;
|
---|
14 | DROP TABLE IF EXISTS project_2425.Property CASCADE;
|
---|
15 | DROP TABLE IF EXISTS project_2425.Pol_osi CASCADE;
|
---|
16 |
|
---|
17 | create schema project_2425;
|
---|
18 |
|
---|
19 | -- Клиент (user account)
|
---|
20 | CREATE 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 | -- Полиса носител (осигуреник кој склучува договор)
|
---|
29 | CREATE 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 | -- Пакети (типови на осигурување)
|
---|
41 | CREATE 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 | -- Покритија
|
---|
50 | CREATE 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 | -- Полиси
|
---|
60 | CREATE 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 | -- Плаќања
|
---|
73 | CREATE 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 | -- Возила
|
---|
84 | CREATE 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 | -- Неподвижен имот
|
---|
93 | CREATE 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 | -- Осигурено лице (за патничко осигурување)
|
---|
102 | CREATE 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)
|
---|
112 | CREATE 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)
|
---|
122 | CREATE 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 ↔️ осигурено лице)
|
---|
132 | CREATE 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 | ); |
---|