-
Notifications
You must be signed in to change notification settings - Fork 0
/
Create.sql
186 lines (165 loc) · 4.68 KB
/
Create.sql
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
create database movieDb;
use movieDb;
CREATE TABLE IF NOT EXISTS country (
id INT NOT NULL AUTO_INCREMENT,
name VARCHAR(255) NOT NULL,
PRIMARY KEY (id),
UNIQUE INDEX name (name ASC) VISIBLE
);
CREATE TABLE IF NOT EXISTS city (
id INT NOT NULL AUTO_INCREMENT,
name VARCHAR(45) NOT NULL,
country_id INT NULL DEFAULT NULL,
PRIMARY KEY (id),
INDEX country_id (country_id ASC) VISIBLE,
CONSTRAINT city_ibfk_1
FOREIGN KEY (country_id)
REFERENCES country(id)
ON DELETE CASCADE
ON UPDATE CASCADE
);
CREATE TABLE IF NOT EXISTS director (
id INT NOT NULL AUTO_INCREMENT,
first_name VARCHAR(45) NOT NULL,
last_name VARCHAR(45) NOT NULL,
city_id INT NULL DEFAULT NULL,
PRIMARY KEY (id),
INDEX FK_city_id_ (city_id ASC) VISIBLE,
CONSTRAINT FK_city_id_
FOREIGN KEY (city_id)
REFERENCES city (id)
ON DELETE SET NULL
ON UPDATE CASCADE
);
CREATE TABLE IF NOT EXISTS genre (
id INT NOT NULL AUTO_INCREMENT,
name VARCHAR(45) NOT NULL,
PRIMARY KEY (id),
UNIQUE INDEX name (name ASC) VISIBLE
);
CREATE TABLE IF NOT EXISTS movie (
id INT NOT NULL AUTO_INCREMENT,
title VARCHAR(255) NOT NULL,
year INT NOT NULL,
runtime INT NOT NULL,
rating FLOAT NOT NULL,
votes INT NOT NULL,
image_url VARCHAR(255) NOT NULL,
city_id INT NULL DEFAULT NULL,
PRIMARY KEY (id),
UNIQUE INDEX title (title ASC) VISIBLE,
INDEX FK_city_id__ (city_id ASC) VISIBLE,
CONSTRAINT FK_city_id__
FOREIGN KEY (city_id)
REFERENCES city(id)
ON DELETE SET NULL
ON UPDATE CASCADE
);
CREATE TABLE IF NOT EXISTS movie_director (
movie_id INT NOT NULL,
director_id INT NOT NULL,
PRIMARY KEY (movie_id, director_id),
INDEX director_id (director_id ASC) VISIBLE,
CONSTRAINT movies_director_ibfk_1
FOREIGN KEY (movie_id)
REFERENCES movie (id)
ON DELETE CASCADE,
CONSTRAINT movie_director_ibfk_2
FOREIGN KEY (director_id)
REFERENCES director (id)
ON DELETE CASCADE
);
CREATE TABLE IF NOT EXISTS movie_genre (
movie_id INT NOT NULL,
genre_id INT NOT NULL,
PRIMARY KEY (movie_id, genre_id),
INDEX genre_id (genre_id ASC) VISIBLE,
CONSTRAINT movie_genre_ibfk_1
FOREIGN KEY (movie_id)
REFERENCES movie (id)
ON DELETE CASCADE,
CONSTRAINT movie_genre_ibfk_2
FOREIGN KEY (genre_id)
REFERENCES genre(id)
ON DELETE CASCADE
);
CREATE TABLE IF NOT EXISTS star(
id INT NOT NULL AUTO_INCREMENT,
first_name VARCHAR(45) NOT NULL,
last_name VARCHAR(45) NOT NULL,
city_id INT NULL DEFAULT NULL,
PRIMARY KEY (id),
INDEX FK_city_id (city_id ASC) VISIBLE,
CONSTRAINT FK_city_id
FOREIGN KEY (city_id)
REFERENCES city(id)
ON DELETE SET NULL
ON UPDATE CASCADE
);
CREATE TABLE IF NOT EXISTS movie_star (
movie_id INT NOT NULL,
star_id INT NOT NULL,
PRIMARY KEY (movie_id, star_id),
INDEX star_id (star_id ASC) VISIBLE,
CONSTRAINT movie_star_ibfk_1
FOREIGN KEY (movie_id)
REFERENCES movie(id)
ON DELETE CASCADE,
CONSTRAINT movie_star_ibfk_2
FOREIGN KEY (star_id)
REFERENCES star(id)
ON DELETE CASCADE
);
CREATE TABLE IF NOT EXISTS user (
id INT NOT NULL AUTO_INCREMENT,
first_name VARCHAR(255) NOT NULL,
last_name VARCHAR(45) NOT NULL,
username VARCHAR(45) NOT NULL,
email VARCHAR(45) NOT NULL,
city_id INT NULL DEFAULT NULL,
PRIMARY KEY (id),
UNIQUE INDEX username (username ASC) VISIBLE,
UNIQUE INDEX email (email ASC) VISIBLE,
INDEX FK_city (city_id ASC) VISIBLE,
CONSTRAINT FK_city
FOREIGN KEY (city_id)
REFERENCES city(id)
ON DELETE SET NULL
ON UPDATE CASCADE
);
CREATE TABLE IF NOT EXISTS order_info (
id INT NOT NULL AUTO_INCREMENT,
customer_id INT NOT NULL,
movie_id INT NOT NULL,
order_date DATETIME NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (id),
INDEX customer_id (customer_id ASC) VISIBLE,
INDEX movie_id (movie_id ASC) VISIBLE,
CONSTRAINT order_ibfk_1
FOREIGN KEY (customer_id)
REFERENCES user(id)
ON DELETE CASCADE
ON UPDATE CASCADE,
CONSTRAINT order_ibfk_2
FOREIGN KEY (movie_id)
REFERENCES movie(id)
ON DELETE CASCADE
ON UPDATE CASCADE
);
CREATE TABLE IF NOT EXISTS rating(
user_id INT NOT NULL,
movie_id INT NOT NULL,
rating FLOAT NOT NULL,
PRIMARY KEY (user_id, movie_id),
INDEX movie_id (movie_id ASC) VISIBLE,
CONSTRAINT rating_ibfk_1
FOREIGN KEY (user_id)
REFERENCES user(id)
ON DELETE CASCADE
ON UPDATE CASCADE,
CONSTRAINT rating_ibfk_2
FOREIGN KEY (movie_id)
REFERENCES movie(id)
ON DELETE CASCADE
ON UPDATE CASCADE
);