-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdb_tiw_2022.sql
71 lines (66 loc) · 2.5 KB
/
db_tiw_2022.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
DROP SCHEMA `db_tiw_2022`;
CREATE SCHEMA IF NOT EXISTS `db_tiw_2022`;
USE `db_tiw_2022`;
CREATE TABLE `user` (
`username` VARCHAR(255) PRIMARY KEY,
`password` VARCHAR(255) NOT NULL,
`isClient` BOOLEAN NOT NULL,
`isEmployee` BOOLEAN NOT NULL,
CHECK( `isClient` != `isEmployee`)
);
CREATE TABLE `product` (
`code` INT(127) PRIMARY KEY,
`name` VARCHAR(255) NOT NULL,
`imageUrl` VARCHAR(255)
);
CREATE TABLE `option` (
`code` INT(127) NOT NULL,
`product` INT(127) NOT NULL REFERENCES `product`(`code`)
ON DELETE CASCADE
ON UPDATE CASCADE,
`name` VARCHAR(255) NOT NULL,
`isNormal` BOOLEAN NOT NULL,
`isOnOffer` BOOLEAN NOT NULL,
PRIMARY KEY(`code`, `product`)
);
CREATE TABLE `quote` (
`id` INT(127) PRIMARY KEY AUTO_INCREMENT,
`price` NUMERIC(8,2),
`dateCreation` DATE NOT NULL,
`dateValidation` DATE,
`client` VARCHAR(255) NOT NULL REFERENCES `user`(`username`)
ON DELETE CASCADE
ON UPDATE CASCADE,
`employee` VARCHAR(255) REFERENCES `user`(`username`)
ON DELETE SET NULL
ON UPDATE CASCADE,
`product` INT(127) NOT NULL REFERENCES `product`(`code`)
ON DELETE CASCADE
ON UPDATE CASCADE,
CHECK(`client` != `employee`)
);
CREATE TABLE `optionQuote` (
`quote` INT(127) NOT NULL REFERENCES `quote`(`id`)
ON DELETE CASCADE
ON UPDATE CASCADE,
`product` INT(127) NOT NULL,
`option` INT(127) NOT NULL,
PRIMARY KEY(`quote`, `product`, `option`),
FOREIGN KEY(`option`, `product`) REFERENCES `option`(`code`, `product`)
ON DELETE CASCADE
ON UPDATE CASCADE
);
INSERT INTO `user`(`username`, `password`, `isClient`, `isEmployee`)
VALUES ("admin", "toor", false, true);
INSERT INTO `product`(`code`, `name`, `imageUrl`)
VALUES (1, "prod1", null);
INSERT INTO `product`(`code`, `name`, `imageUrl`)
VALUES (2, "prod2", null);
INSERT INTO `option`(`code`, `product`, `name`, `isNormal`, `isOnOffer`)
VALUES (1, 1, "opzione 1", true, false);
INSERT INTO `option`(`code`, `product`, `name`, `isNormal`, `isOnOffer`)
VALUES (2, 1, "opzione 2", false, true);
INSERT INTO `option`(`code`, `product`, `name`, `isNormal`, `isOnOffer`)
VALUES (1, 2, "opzione 1", true, false);
INSERT INTO `option`(`code`, `product`, `name`, `isNormal`, `isOnOffer`)
VALUES (2, 2, "opzione 2", false, true);