· 8 years ago · Apr 23, 2018, 07:58 PM
1--
2-- skapar alla tables
3--
4
5USE ESHOP;
6
7DROP TABLE IF EXISTS log;
8DROP TABLE IF EXISTS lager;
9DROP TABLE IF EXISTS produktregister;
10DROP TABLE IF EXISTS faktura;
11DROP TABLE IF EXISTS ordrar;
12DROP TABLE IF EXISTS kundregister;
13
14CREATE TABLE kundregister
15(
16 kundnummer INT PRIMARY KEY NOT NULL,
17 namn VARCHAR(20) NOT NULL,
18 telefonnummer VARCHAR(20) NOT NULL,
19 email VARCHAR(20) NOT NULL
20);
21CREATE TABLE ordrar
22(
23 bestallningsid CHAR(4) PRIMARY KEY NOT NULL,
24 produktkod INT NOT NULL,
25 kund_nummer INT NOT NULL,
26 FOREIGN KEY (kund_nummer) REFERENCES kundregister(kundnummer)
27);
28CREATE TABLE faktura
29(
30 bestallnings_id CHAR(4) NOT NULL,
31 FOREIGN KEY (bestallnings_id) REFERENCES ordrar(bestallningsid)
32);
33CREATE TABLE produktregister
34(
35 produktkod INT PRIMARY KEY NOT NULL,
36 produktnamn VARCHAR(20) NOT NULL,
37 kategorier VARCHAR(20) NOT NULL,
38 beskrivningar VARCHAR(200) NOT NULL,
39 pris INT NOT NULL
40);
41CREATE TABLE lager
42(
43 lagersaldo INT NOT NULL,
44 hyllplats VARCHAR(10) NOT NULL,
45 produkt_kod INT NOT NULL,
46 FOREIGN KEY (produkt_kod) REFERENCES produktregister(produktkod)
47);
48CREATE TABLE log
49(
50 `produktkod` INT,
51 `when` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
52 `what` VARCHAR(20)
53);
54
55--
56-- Procedures for eshop
57--
58
59--
60-- Trigger for logging of an ADDED product
61--
62DROP TRIGGER IF EXISTS addTriggerForProdukt;
63
64CREATE TRIGGER addTriggerForProdukt
65AFTER INSERT
66ON produktregister FOR EACH ROW
67 INSERT INTO log (`produktkod`, `what`)
68 VALUES (NEW.produktkod, `added`);
69
70
71--
72-- Trigger for logging of REMOVED product
73--
74DROP TRIGGER IF EXISTS removeTriggerForProdukt;
75
76CREATE TRIGGER removeTriggerForProdukt
77AFTER DELETE
78ON produktregister FOR EACH ROW
79 INSERT INTO log (`produktkod`, `what`)
80 VALUES (produktkod, `removed`);
81
82
83
84--
85-- Trigger for logging of an ADDED account
86--
87DROP TRIGGER IF EXISTS addTriggerForAccount;
88
89CREATE TRIGGER addTriggerForAccount
90AFTER INSERT
91ON kundregister FOR EACH ROW
92 INSERT INTO log (`kundnummer`, `what`)
93 VALUES (NEW.kundnummer, `added`);
94
95
96--
97-- Trigger for logging of REMOVED account
98--
99DROP TRIGGER IF EXISTS removeTriggerForAccount;
100
101CREATE TRIGGER removeTriggerForAccount
102AFTER DELETE
103ON kundregister FOR EACH ROW
104 INSERT INTO log (`kundnummer`, `what`)
105 VALUES (kundnummer, `removed`);
106
107
108--
109-- Create procedure for SELECT * FROM produktregister
110--
111DROP PROCEDURE IF EXISTS showProducts;
112DELIMITER //
113CREATE PROCEDURE showProducts()
114BEGIN
115 SELECT * FROM produktregister;
116END
117//
118DELIMITER ;
119
120--
121-- Create procedure for adding a new product
122--
123DROP PROCEDURE IF EXISTS createProduct;
124DELIMITER //
125CREATE PROCEDURE createProduct(
126 aProduktkod INT,
127 aProduktnamn VARCHAR(20),
128 aKategorier VARCHAR(20),
129 aBeskrivningar VARCHAR(200),
130 aPris INT
131)
132BEGIN
133 INSERT INTO produktregister
134 (produktkod, produktnamn, kategorier, beskrivningar, pris)
135 VALUES
136 (aProduktkod, aProduktnamn, aKategorier, aBeskrivningar, aPris)
137 ;
138END
139//
140DELIMITER ;
141
142--
143-- Create procedure for updating a product
144--
145DROP PROCEDURE IF EXISTS editProduct;
146DELIMITER //
147CREATE PROCEDURE editProduct(
148 aProduktkod INT,
149 aProduktnamn VARCHAR(20),
150 aKategorier DECIMAL(20),
151 aBeskrivning VARCHAR(200),
152 aPris INT
153)
154BEGIN
155 UPDATE eshop SET
156 `produktkod` = aProduktkod,
157 `produktnamn` = aProduktnamn,
158 `kategorier` = aKategorier,
159 `beskrivning` = aBeskrivning,
160 `pris` = aPris
161 WHERE
162 `produktkod` = aProduktkod;
163END
164//
165DELIMITER ;
166
167--
168-- Create procedure for removing a product
169--
170DROP PROCEDURE IF EXISTS deleteProduct;
171DELIMITER //
172CREATE PROCEDURE deleteProduct(IN id INT)
173BEGIN
174 DELETE FROM
175 produktregister
176 WHERE
177 `produktkod` = id;
178END
179//
180DELIMITER ;
181
182--
183-- Create procedure for adding a new product
184--
185DROP PROCEDURE IF EXISTS createAccount;
186DELIMITER //
187CREATE PROCEDURE createAccount(
188 aKundnummer INT,
189 aNamn VARCHAR(20),
190 aTelefonnummer VARCHAR(20),
191 aEmail VARCHAR(20)
192)
193BEGIN
194 INSERT INTO kundregister
195 (kundnummer, namn, telefonnummer, email)
196 VALUES
197 (aKundnummer, aNamn, aTelefonnummer, aEmail)
198 ;
199END
200//
201DELIMITER ;
202
203
204--
205-- Create procedure for showing account details
206--
207DROP PROCEDURE IF EXISTS showAccount;
208DELIMITER //
209CREATE PROCEDURE showAccount(
210 aKundnummer INT
211)
212BEGIN
213 SELECT * FROM kundregister WHERE kundnummer = aKundnummer;
214END
215//
216DELIMITER ;
217
218--
219-- Create procedure for removing a account
220--
221DROP PROCEDURE IF EXISTS deleteAccount;
222DELIMITER //
223CREATE PROCEDURE deleteAccount(
224 aKundnummer INT
225)
226BEGIN
227 DELETE FROM
228 kundregister
229 WHERE
230 kundnummer = aKundnummer;
231END
232//
233DELIMITER ;
234
235-- Create procedure for updating a product
236--
237DROP PROCEDURE IF EXISTS editAccount;
238DELIMITER //
239CREATE PROCEDURE editAccount(
240 aKundnummer INT,
241 aNamn VARCHAR(20),
242 aTelefonnummer VARCHAR(20),
243 aEmail VARCHAR(20)
244)
245BEGIN
246 UPDATE kundregister SET
247 `kundnummer` = aKundnummer,
248 `namn` = aNamn,
249 `telefonnummer` = aTelefonnummer,
250 `email` = aEmail
251 WHERE
252 `kundnummer` = aKundnummer;
253END
254//
255DELIMITER ;
256
257SELECT * FROM kundregister;
258SELECT * FROM produktregister;
259
260
261--
262-- Insert values into database eshop
263-- By Viktor Uvenäs for course Webbprogrammering och databaser, PA1444
264-- 2018-01-18
265--
266
267USE eshop;
268
269--
270-- Makes sure the tables always is blank upon start
271--
272DELETE FROM kundregister;
273DELETE FROM produktregister;
274
275INSERT INTO kundregister
276 (kundnummer, namn, telefonnummer, email)
277VALUES
278 (12345, 'Lisa', '0123456789', 'lisa@kund.se'),
279 (23456, 'Per', '2345678901', 'per@kund.se'),
280 (34567, 'Pelle', '3456789012', 'pelle@kund.se')
281;
282
283INSERT INTO produktregister
284 (produktkod, produktnamn, kategorier, beskrivningar, pris)
285VALUES
286 ( '1234', 'Oerhört God Glass', 'Kylvara', 'Inte din typiska glass, denna glassen är oerhört god', '49'),
287 ( '2345', 'Helt Okej Glass', 'Kylvara', 'Standardglass, den är helt okej', '29'),
288 ( '3456', 'Ganska Kass Glass', 'Kylvara', 'Alternativet för dig som vill uppleva att äta glass, men inte behöva betala för att det ska vara bra glass', '9'),
289 ( '4567', 'Mjöl', 'Torrvara', 'Mjöl som passar till bra till bakning', '39'),
290 ( '5678', 'Vanilj', 'Torrvara', 'Krydda', '44')
291;
292
293SELECT * FROM kundregister;
294SELECT * FROM produktregister;