-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathexample2.sql
More file actions
209 lines (155 loc) · 4.9 KB
/
example2.sql
File metadata and controls
209 lines (155 loc) · 4.9 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
create table countries (
pk_country serial,
title text not null,
primary key (pk_country)
);
create table states (
pk_state serial,
fk_country integer not null,
title text not null,
primary key (pk_state),
foreign key (fk_country) references countries(pk_country)
on update cascade on delete cascade
);
create table cities (
pk_city serial,
fk_state integer not null,
title text not null,
primary key (pk_city),
foreign key (fk_state) references states(pk_state)
on update cascade on delete cascade
);
create table streets (
pk_street serial,
fk_city integer not null,
title text not null,
primary key (pk_street),
foreign key (fk_city) references cities(pk_city)
on update cascade on delete cascade
);
create table addresses (
pk_address serial,
fk_street integer not null,
house_no text not null,
apartment_no text,
primary key (pk_address),
foreign key (fk_street) references streets(pk_street)
on update cascade on delete cascade
);
create table genders (
pk_gender serial,
title text not null,
primary key (pk_gender)
);
create table ufms (
pk_ufms serial,
title text not null,
fk_address integer not null,
primary key (pk_ufms),
foreign key (fk_address) references addresses(pk_address)
on update cascade on delete restrict
);
create table passports (
pk_passport serial,
serial_no integer not null,
no integer not null,
open_date date not null,
fk_ufms_instance integer not null,
fk_official_address integer,
primary key (pk_passport),
foreign key (fk_ufms_instance) references ufms(pk_ufms)
on update cascade on delete restrict,
foreign key (fk_official_address) references addresses(pk_address)
on update cascade on delete set null
);
create table persons (
pk_person serial,
surname text not null,
name text not null,
middle_name text,
birth_date date not null,
fk_gender integer not null,
fk_passport integer,
primary key (pk_person),
foreign key (fk_gender) references genders(pk_gender)
on update cascade on delete restrict,
foreign key (fk_passport) references passports(pk_passport)
on update cascade on delete set null
);
create table zags (
pk_zags serial,
title text not null,
fk_address integer not null,
primary key (pk_zags),
foreign key (fk_address) references addresses(pk_address)
on update cascade on delete restrict
);
create table death_causes (
pk_death_cause serial,
title text not null,
primary key (pk_death_cause)
);
create table death_certificates (
pk_death_certificate serial,
certificate_no text not null,
open_date date not null,
fk_zags_instance integer not null,
fk_person integer not null,
death_date date not null,
fk_death_cause integer,
primary key (pk_death_certificate),
foreign key (fk_zags_instance) references zags(pk_zags)
on update cascade on delete restrict,
foreign key (fk_person) references persons(pk_person)
on update cascade on delete restrict,
foreign key (fk_death_cause) references death_causes(pk_death_cause)
on update cascade on delete set null
);
create table graves (
pk_grave serial,
block_no integer not null,
row_no integer not null,
place_no integer not null,
primary key (pk_grave)
);
create table dead_persons (
pk_dead_person serial,
fk_death_certificate integer not null,
funeral_date date,
fk_grave integer,
primary key (pk_dead_person),
foreign key (fk_death_certificate) references death_certificates(pk_death_certificate)
on update cascade on delete restrict,
foreign key (fk_grave) references graves(pk_grave)
on update cascade on delete set null
);
create table professions (
pk_profession serial,
title text not null,
salary numeric not null,
primary key (pk_profession)
);
create table workers (
pk_worker serial,
fk_person integer not null,
phone text,
fk_profession integer not null,
fk_address integer,
primary key (pk_worker),
foreign key (fk_person) references persons(pk_person)
on update cascade on delete cascade,
foreign key (fk_profession) references professions(pk_profession)
on update cascade on delete cascade,
foreign key (fk_address) references addresses(pk_address)
on update cascade on delete set null
);
create table funerals (
pk_funeral serial,
fk_worker integer not null,
fk_dead_person integer not null,
primary key (pk_funeral),
foreign key (fk_worker) references workers(pk_worker)
on update cascade on delete cascade,
foreign key (fk_dead_person) references dead_persons(pk_dead_person)
on update cascade on delete cascade
);