1+ CREATE TABLE Category
2+ (
3+ CategoryID int NOT NULL ,
4+ CategoryName varchar (255 ) NOT NULL ,
5+ CONSTRAINT Category_pk PRIMARY KEY (CategoryID)
6+ )
7+
8+ CREATE TABLE Clients
9+ (
10+ ClientID int NOT NULL ,
11+ City varchar (255 ) NOT NULL ,
12+ Street varchar (255 ) NOT NULL ,
13+ PostalCode varchar (255 ) NOT NULL ,
14+ Phone varchar (32 ) NOT NULL ,
15+ Email varchar (255 ) NOT NULL ,
16+ CONSTRAINT ValidPostalCode CHECK (PostalCode LIKE ' [0-9][0-9]-[0-9][0-9][0-9]' ),
17+ CONSTRAINT ValidEmail CHECK (Email LIKE ' %@%' ),
18+ CONSTRAINT UniqueEmail UNIQUE (Email),
19+ CONSTRAINT ValidPhone CHECK (Phone LIKE ' +[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]' ),
20+ CONSTRAINT UniquePhone UNIQUE (Phone),
21+ CONSTRAINT Clients_pk PRIMARY KEY (ClientID)
22+ )
23+
24+ CREATE TABLE Companies
25+ (
26+ ClientID int NOT NULL ,
27+ CompanyName varchar (255 ) NOT NULL ,
28+ NIP varchar (32 ) NOT NULL ,
29+ CONSTRAINT ValidNIP CHECK (NIP LIKE ' [0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]' ),
30+ CONSTRAINT UniqueNIP UNIQUE (NIP),
31+ CONSTRAINT Companies_pk PRIMARY KEY (ClientID)
32+ )
33+
34+
35+ CREATE TABLE DiscountDetails
36+ (
37+ VarID int NOT NULL ,
38+ Value float (2 ) NOT NULL ,
39+ StartDate int NOT NULL ,
40+ EndDate int NOT NULL ,
41+ CONSTRAINT ValidDate CHECK (EndDate > StartDate),
42+ CONSTRAINT ValidValue CHECK (Value > 0 AND Value < 1 )
43+ )
44+
45+
46+ CREATE TABLE DiscountVars
47+ (
48+ VarID int NOT NULL ,
49+ VarName varchar (2 ) NOT NULL ,
50+ DiscountID int NOT NULL ,
51+ CONSTRAINT DiscountVars_pk PRIMARY KEY (VarID)
52+ )
53+
54+
55+ CREATE TABLE Discounts
56+ (
57+ DiscountID int NOT NULL ,
58+ AppliedDate datetime NOT NULL ,
59+ ClientID int NOT NULL ,
60+ CONSTRAINT Discounts_pk PRIMARY KEY (DiscountID)
61+ )
62+
63+
64+ CREATE TABLE Employees
65+ (
66+ PersonID int NOT NULL ,
67+ CompanyID int NOT NULL ,
68+ CONSTRAINT Employees_pk PRIMARY KEY (PersonID)
69+ )
70+
71+
72+ CREATE TABLE IndividualClient
73+ (
74+ PersonID int NOT NULL ,
75+ ClientID int NOT NULL ,
76+ CONSTRAINT IndividualClient_pk PRIMARY KEY (ClientID)
77+ )
78+
79+
80+ CREATE TABLE Menu
81+ (
82+ MenuID int NOT NULL ,
83+ StartDate date NOT NULL ,
84+ EndDate date NULL ,
85+ Price money NOT NULL ,
86+ ProductID int NOT NULL ,
87+ CONSTRAINT ValidMenuDate CHECK (EndDate > StartDate),
88+ CONSTRAINT ValidPrice CHECK (Price > 0 ),
89+ CONSTRAINT Menu_pk PRIMARY KEY (MenuID)
90+ )
91+
92+
93+ CREATE TABLE OrderDetails
94+ (
95+ OrderID int NOT NULL ,
96+ Quantity int NOT NULL ,
97+ ProductID int NOT NULL ,
98+ CONSTRAINT ValidQuantity CHECK (Quantity > 0 ),
99+ CONSTRAINT OrderDetails_pk PRIMARY KEY (OrderID)
100+ )
101+
102+
103+ CREATE TABLE Orders
104+ (
105+ OrderID int NOT NULL ,
106+ ClientID int NOT NULL ,
107+ OrderDate datetime NOT NULL ,
108+ TakeawayID int NULL ,
109+ ReservationID int NULL ,
110+ Paid bit NOT NULL ,
111+ CONSTRAINT Orders_pk PRIMARY KEY (OrderID)
112+ )
113+
114+
115+ CREATE TABLE OrdersTakeaways
116+ (
117+ TakeawayID int NOT NULL ,
118+ PrefDate datetime NOT NULL ,
119+ CONSTRAINT ValidPrefDate CHECK (PrefDate > GETDATE()),
120+ CONSTRAINT OrdersTakeaways_pk PRIMARY KEY (TakeawayID)
121+ )
122+
123+
124+ CREATE TABLE Person
125+ (
126+ FirstName varchar (255 ) NOT NULL ,
127+ LastName varchar (255 ) NOT NULL ,
128+ PersonID int NOT NULL ,
129+ CONSTRAINT Person_pk PRIMARY KEY (PersonID)
130+ )
131+
132+ CREATE TABLE Products
133+ (
134+ CategoryID int NOT NULL ,
135+ ProductID int NOT NULL ,
136+ Name varchar (255 ) NOT NULL ,
137+ Description varchar (255 ) NOT NULL DEFAULT ' brak opisu' ,
138+ CONSTRAINT MenuItems_pk PRIMARY KEY (ProductID)
139+ )
140+
141+
142+ CREATE TABLE Reservation
143+ (
144+ ReservationID int NOT NULL ,
145+ StartDate datetime NOT NULL ,
146+ EndDate datetime NOT NULL ,
147+ Status varchar (16 ) NOT NULL ,
148+ CONSTRAINT ValidReservationDate CHECK (EndDate > StartDate),
149+ CONSTRAINT Reservation_pk PRIMARY KEY (ReservationID)
150+ )
151+
152+ CREATE TABLE ReservationCompany
153+ (
154+ ReservationID int NOT NULL ,
155+ ClientID int NOT NULL ,
156+ PersonID int NULL ,
157+ CONSTRAINT ReservationCompany_pk PRIMARY KEY (ReservationID)
158+ )
159+
160+
161+ CREATE TABLE ReservationDetails
162+ (
163+ ReservationID int NOT NULL ,
164+ TableID int NOT NULL
165+ )
166+
167+
168+ CREATE TABLE ReservationIndividual
169+ (
170+ ReservationID int NOT NULL ,
171+ ClientID int NOT NULL ,
172+ PersonID int NOT NULL ,
173+ CONSTRAINT Reservations_pk PRIMARY KEY (ReservationID)
174+ )
175+
176+
177+ CREATE TABLE ReservationVar
178+ (
179+ WZ int NOT NULL ,
180+ WK int NOT NULL ,
181+ ReservationVarID int NOT NULL ,
182+ StartDate datetime NOT NULL ,
183+ EndDate datetime NULL ,
184+ CONSTRAINT ValidReservationVar CHECK (WZ > 0 AND WK > 0 AND ISNULL(EndDate, ' 9999-12-31 23:59:59' ) > StartDate ),
185+ CONSTRAINT ReservationVar_pk PRIMARY KEY (ReservationVarID)
186+ )
187+
188+ CREATE TABLE Tables
189+ (
190+ TableID int NOT NULL ,
191+ Size int NOT NULL ,
192+ CONSTRAINT ValidSize CHECK (Size > 0 ),
193+ CONSTRAINT Tables_pk PRIMARY KEY (TableID)
194+ )
195+
196+ ALTER TABLE ReservationDetails
197+ ADD CONSTRAINT Tables_ReservationDetails
198+ FOREIGN KEY (TableID)
199+ REFERENCES Tables (TableID)
200+
201+ ALTER TABLE ReservationDetails
202+ ADD CONSTRAINT ReservationDetails_ReservationIndividual
203+ FOREIGN KEY (ReservationID)
204+ REFERENCES ReservationIndividual (ReservationID)
205+
206+ ALTER TABLE ReservationDetails
207+ ADD CONSTRAINT ReservationDetails_ReservationCompany
208+ FOREIGN KEY (ReservationID)
209+ REFERENCES ReservationCompany (ReservationID)
210+
211+ ALTER TABLE ReservationIndividual
212+ ADD CONSTRAINT ReservationIndividual_Reservation
213+ FOREIGN KEY (ReservationID)
214+ REFERENCES Reservation (ReservationID)
215+
216+ ALTER TABLE Products
217+ ADD CONSTRAINT Category_MenuItems
218+ FOREIGN KEY (CategoryID)
219+ REFERENCES Category (CategoryID)
220+
221+ ALTER TABLE Orders
222+ ADD CONSTRAINT Reservation_Orders
223+ FOREIGN KEY (ReservationID)
224+ REFERENCES Reservation (ReservationID)
225+
226+ ALTER TABLE Orders
227+ ADD CONSTRAINT Orders_Clients
228+ FOREIGN KEY (ClientID)
229+ REFERENCES Clients (ClientID)
230+
231+ ALTER TABLE Orders
232+ ADD CONSTRAINT Orders_OrdersTakeaways
233+ FOREIGN KEY (TakeawayID)
234+ REFERENCES OrdersTakeaways (TakeawayID)
235+
236+ ALTER TABLE Companies
237+ ADD CONSTRAINT Companies_Clients
238+ FOREIGN KEY (ClientID)
239+ REFERENCES Clients (ClientID)
240+
241+ ALTER TABLE Menu
242+ ADD CONSTRAINT Menu_Products
243+ FOREIGN KEY (ProductID)
244+ REFERENCES Products (ProductID)
245+ ALTER TABLE IndividualClient
246+ ADD CONSTRAINT IndividualClient_Clients
247+ FOREIGN KEY (ClientID)
248+ REFERENCES Clients (ClientID)
249+
250+ ALTER TABLE IndividualClient
251+ ADD CONSTRAINT Person_IndividualClient
252+ FOREIGN KEY (PersonID)
253+ REFERENCES Person (PersonID)
254+ ALTER TABLE Employees
255+ ADD CONSTRAINT Employees_Companies
256+ FOREIGN KEY (CompanyID)
257+ REFERENCES Companies (ClientID)
258+
259+ ALTER TABLE Employees
260+ ADD CONSTRAINT Person_Employees
261+ FOREIGN KEY (PersonID)
262+ REFERENCES Person (PersonID)
263+
264+ ALTER TABLE Discounts
265+ ADD CONSTRAINT Discounts_IndividualClient
266+ FOREIGN KEY (ClientID)
267+ REFERENCES IndividualClient (ClientID)
268+ ALTER TABLE DiscountVars
269+ ADD CONSTRAINT DiscountVars_Discounts
270+ FOREIGN KEY (DiscountID)
271+ REFERENCES Discounts (DiscountID)
272+
273+ ALTER TABLE DiscountDetails
274+ ADD CONSTRAINT DiscountDetails_DiscountVars
275+ FOREIGN KEY (VarID)
276+ REFERENCES DiscountVars (VarID)
277+
278+ ALTER TABLE ReservationCompany
279+ ADD CONSTRAINT Companies_ReservationCompany
280+ FOREIGN KEY (ClientID)
281+ REFERENCES Companies (ClientID)
282+
283+ ALTER TABLE ReservationCompany
284+ ADD CONSTRAINT ReservationCompany_Reservation
285+ FOREIGN KEY (ReservationID)
286+ REFERENCES Reservation (ReservationID)
287+
288+ ALTER TABLE OrderDetails
289+ ADD CONSTRAINT OrderDetails_Orders
290+ FOREIGN KEY (OrderID)
291+ REFERENCES Orders (OrderID)
292+
293+ ALTER TABLE OrderDetails
294+ ADD CONSTRAINT OrderDetails_Products
295+ FOREIGN KEY (ProductID)
296+ REFERENCES Products (ProductID)
0 commit comments