· 9 years ago · Dec 08, 2016, 12:43 PM
1/* ---------------------------------------------------- */
2/* Generated by Enterprise Architect Version 12.1 */
3/* Created On : 10-nov-2016 14:50.49 */
4/* DBMS : PostgreSQL */
5/* ---------------------------------------------------- */
6
7/* Drop Sequences for Autonumber Columns */
8
9
10
11/* Drop Tables */
12
13DROP TABLE IF EXISTS Isiku_seisundi_liik CASCADE
14;
15
16DROP TABLE IF EXISTS Kauba_seisundi_liik CASCADE
17;
18
19DROP TABLE IF EXISTS Kauba_kategooria CASCADE
20;
21
22DROP TABLE IF EXISTS Kauba_brand CASCADE
23;
24
25DROP TABLE IF EXISTS Kliendi_seisundi_liik CASCADE
26;
27
28DROP TABLE IF EXISTS Tootaja_seisundi_liik CASCADE
29;
30
31DROP TABLE IF EXISTS Riik CASCADE
32;
33
34DROP TABLE IF EXISTS Amet CASCADE
35;
36
37DROP TABLE IF EXISTS Isik CASCADE
38;
39
40DROP TABLE IF EXISTS Tootaja CASCADE
41;
42
43DROP TABLE IF EXISTS Kaup CASCADE
44;
45
46DROP TABLE IF EXISTS Klient CASCADE
47;
48
49/* Create Tables */
50
51CREATE TABLE Isiku_seisundi_liik
52(
53 isiku_seisundi_kood varchar(10) NOT NULL,
54 nimetus varchar(50) NOT NULL,
55 kirjeldus varchar(255) NULL,
56 CONSTRAINT PK_Isiku_seisundi_liik PRIMARY KEY (isiku_seisundi_kood),
57 CONSTRAINT UQ_Isiku_seisundi_liik_nimetus UNIQUE (nimetus),
58 CONSTRAINT chk_Isiku_seisundiliik_kirjeldus_ei_koosne_tyhikutest_pole_tyhi CHECK (kirjeldus!~'^[[:space:]]*$'),
59 CONSTRAINT chk_Isiku_seisundi_liik_nimetus_ei_koosne_tyhikutest_pole_tyhi CHECK (nimetus!~'^[[:space:]]*$')
60)
61;
62
63CREATE TABLE Kauba_seisundi_liik
64(
65 kauba_seisundi_kood varchar(10) NOT NULL,
66 nimetus varchar(50) NOT NULL,
67 kirjeldus varchar(255) NULL,
68 CONSTRAINT PK_kauba_seisundi_liik PRIMARY KEY (kauba_seisundi_kood),
69 CONSTRAINT UQ_kauba_seisundi_liik_nimetus UNIQUE (nimetus),
70 CONSTRAINT chk_Kauba_seisundi_liik_nimetus_ei_koosne_tyhikutest_pole_tyhi CHECK (nimetus!~'^[[:space:]]*$'),
71 CONSTRAINT chk_Kauba_seisundiliik_kirjeldus_ei_koosne_tyhikutest_pole_tyhi CHECK (kirjeldus!~'^[[:space:]]*$')
72)
73;
74
75CREATE TABLE Kauba_kategooria
76(
77 kauba_kategooria_kood varchar(10) NOT NULL,
78 nimetus varchar(50) NOT NULL,
79 kirjeldus varchar(255) NULL,
80 CONSTRAINT PK_kauba_kategooria PRIMARY KEY (kauba_kategooria_kood),
81 CONSTRAINT UQ_kauba_kategooria_nimetus UNIQUE (nimetus),
82 CONSTRAINT chk_Kauba_kategooria_kirjeldus_ei_koosne_tyhikutest_pole_tyhi CHECK (kirjeldus!~'^[[:space:]]*$'),
83 CONSTRAINT chk_Kauba_kategooria_nimetus_ei_koosne_tyhikutest_pole_tyhi CHECK (nimetus!~'^[[:space:]]*$')
84)
85;
86
87CREATE TABLE Kauba_brand
88(
89 kauba_brandi_kood varchar(10) NOT NULL,
90 nimetus varchar(50) NOT NULL,
91 kirjeldus varchar(255) NULL,
92 CONSTRAINT PK_kauba_brand PRIMARY KEY (kauba_brandi_kood),
93 CONSTRAINT UQ_kauba_brand_nimetus UNIQUE (nimetus),
94 CONSTRAINT chk_Kauba_brand_kirjeldus_ei_koosne_tyhikutest_pole_tyhi CHECK (kirjeldus!~'^[[:space:]]*$'),
95 CONSTRAINT chk_Kauba_brand_nimetus_ei_koosne_tyhikutest_pole_tyhi CHECK (nimetus!~'^[[:space:]]*$')
96)
97;
98
99CREATE TABLE Kliendi_seisundi_liik
100(
101 kliendi_seisundi_kood varchar(10) NOT NULL,
102 nimetus varchar(50) NOT NULL,
103 kirjeldus varchar(255) NULL,
104 CONSTRAINT PK_Kliendi_seisundi_liik PRIMARY KEY (kliendi_seisundi_kood),
105 CONSTRAINT UQ_Kliendi_seisundi_liik_nimetus UNIQUE (nimetus),
106 CONSTRAINT chk_Kliendi_seisundiliik_nimetus_ei_koosne_tyhikutest_pole_tyhi CHECK (nimetus!~'^[[:space:]]*$'),
107 CONSTRAINT chk_Kliendi_seisundi_kirjeldus_ei_koosne_tyhikutest_pole_tyhi CHECK (kirjeldus!~'^[[:space:]]*$')
108)
109;
110
111CREATE TABLE Tootaja_seisundi_liik
112(
113 tootaja_seisundi_kood varchar(10) NOT NULL,
114 nimetus varchar(50) NOT NULL,
115 kirjeldus varchar(255) NULL,
116 CONSTRAINT PK_Tootaja_seisundi_liik PRIMARY KEY (tootaja_seisundi_kood),
117 CONSTRAINT UQ_Tootaja_seisundi_liik_nimetus UNIQUE (nimetus),
118 CONSTRAINT chk_Tootaja_seisund_kirjeldus_ei_koosne_tyhikutest_pole_tyhi CHECK (kirjeldus!~'^[[:space:]]*$'),
119 CONSTRAINT chk_Tootaja_seisundiliik_nimetus_ei_koosne_tyhikutest_pole_tyhi CHECK (nimetus!~'^[[:space:]]*$')
120)
121;
122
123CREATE TABLE Riik
124(
125 riigi_kood varchar(3) NOT NULL,
126 nimetus varchar(50) NOT NULL,
127 kirjeldus varchar(255) NULL,
128 CONSTRAINT PK_Riik PRIMARY KEY (riigi_kood),
129 CONSTRAINT UQ_Riik_nimetus UNIQUE (nimetus),
130 CONSTRAINT chk_Riik_nimetus_ei_koosne_tyhikutest_pole_tyhi CHECK (nimetus!~'^[[:space:]]*$'),
131 CONSTRAINT chk_Riik_riigi_kood_kolm_t2hem2rki_pikk_koosneb_suurt2htedest CHECK (riigi_kood~'^[A-Z]{3}$'),
132 CONSTRAINT chk_Riik_kirjeldus_ei_koosne_tyhikutest_pole_tyhi CHECK (kirjeldus!~'^[[:space:]]*$')
133)
134;
135
136CREATE TABLE Amet
137(
138 ameti_kood varchar(10) NOT NULL,
139 nimetus varchar(50) NOT NULL,
140 kirjeldus varchar(255) NULL,
141 CONSTRAINT PK_Amet PRIMARY KEY (ameti_kood),
142 CONSTRAINT UQ_Amet_nimetus UNIQUE (nimetus),
143 CONSTRAINT chk_Amet_nimetus_ei_koosne_tyhikutest_pole_tyhi CHECK (nimetus!~'^[[:space:]]*$'),
144 CONSTRAINT chk_Amet_kirjeldus_ei_koosne_tyhikutest_pole_tyhi CHECK (kirjeldus!~'^[[:space:]]*$')
145)
146;
147
148CREATE TABLE Isik
149(
150 isiku_id serial NOT NULL,
151 isikukoodi_riik varchar(3) NOT NULL,
152 isiku_seisundi_kood varchar(10) NOT NULL DEFAULT 'ELUS',
153 isikukood varchar(50) NOT NULL,
154 e_meil varchar(254) NOT NULL,
155 synni_kp date NOT NULL,
156 parool varchar(60) NOT NULL,
157 reg_aeg timestamp NOT NULL DEFAULT LOCALTIMESTAMP(0),
158 elukoht varchar(150) NOT NULL,
159 eesnimi varchar(850) NOT NULL,
160 perenimi varchar(850) NULL,
161 CONSTRAINT PK_Isik PRIMARY KEY (isiku_id),
162 CONSTRAINT UQ_Isik_e_meil UNIQUE (e_meil),
163 CONSTRAINT UQ_Isik_isikukood_Isikukoodi_riik UNIQUE (isikukood,isikukoodi_riik),
164 CONSTRAINT chk_Isik_eesnimi_ei_koosne_tyhikutest_pole_tyhi CHECK (eesnimi!~'^[[:space:]]*$'),
165 CONSTRAINT chk_Isik_synni_kp_v2iksem_reg_aeg CHECK (synni_kp<reg_aeg),
166 CONSTRAINT chk_Isik_elukoht_ei_koosne_tyhikutest_pole_tyhi_string CHECK (elukoht!~'^[[:space:]]*$'),
167 CONSTRAINT chk_Isik_emeil_peab_vastama_standarditele CHECK (e_meil~'^[a-zA-Z0-9.!#$%&*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$'),
168 CONSTRAINT chk_Isik_reg_aja_vahemik_2010_2100 CHECK (reg_aeg BETWEEN '2010-01-01' AND '2100-01-01'),
169 CONSTRAINT chk_Isik_elukoht_ei_ole_ainult_numbritest_koosnev_string CHECK (elukoht!~'^[0-9]+$'),
170 CONSTRAINT chk_Isik_isikukoodi_riik_EST_siis_isikukood_eesti_isikukood CHECK (NOT (isikukoodi_riik='EST') OR isikukood~'^([3-6]{1}[[:digit:]]
171 {2}[0-1]{1}[[:digit:]]{1}[0-3]{1}[[:digit:]]{5})$'),
172 CONSTRAINT FK_Isik_Riik FOREIGN KEY (isikukoodi_riik) REFERENCES Riik (riigi_kood) ON DELETE No Action ON UPDATE Cascade,
173 CONSTRAINT FK_Isik_Isiku_seisundi_liik FOREIGN KEY (isiku_seisundi_kood) REFERENCES Isiku_seisundi_liik (isiku_seisundi_kood) ON DELETE No Action ON UPDATE Cascade
174) WITH (fillfactor=90)
175;
176CREATE INDEX IXFK_Isik_Isiku_seisundi_liik ON Isik (isiku_seisundi_kood ASC)
177;
178CREATE INDEX IXFK_Isik_Riik ON Isik (isikukoodi_riik ASC)
179;
180
181
182CREATE TABLE Tootaja
183(
184 isiku_id integer NOT NULL,
185 ameti_kood varchar(10) NOT NULL,
186 tootaja_seisundi_kood varchar(10) NOT NULL DEFAULT 'TÖÖL',
187 CONSTRAINT PK_Tootaja PRIMARY KEY (isiku_id),
188 CONSTRAINT FK_Tootaja_Amet FOREIGN KEY (ameti_kood) REFERENCES Amet (ameti_kood) ON DELETE No Action ON UPDATE Cascade,
189 CONSTRAINT FK_Tootaja_Isik FOREIGN KEY (isiku_id) REFERENCES Isik (isiku_id) ON DELETE Cascade ON UPDATE Cascade,
190 CONSTRAINT FK_Tootaja_Tootaja_seisundi_liik FOREIGN KEY (tootaja_seisundi_kood) REFERENCES Tootaja_seisundi_liik (tootaja_seisundi_kood) ON DELETE No Action ON UPDATE Cascade
191)
192;
193CREATE INDEX IXFK_Tootaja_Amet ON Tootaja (ameti_kood ASC)
194;
195CREATE INDEX IXFK_Tootaja_Tootaja_seisundi_liik ON Tootaja (tootaja_seisundi_kood ASC)
196;
197
198
199CREATE TABLE Kaup
200(
201 kauba_kood integer NOT NULL,
202 tootaja_id integer NOT NULL,
203 kauba_brandi_kood varchar(10) NOT NULL,
204 kauba_kategooria_kood varchar(10) NOT NULL,
205 kauba_seisundi_kood varchar(10) NOT NULL DEFAULT 'OOTEL',
206 nimetus varchar(50) NOT NULL,
207 hind decimal(19,4) NOT NULL,
208 reg_aeg timestamp NOT NULL DEFAULT LOCALTIMESTAMP(0),
209 kirjeldus varchar(1000) DEFAULT 'Kirjeldus puudub',
210 CONSTRAINT PK_kaup PRIMARY KEY (kauba_kood),
211 CONSTRAINT UQ_Kaup_nimetus UNIQUE (nimetus),
212 CONSTRAINT chk_Kaup_reg_aeg_vahemik_2010_2100 CHECK (reg_aeg BETWEEN '2010-01-01' AND '2100-01-01'),
213 CONSTRAINT chk_Kaup_nimetus_ei_koosne_tyhikutest_pole_tyhi CHECK (nimetus!~'^[[:space:]]*$'),
214 CONSTRAINT chk_Kaup_hind_peab_olema_positiivne CHECK (hind>0),
215 CONSTRAINT FK_Kaup_Tootaja FOREIGN KEY (tootaja_id) REFERENCES Tootaja (isiku_id) ON DELETE No Action ON UPDATE Cascade,
216 CONSTRAINT FK_Kaup_Kauba_seisundi_liik FOREIGN KEY (kauba_seisundi_kood) REFERENCES Kauba_seisundi_liik (kauba_seisundi_kood) ON DELETE No Action ON UPDATE Cascade,
217 CONSTRAINT FK_Kaup_Kauba_kategooria FOREIGN KEY (kauba_kategooria_kood) REFERENCES Kauba_kategooria (kauba_kategooria_kood) ON DELETE No Action ON UPDATE Cascade,
218 CONSTRAINT FK_Kaup_Kauba_brand FOREIGN KEY (kauba_brandi_kood) REFERENCES Kauba_brand (kauba_brandi_kood) ON DELETE No Action ON UPDATE Cascade
219) WITH (fillfactor=90)
220;
221CREATE INDEX IXFK_Kaup_kauba_brand ON Kaup (kauba_brandi_kood ASC)
222;
223CREATE INDEX IXFK_Kaup_kauba_kategooria ON Kaup (kauba_kategooria_kood ASC)
224;
225CREATE INDEX IXFK_Kaup_kauba_seisundi_liik ON Kaup (kauba_seisundi_kood ASC)
226;
227CREATE INDEX IXFK_Kaup_Tootaja ON Kaup (tootaja_id ASC)
228;
229
230
231CREATE TABLE Klient
232(
233 isiku_id integer NOT NULL,
234 kliendi_seisundi_kood varchar(10) NOT NULL DEFAULT 'AKTIIVNE',
235 on_nous_otseturundusega boolean NOT NULL DEFAULT FALSE,
236 CONSTRAINT PK_Klient PRIMARY KEY (isiku_id),
237 CONSTRAINT FK_Klient_Isik FOREIGN KEY (isiku_id) REFERENCES Isik (isiku_id) ON DELETE Cascade ON UPDATE Cascade,
238 CONSTRAINT FK_Klient_Kliendi_seisundi_liik FOREIGN KEY (kliendi_seisundi_kood) REFERENCES Kliendi_seisundi_liik (kliendi_seisundi_kood) ON DELETE No Action ON UPDATE Cascade
239)
240;
241CREATE INDEX IXFK_Klient_Kliendi_seisundi_liik ON Klient (kliendi_seisundi_kood ASC)
242;