-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathWEBSHOP create script.sql
More file actions
122 lines (103 loc) · 4.29 KB
/
Copy pathWEBSHOP create script.sql
File metadata and controls
122 lines (103 loc) · 4.29 KB
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
USE master
GO
--DROP DATABASE WEBSHOP
--GO
CREATE DATABASE WEBSHOP
GO
USE WEBSHOP
GO
/* TABLE CATEGORIE
*
* "Er is een categorie '<categorienaam>'."
*/
CREATE TABLE MERK (
MERKNAAM VARCHAR(15) NOT NULL,
CONSTRAINT PK_MERK PRIMARY KEY (MERKNAAM),
CONSTRAINT CK_MERK CHECK (LEN(MERKNAAM) >=5)
)
/* TABLE GEBRUIKER
*
* "Gebruiker <gebruikersnaam> heeft als wachtwoord '<wachtwoord>'."
* "Gebruiker <gebruikersnaam> heeft als voornaam <voornaam>."
* "Gebruiker <gebruikersnaam> heeft als tussenvoegsel <tussenvoegsel>."
* "Gebruiker <gebruikersnaam> heeft als achternaam <achternaam>."
* "Gebruiker <gebruikersnaam> is van de sexe <sexe>."
* "Gebruiker <gebruikersnaam> heeft als emailadres '<emailadres>'."
* "Gebruiker <gebruikersnaam> woont in de straat '<straatnaam>'."
* "Het huisnummer van gebruiker <gebruikersnaam> is <huisnummer>."
* "De postcode van gebruiker <gebruikersnaam> is <postcode>."
* "De woonplaats van gebruiker <gebruikersnaam> is <plaatsnaam>."
*/
CREATE TABLE GEBRUIKER (
GEBRUIKERSNAAM VARCHAR(15) NOT NULL,
VOORNAAM VARCHAR(125) NOT NULL,
TUSSENVOEGSEL VARCHAR(30) NULL,
ACHTERNAAM VARCHAR(125) NOT NULL,
STRAATNAAM VARCHAR(125) NOT NULL,
HUISNUMMER INTEGER NOT NULL,
POSTCODE CHAR(6) NOT NULL,
WOONPLAATS VARCHAR(125) NOT NULL,
EMAIL VARCHAR(50) NOT NULL,
SEXE CHAR(1) NOT NULL,
WACHTWOORD VARCHAR(15) NOT NULL,
CONSTRAINT PK_GEBRUIKER PRIMARY KEY (GEBRUIKERSNAAM),
CONSTRAINT CK_GEBRUIKERSNAAM CHECK (LEN(GEBRUIKERSNAAM) >= 5),
CONSTRAINT CK_VOORNAAM CHECK (LEN(VOORNAAM) >0),
CONSTRAINT CK_ACHTERNAAM CHECK (LEN(ACHTERNAAM) >= 0),
CONSTRAINT CK_WACHTWOORD CHECK (LEN(WACHTWOORD) >= 4),
CONSTRAINT CK_POSTCODE CHECK (POSTCODE LIKE '[1-9][0-9][0-9][0-9][A-Z][A-Z]'),
CONSTRAINT CK_SEXE CHECK (SEXE IN ('M', 'V'))
)
ALTER TABLE GEBRUIKER
ALTER COLUMN WACHTWOORD VARCHAR(125) NOT NULL
/* TABLE PRODUCT
*
* "Product <productnummer> is '<productnaam>'."
* "Product <productnummer> valt onder de categorie '<categorienaam>'."
* "Product <productnummer> heeft thumbnail '<bestandsnaam>'."
* "Product <productnummer> heeft als afbeelding '<bestandsnaam>'."
* "Product <productnummer> kost € <bedrag>."
* "Product <productnummer> heeft omschrijving '<productomschrijving>'."
* "Van product <productnummer> zijn nog <aantal> exemplaren op voorraad."
*/
CREATE TABLE PRODUCT (
PRODUCTNUMMER INTEGER IDENTITY NOT NULL,
PRODUCTNAAM VARCHAR(100) NOT NULL,
OMSCHRIJVING VARCHAR(MAX) NOT NULL,
MERK VARCHAR(15) NOT NULL,
PRIJS NUMERIC(8,2) NOT NULL,
VOORRAAD INTEGER NULL,
AFBEELDING_GROOT VARCHAR(1024) NOT NULL,
AFBEELDING_KLEIN VARCHAR(1024) NOT NULL,
CONSTRAINT PK_PRODUCT PRIMARY KEY (PRODUCTNUMMER),
CONSTRAINT UK_PRODUCTNAAM UNIQUE (PRODUCTNAAM),
CONSTRAINT CK_PRODUCTNAAM CHECK (LEN(PRODUCTNAAM) >= 5),
CONSTRAINT CK_PRIJS CHECK (PRIJS > 0),
CONSTRAINT CK_VOORRAAD CHECK (VOORRAAD > 0),
CONSTRAINT CK_OMSCHRIJVING CHECK(LEN(OMSCHRIJVING) > 50),
CONSTRAINT FK_PRODUCT_CATEGORIE FOREIGN KEY (MERK)
REFERENCES MERK (MERKNAAM)
ON DELETE NO ACTION
ON UPDATE NO ACTION
)
/* TABLE PRODUCT_GERELATEERD_PRODUCT
*
* "Product <productnummer> is gerelateerd aan product <productnummer>."
*/
CREATE TABLE PRODUCT_GERELATEERD_PRODUCT (
PRODUCTNUMMER INTEGER NOT NULL,
PRODUCTNUMMER_GERELATEERD_PRODUCT INTEGER NOT NULL,
CONSTRAINT PK_PRODUCT_GERELATEERD_PRODUCT PRIMARY KEY (PRODUCTNUMMER, PRODUCTNUMMER_GERELATEERD_PRODUCT),
CONSTRAINT CK_PRODUCT_GERELATEERD_PRODUCT CHECK (PRODUCTNUMMER <> PRODUCTNUMMER_GERELATEERD_PRODUCT),
CONSTRAINT FK1_PRODUCT_GERELATEERD_PRODUCT FOREIGN KEY (PRODUCTNUMMER)
REFERENCES PRODUCT (PRODUCTNUMMER)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT FK2_PRODUCT_GERELATEERD_PRODUCT FOREIGN KEY (PRODUCTNUMMER_GERELATEERD_PRODUCT)
REFERENCES PRODUCT (PRODUCTNUMMER)
ON DELETE NO ACTION
ON UPDATE NO ACTION
)
ALTER TABLE GEBRUIKER
ALTER COLUMN WACHTWOORD varchar(125) NOT NULL;
GO