· 6 years ago · May 11, 2019, 12:52 PM
1DROP DATABASE IF EXISTS vp;
2CREATE DATABASE vp;
3USE vp;
4
5CREATE TABLE Toimipiste(
6 toimipiste_id INT PRIMARY KEY,
7 nimi VARCHAR(40),
8 lahiosoite VARCHAR(40),
9 postitoimipaikka VARCHAR(30),
10 postinro CHAR(5),
11 email VARCHAR(50),
12 puhelinnro VARCHAR(15));
13CREATE TABLE Asiakas(
14 asiakas_id INT PRIMARY KEY,
15 etunimi VARCHAR(20),
16 sukunimi VARCHAR(40),
17 lahiosoite VARCHAR(40),
18 postitoimipaikka VARCHAR(30),
19 postinro CHAR(5),
20 email VARCHAR(50),
21 puhelinnro VARCHAR(15));
22CREATE TABLE Varaus(
23 varaus_id INT PRIMARY KEY,
24 asiakas_id INT,
25 toimipiste_id INT,
26 varattu_pvm DATETIME,
27 vahvistus_pvm DATETIME,
28 varattu_alkupvm DATETIME,
29 varattu_loppupvm DATETIME,
30 FOREIGN KEY(toimipiste_id) REFERENCES Toimipiste(toimipiste_id),
31 FOREIGN KEY(asiakas_id) REFERENCES Asiakas(asiakas_id)
32);
33CREATE TABLE Lasku(
34 lasku_id INT PRIMARY KEY,
35 varaus_id INT,
36 asiakas_id INT,
37 nimi VARCHAR(60),
38 lahiosoite VARCHAR(40),
39 postitoimipaikka VARCHAR(30),
40 postinro CHAR(5),
41 summa decimal(8,2) NOT NULL,
42 alv decimal(8,2) NOT NULL,
43 FOREIGN KEY(varaus_id) REFERENCES Varaus(varaus_id),
44 FOREIGN KEY(asiakas_id) REFERENCES Asiakas(asiakas_id) ON DELETE CASCADE
45 );
46CREATE TABLE Palvelu(
47 palvelu_id INT PRIMARY KEY,
48 toimipiste_id INT,
49 nimi VARCHAR(40),
50 tyyppi INT,
51 kuvaus VARCHAR(255),
52 hinta decimal(8,2) NOT NULL,
53 alv decimal(8,2) NOT NULL,
54 FOREIGN KEY(toimipiste_id) REFERENCES Toimipiste(toimipiste_id) ON DELETE CASCADE
55 );
56CREATE TABLE Varauksen_palvelut(
57 varaus_id INT,
58 palvelu_id INT,
59 lkm INT NOT NULL,
60 PRIMARY KEY(palvelu_id, varaus_id),
61 FOREIGN KEY(varaus_id) REFERENCES Varaus(varaus_id),
62 FOREIGN KEY(palvelu_id) REFERENCES Palvelu(palvelu_id) ON DELETE CASCADE
63 );
64
65CREATE INDEX Toimipiste_nimi_index
66 ON Toimipiste(nimi);
67
68CREATE INDEX Asiakas_sukunimi_index
69 ON Asiakas(sukunimi);
70
71CREATE INDEX Asiakas_etunimi_index
72 ON Asiakas(etunimi);
73
74CREATE INDEX Lasku_nimi_index
75 ON Lasku(nimi);
76
77CREATE UNIQUE INDEX Lasku_varaus_id_index
78 ON Lasku(varaus_id);
79
80CREATE INDEX Palvelu_nimi_index
81 ON Palvelu(nimi);
82
83CREATE INDEX vp_varaus_id_index
84 ON Varauksen_palvelut(varaus_id);
85
86CREATE INDEX vp_palvelu_id_index
87 ON Varauksen_palvelut(palvelu_id);
88
89CREATE INDEX palvelu_toimipiste_id_index
90 ON Palvelu(toimipiste_id);
91
92CREATE INDEX Lasku_asiakas_id_index
93 ON Lasku(asiakas_id);
94
95CREATE INDEX varaus_toimipiste_id_index
96 ON Varaus(toimipiste_id);
97
98CREATE INDEX varaus_asiakas_id_index
99 ON Varaus(asiakas_id);