-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathSQL_CREATETABLE.sql
More file actions
64 lines (62 loc) · 2.37 KB
/
SQL_CREATETABLE.sql
File metadata and controls
64 lines (62 loc) · 2.37 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
DROP TABLE IF EXISTS Roads CASCADE;
DROP TABLE IF EXISTS Hotels CASCADE;
DROP TABLE IF EXISTS Persons CASCADE;
DROP TABLE IF EXISTS Cities CASCADE;
DROP TABLE IF EXISTS Towns CASCADE;
DROP TABLE IF EXISTS Areas CASCADE;
DROP TABLE IF EXISTS Countries CASCADE;
create table Countries(
name character varying (80) PRIMARY KEY
);
create table Areas(
country character varying (80) REFERENCES countries(name),
name character varying (80),
population integer CHECK (population > 0),
PRIMARY KEY (country,name)
);
create table Towns(
country character varying (80),
name character varying (80),
FOREIGN KEY (country,name) REFERENCES areas(country,name),
PRIMARY KEY (country,name)
);
create table Cities(
country character varying (80),
name character varying (80),
visitbonus integer CHECK (visitbonus >= 0),
FOREIGN KEY (country,name) REFERENCES areas(country,name),
PRIMARY KEY (country,name)
);
create table Persons(
country character varying (80) REFERENCES countries(name),
personnumber char (11) CHECK (personnumber ~ '[0-9]{6}-[0-9]{4}' OR personnumber = ' '),
name character varying (80),
locationcountry character varying (80),
locationarea character varying (80),
budget numeric CHECK (budget >= 0),
FOREIGN KEY (locationcountry,locationarea) REFERENCES areas(country,name),
PRIMARY KEY (country,personnumber)
);
create table Hotels(
name character varying (80),
locationcountry character varying (80),
locationname character varying (80),
ownercountry character varying (80),
ownerpersonnumber character varying (13),
FOREIGN KEY (locationcountry,locationname) REFERENCES cities(country,name),
FOREIGN KEY (ownercountry,ownerpersonnumber) REFERENCES persons(country,personnumber),
PRIMARY KEY (locationcountry,locationname,ownercountry,ownerpersonnumber )
);
create table Roads(
fromcountry character varying (80),
fromarea character varying (80),
tocountry character varying (80),
toarea character varying (80),
ownercountry character varying (80),
ownerpersonnumber character varying (13),
roadtax numeric CHECK (roadtax >= 0),
FOREIGN KEY (fromcountry,fromarea) REFERENCES areas(country,name),
FOREIGN KEY (tocountry,toarea) REFERENCES areas(country,name),
FOREIGN KEY (ownercountry,ownerpersonnumber) REFERENCES persons(country,personnumber),
PRIMARY KEY (fromcountry,fromarea,tocountry,toarea, ownercountry, ownerpersonnumber)
);