-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtables.sql
More file actions
297 lines (254 loc) · 9.43 KB
/
tables.sql
File metadata and controls
297 lines (254 loc) · 9.43 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
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
use u_nalepa
-- tables
-- Table: City
CREATE TABLE City (
CityID int identity(1,1) NOT NULL,
CountryID int NOT NULL,
City varchar(50) NOT NULL,
CONSTRAINT City_pk PRIMARY KEY (CityID)
);
-- Table: Clients
CREATE TABLE Clients (
ClientID int identity(1,1) NOT NULL,
Phone varchar(9) NOT NULL,
check (isnumeric([phone]) = 1),
Email varchar (50) not null unique,
check ([Email] like '%@%.%') ,
Street varchar(50) NOT NULL,
BuildingNumber varchar(10) NOT NULL,
CityID int NOT NULL,
CONSTRAINT Clients_pk PRIMARY KEY (ClientID)
);
-- Table: Company
CREATE TABLE Company (
ClientID int NOT NULL,
CompanyName varchar(50) NOT NULL,
NIP varchar(50) NOT NULL unique,
check (isnumeric([NIP]) = 1),
CONSTRAINT Company_pk PRIMARY KEY (ClientID)
);
-- Table: ConferenceDay
CREATE TABLE ConferenceDay (
ConferenceDayID int identity (1,1) NOT NULL,
ConferenceID int NOT NULL,
ConferenceDate date NOT NULL,
CONSTRAINT ConferenceDay_pk PRIMARY KEY (ConferenceDayID)
);
-- Table: Conferences
CREATE TABLE Conferences (
ConferenceID int identity (1,1) NOT NULL,
ConferenceName varchar(50) NOT NULL,
ConferenceDescription varchar(255) NOT NULL,
StartDate date NOT NULL,
EndDate date NOT NULL,
check([EndDate] >= [StartDate]),
CityID int NOT NULL,
Street varchar(50) NOT NULL,
BuildingNumber varchar(10) NOT NULL,
StudentDiscount real NULL default 0,
check([StudentDiscount] >= 0 and [StudentDiscount] < 1),
Limit int NOT NULL,
check([Limit] > 0),
BasePrice money NOT NULL,
check([BasePrice] > 0),
CONSTRAINT Conferences_pk PRIMARY KEY (ConferenceID)
);
-- Table: Country
CREATE TABLE Country (
CountryID int identity(1,1) NOT NULL,
Country varchar(50) NOT NULL,
CONSTRAINT Country_pk PRIMARY KEY (CountryID)
);
-- Table: DayParticipant
CREATE TABLE DayParticipant (
DayParticipantID int identity(1,1) NOT NULL,
PersonID int NOT NULL,
DayReservationID int NOT NULL,
CONSTRAINT DayParticipant_pk PRIMARY KEY (DayParticipantID)
);
-- Table: DayReservation
CREATE TABLE DayReservation (
DayReservationID int identity(1,1) NOT NULL,
ConferenceDayID int NOT NULL,
ReservationID int NOT NULL,
NormalTickets int NULL default 0,
check([NormalTickets] >= 0),
StudentTickets int NULL default 0,
check([NormalTickets] >= 0),
check([NormalTickets] + [StudentTickets] > 0),
CONSTRAINT DayReservation_pk PRIMARY KEY (DayReservationID)
);
-- Table: Employee
CREATE TABLE Employee (
ClientID int NOT NULL,
PersonID int unique NOT NULL,
FirstName varchar(50) NULL,
LastName varchar(50) NULL,
CONSTRAINT Employee_pk PRIMARY KEY (PersonID)
);
-- Table: IndividualClient
CREATE TABLE IndividualClient (
ClientID int NOT NULL,
PersonID int unique NOT NULL,
FirstName varchar(50) NOT NULL,
LastName varchar(50) NOT NULL,
CONSTRAINT IndividualClient_pk PRIMARY KEY (ClientID)
);
-- Table: Person
CREATE TABLE Person (
PersonID int identity(1,1) NOT NULL,
CONSTRAINT Person_pk PRIMARY KEY (PersonID)
);
-- Table: Prices
CREATE TABLE Prices (
PriceID int identity(1,1) NOT NULL,
ConferenceID int NOT NULL,
StartDate date NOT NULL,
Discount real NOT NULL,
check([Discount] > 0 and [Discount] < 1),
CONSTRAINT Prices_pk PRIMARY KEY (PriceID)
);
-- Table: Reservation
CREATE TABLE Reservation (
ReservationID int identity(1,1) NOT NULL,
ClientID int NOT NULL,
PaymentDate date NULL,
ReservationDate date NOT NULL,
CONSTRAINT Reservation_pk PRIMARY KEY (ReservationID)
);
-- Table: Student
CREATE TABLE Student (
StudentID int identity(1,1) NOT NULL,
StudentCardID varchar(50) unique NOT NULL,
PersonID int unique NOT NULL,
CONSTRAINT Student_pk PRIMARY KEY (StudentID)
);
-- Table: Workshop
CREATE TABLE Workshop (
WorkshopID int identity(1,1) NOT NULL,
WorkshopDictionaryID int NOT NULL,
ConferenceDayID int NOT NULL,
StartTime time NOT NULL,
EndTime time NOT NULL,
check([EndTime] > [StartTime]),
Limit int NOT NULL,
check([Limit] > 0),
Cancelled bit NULL default 0,
Price money NULL default 0,
check([Price] >= 0),
CONSTRAINT Workshop_pk PRIMARY KEY (WorkshopID)
);
-- Table: WorkshopDictionary
CREATE TABLE WorkshopDictionary (
WorkshopDictionaryID int identity (1,1) NOT NULL,
WorkshopName varchar(50) NOT NULL,
WorkshopDescription varchar(255) NOT NULL,
Price money NULL default 0,
check([Price] >= 0),
CONSTRAINT WorkshopDictionary_pk PRIMARY KEY (WorkshopDictionaryID)
);
-- Table: WorkshopParticipant
CREATE TABLE WorkshopParticipant (
DayParticipantID int NOT NULL,
WorkshopReservationID int NOT NULL,
CONSTRAINT WorkshopParticipant_pk PRIMARY KEY (DayParticipantID,WorkshopReservationID)
);
-- Table: WorkshopReservation
CREATE TABLE WorkshopReservation (
WorkshopReservationID int identity(1,1) NOT NULL,
WorkshopID int NOT NULL,
DayReservationID int NOT NULL,
Tickets int NOT NULL,
check ([Tickets] > 0),
CONSTRAINT WorkshopReservation_pk PRIMARY KEY (WorkshopReservationID)
);
-- foreign keys
-- Reference: City_Country (table: City)
ALTER TABLE City ADD CONSTRAINT City_Country
FOREIGN KEY (CountryID)
REFERENCES Country (CountryID);
-- Reference: Clients_City (table: Clients)
ALTER TABLE Clients ADD CONSTRAINT Clients_City
FOREIGN KEY (CityID)
REFERENCES City (CityID);
-- Reference: Company_Clients (table: Company)
ALTER TABLE Company ADD CONSTRAINT Company_Clients
FOREIGN KEY (ClientID)
REFERENCES Clients (ClientID);
-- Reference: ConferenceDay_Conferences (table: ConferenceDay)
ALTER TABLE ConferenceDay ADD CONSTRAINT ConferenceDay_Conferences
FOREIGN KEY (ConferenceID)
REFERENCES Conferences (ConferenceID);
-- Reference: Conferences_City (table: Conferences)
ALTER TABLE Conferences ADD CONSTRAINT Conferences_City
FOREIGN KEY (CityID)
REFERENCES City (CityID);
-- Reference: DayParticipant_DayReservation (table: DayParticipant)
ALTER TABLE DayParticipant ADD CONSTRAINT DayParticipant_DayReservation
FOREIGN KEY (DayReservationID)
REFERENCES DayReservation (DayReservationID) on delete cascade ;
-- Reference: DayParticipant_Person (table: DayParticipant)
ALTER TABLE DayParticipant ADD CONSTRAINT DayParticipant_Person
FOREIGN KEY (PersonID)
REFERENCES Person (PersonID);
-- Reference: DayReservation_ConferenceDay (table: DayReservation)
ALTER TABLE DayReservation ADD CONSTRAINT DayReservation_ConferenceDay
FOREIGN KEY (ConferenceDayID)
REFERENCES ConferenceDay (ConferenceDayID);
-- Reference: DayReservation_Reservation (table: DayReservation)
ALTER TABLE DayReservation ADD CONSTRAINT DayReservation_Reservation
FOREIGN KEY (ReservationID)
REFERENCES Reservation (ReservationID) on delete cascade ;
-- Reference: Employee_Company (table: Employee)
ALTER TABLE Employee ADD CONSTRAINT Employee_Company
FOREIGN KEY (ClientID)
REFERENCES Company (ClientID);
-- Reference: Employee_Person (table: Employee)
ALTER TABLE Employee ADD CONSTRAINT Employee_Person
FOREIGN KEY (PersonID)
REFERENCES Person (PersonID);
-- Reference: IndividualClient_Clients (table: IndividualClient)
ALTER TABLE IndividualClient ADD CONSTRAINT IndividualClient_Clients
FOREIGN KEY (ClientID)
REFERENCES Clients (ClientID);
-- Reference: IndividualClient_Person (table: IndividualClient)
ALTER TABLE IndividualClient ADD CONSTRAINT IndividualClient_Person
FOREIGN KEY (PersonID)
REFERENCES Person (PersonID);
-- Reference: Prices_Conferences (table: Prices)
ALTER TABLE Prices ADD CONSTRAINT Prices_Conferences
FOREIGN KEY (ConferenceID)
REFERENCES Conferences (ConferenceID);
-- Reference: Reservation_Clients (table: Reservation)
ALTER TABLE Reservation ADD CONSTRAINT Reservation_Clients
FOREIGN KEY (ClientID)
REFERENCES Clients (ClientID);
-- Reference: Student_Person (table: Student)
ALTER TABLE Student ADD CONSTRAINT Student_Person
FOREIGN KEY (PersonID)
REFERENCES Person (PersonID);
-- Reference: WorkshopParticipant_DayParticipant (table: WorkshopParticipant)
ALTER TABLE WorkshopParticipant ADD CONSTRAINT WorkshopParticipant_DayParticipant
FOREIGN KEY (DayParticipantID)
REFERENCES DayParticipant (DayParticipantID) on delete cascade ;
-- Reference: WorkshopParticipant_WorkshopReservation (table: WorkshopParticipant)
ALTER TABLE WorkshopParticipant ADD CONSTRAINT WorkshopParticipant_WorkshopReservation
FOREIGN KEY (WorkshopReservationID)
REFERENCES WorkshopReservation (WorkshopReservationID);
-- Reference: WorkshopReservation_DayReservation (table: WorkshopReservation)
ALTER TABLE WorkshopReservation ADD CONSTRAINT WorkshopReservation_DayReservation
FOREIGN KEY (DayReservationID)
REFERENCES DayReservation (DayReservationID) on delete cascade ;
-- Reference: WorkshopReservation_Workshop (table: WorkshopReservation)
ALTER TABLE WorkshopReservation ADD CONSTRAINT WorkshopReservation_Workshop
FOREIGN KEY (WorkshopID)
REFERENCES Workshop (WorkshopID);
-- Reference: Workshop_ConferenceDay (table: Workshop)
ALTER TABLE Workshop ADD CONSTRAINT Workshop_ConferenceDay
FOREIGN KEY (ConferenceDayID)
REFERENCES ConferenceDay (ConferenceDayID);
-- Reference: Workshop_WorkshopDictionary (table: Workshop)
ALTER TABLE Workshop ADD CONSTRAINT Workshop_WorkshopDictionary
FOREIGN KEY (WorkshopDictionaryID)
REFERENCES WorkshopDictionary (WorkshopDictionaryID);
-- End of file.