-
Notifications
You must be signed in to change notification settings - Fork 0
/
sql.sql
119 lines (92 loc) · 2.82 KB
/
sql.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
CREATE TABLE Tag
(
id_tag INTEGER AUTO_INCREMENT,
name_tag VARCHAR(20) NULL,
number_images INTEGER NULL,
PRIMARY KEY (id_tag)
);
CREATE TABLE User
(
id_user INTEGER AUTO_INCREMENT,
username VARCHAR(40) NULL,
password VARCHAR(40) NULL,
first_name VARCHAR(20) NULL,
last_name VARCHAR(20) NULL,
email VARCHAR(50) NULL,
url_avatar VARCHAR(32) NULL,
deleted boolean NULL,
level TINYINT NULL,
timestamp_created TIMESTAMP NULL,
timestamp_deleted TIMESTAMP NULL,
PRIMARY KEY (id_user)
);
CREATE TABLE Image
(
id_image INTEGER AUTO_INCREMENT,
id_user INTEGER NULL,
name_image VARCHAR(50) NULL,
description TEXT NULL,
url_image VARCHAR(32) NULL,
deleted boolean NULL,
timestamp_created TIMESTAMP NULL,
timestamp_deleted TIMESTAMP NULL,
PRIMARY KEY (id_image),
FOREIGN KEY R_1 (id_user) REFERENCES User (id_user)
);
CREATE TABLE Tag_Image
(
id_tag INTEGER NOT NULL,
id_image INTEGER NOT NULL,
FOREIGN KEY R_5 (id_tag) REFERENCES Tag (id_tag),
FOREIGN KEY R_9 (id_image) REFERENCES Image (id_image)
);
--
-- Triggers `tag_image`
--
DELIMITER $$
CREATE TRIGGER `count_tag_image` AFTER INSERT ON `tag_image` FOR EACH ROW UPDATE `tag` SET `number_images` = `number_images`+1 WHERE `tag`.`id_tag` = `id_tag`
$$
DELIMITER ;
-- --------------------------------------------------------
CREATE TABLE Category
(
id_category INTEGER AUTO_INCREMENT,
name_category VARCHAR(20) NULL,
number_images INTEGER NULL,
PRIMARY KEY (id_category)
);
CREATE TABLE Image_Category
(
id_image INTEGER NOT NULL,
id_category INTEGER NOT NULL,
FOREIGN KEY R_4 (id_image) REFERENCES Image (id_image),
FOREIGN KEY R_7 (id_category) REFERENCES Category (id_category)
);
--
-- Triggers `image_category`
--
DELIMITER $$
CREATE TRIGGER `count_image_category` AFTER INSERT ON `image_category` FOR EACH ROW UPDATE `category` SET `number_images` = `number_images`+1 WHERE `category`.`id_category` = `id_category`
$$
DELIMITER ;
-- --------------------------------------------------------
CREATE TABLE Stat
(
id_stat INTEGER AUTO_INCREMENT,
id_image INTEGER NOT NULL,
stat TINYINT NULL,
PRIMARY KEY (id_stat),
FOREIGN KEY R_10 (id_image) REFERENCES Image (id_image)
);
CREATE TABLE Comment
(
id_comment INTEGER AUTO_INCREMENT,
id_image INTEGER NOT NULL,
comment TEXT NULL,
id_comment_parent INTEGER NULL,
deleted boolean NULL,
timestamp_created TIMESTAMP NULL,
timestamp_deleted TIMESTAMP NULL,
PRIMARY KEY (id_comment),
FOREIGN KEY R_8 (id_image) REFERENCES Image (id_image)
);