Praktikum 5 (Datenbanken)

Posted by Frank | Posted in Datenbanken, Studium | Posted on

0

Tjaja es ist mal wieder ne Weile her dass ich was gepostet habe und von daher habe ich beschlossen im Rahmen meines Studiums die Praktika für mich festzuhalten um sie nochmal etwas aufzufrischen.
Villeicht hilft mir dass um mich etwas besser auf die Klausur vorzubereiten. Da ich aber wenig Lust habe das ganze Ding von vorne aufzurollen steige ich einfach mittendrin ein.

Aufgabenstellung

DB Schema:

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
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
/*==============================================================*/
/* DBMS name:      ORACLE Version 10g                           */
/* Created on:     12.12.2011 10:42:32                          */
/*==============================================================*/
 
/* Praktikum 2 Datenbanken Inserts */
/* 719303 */
/* 718514 */
/* 27.11.2011 */
 
alter table BOOT
   drop constraint FK_BOOT_BOOT_BOOT_BOOTSTYP;
 
alter table BOOTSFUEHRER
   drop constraint FK_BOOTSFUE_INHERITAN_PERSON;
 
alter table BOOTSFUEHRER_VERLEIH
   drop constraint FK_BOOTSFUE_BOOTSFUEH_VERLEIH;
 
alter table BOOTSFUEHRER_VERLEIH
   drop constraint FK_BOOTSFUE_BOOTSFUEH_BOOTSFUE;
 
alter table FAHRGEBIET_BOOTSTYP
   drop constraint FK_FAHRGEBI_FAHRGEBIE_FAHRGEBI;
 
alter table FAHRGEBIET_BOOTSTYP
   drop constraint FK_FAHRGEBI_FAHRGEBIE_BOOTSTYP;
 
alter table HAFEN_FAHRGEBIET
   drop constraint FK_HAFEN_FA_HAFEN_FAH_HAFEN;
 
alter table HAFEN_FAHRGEBIET
   drop constraint FK_HAFEN_FA_HAFEN_FAH_FAHRGEBI;
 
alter table KUNDE
   drop constraint FK_KUNDE_INHERITAN_PERSON;
 
alter table VERLEIH
   drop constraint FK_VERLEIH_KUNDE_VER_KUNDE;
 
alter table VERLEIH
   drop constraint FK_VERLEIH_STARTHAFE_HAFEN;
 
alter table VERLEIH
   drop constraint FK_VERLEIH_VERLEIH___BOOT;
 
alter table VERLEIH
   drop constraint FK_VERLEIH_ZIELHAFEN_HAFEN;
 
drop index BOOT_BOOTSTYP_FK;
 
drop table BOOT cascade constraints;
 
drop table BOOTSFUEHRER cascade constraints;
 
drop index BOOTSFUEHRER_VERLEIH2_FK;
 
drop index BOOTSFUEHRER_VERLEIH_FK;
 
drop table BOOTSFUEHRER_VERLEIH cascade constraints;
 
drop table BOOTSTYP cascade constraints;
 
drop table FAHRGEBIET cascade constraints;
 
drop index FAHRGEBIET_BOOTSTYP2_FK;
 
drop index FAHRGEBIET_BOOTSTYP_FK;
 
drop table FAHRGEBIET_BOOTSTYP cascade constraints;
 
drop table HAFEN cascade constraints;
 
drop index HAFEN_FAHRGEBIET2_FK;
 
drop index HAFEN_FAHRGEBIET_FK;
 
drop table HAFEN_FAHRGEBIET cascade constraints;
 
drop table KUNDE cascade constraints;
 
drop table PERSON cascade constraints;
 
drop index ZIELHAFEN_FK;
 
drop index STARTHAFEN_FK;
 
drop index VERLEIH__BOOT_FK;
 
drop index KUNDE_VERLEIH_FK;
 
drop table VERLEIH cascade constraints;
 
/*==============================================================*/
/* Table: BOOT                                                  */
/*==============================================================*/
create table BOOT  (
   BID                  INTEGER                         not null,
   BTID                 INTEGER                         not null,
   LETZTEWARTUNG        DATE,
   constraint PK_BOOT primary key (BID)
);
 
/*==============================================================*/
/* Index: BOOT_BOOTSTYP_FK                                      */
/*==============================================================*/
create index BOOT_BOOTSTYP_FK on BOOT (
   BTID ASC
);
 
/*==============================================================*/
/* Table: BOOTSFUEHRER                                          */
/*==============================================================*/
create table BOOTSFUEHRER  (
   PID                  INTEGER                         not null,
   FUEHRERSCHEINTYP     VARCHAR2(20)                    not null,
   constraint PK_BOOTSFUEHRER primary key (PID)
);
 
/*==============================================================*/
/* Table: BOOTSFUEHRER_VERLEIH                                  */
/*==============================================================*/
create table BOOTSFUEHRER_VERLEIH  (
   VID                  INTEGER                         not null,
   PID                  INTEGER                         not null,
   constraint PK_BOOTSFUEHRER_VERLEIH primary key (VID, PID)
);
 
/*==============================================================*/
/* Index: BOOTSFUEHRER_VERLEIH_FK                               */
/*==============================================================*/
create index BOOTSFUEHRER_VERLEIH_FK on BOOTSFUEHRER_VERLEIH (
   VID ASC
);
 
/*==============================================================*/
/* Index: BOOTSFUEHRER_VERLEIH2_FK                              */
/*==============================================================*/
create index BOOTSFUEHRER_VERLEIH2_FK on BOOTSFUEHRER_VERLEIH (
   PID ASC
);
 
/*==============================================================*/
/* Table: BOOTSTYP                                              */
/*==============================================================*/
create table BOOTSTYP  (
   BTID                 INTEGER                         not null,
   TYPBEZEICHNUNG       VARCHAR2(20),
   MAXPERSONEN          INTEGER,
   WOCHENPREIS          NUMBER(6,2),
   FUHRERSCHEINBENOETIGT SMALLINT,
   constraint PK_BOOTSTYP primary key (BTID)
);
 
/*==============================================================*/
/* Table: FAHRGEBIET                                            */
/*==============================================================*/
create table FAHRGEBIET  (
   FGID                 INTEGER                         not null,
   GEBIETSSNAME         VARCHAR2(20),
   constraint PK_FAHRGEBIET primary key (FGID)
);
 
/*==============================================================*/
/* Table: FAHRGEBIET_BOOTSTYP                                   */
/*==============================================================*/
create table FAHRGEBIET_BOOTSTYP  (
   FGID                 INTEGER                         not null,
   BTID                 INTEGER                         not null,
   constraint PK_FAHRGEBIET_BOOTSTYP primary key (FGID, BTID)
);
 
/*==============================================================*/
/* Index: FAHRGEBIET_BOOTSTYP_FK                                */
/*==============================================================*/
create index FAHRGEBIET_BOOTSTYP_FK on FAHRGEBIET_BOOTSTYP (
   FGID ASC
);
 
/*==============================================================*/
/* Index: FAHRGEBIET_BOOTSTYP2_FK                               */
/*==============================================================*/
create index FAHRGEBIET_BOOTSTYP2_FK on FAHRGEBIET_BOOTSTYP (
   BTID ASC
);
 
/*==============================================================*/
/* Table: HAFEN                                                 */
/*==============================================================*/
create table HAFEN  (
   HID                  INTEGER                         not null,
   LIEGEGEBUEHR         NUMBER(3,2),
   HAFENNAME            VARCHAR2(20),
   constraint PK_HAFEN primary key (HID)
);
 
/*==============================================================*/
/* Table: HAFEN_FAHRGEBIET                                      */
/*==============================================================*/
create table HAFEN_FAHRGEBIET  (
   HID                  INTEGER                         not null,
   FGID                 INTEGER                         not null,
   constraint PK_HAFEN_FAHRGEBIET primary key (HID, FGID)
);
 
/*==============================================================*/
/* Index: HAFEN_FAHRGEBIET_FK                                   */
/*==============================================================*/
create index HAFEN_FAHRGEBIET_FK on HAFEN_FAHRGEBIET (
   HID ASC
);
 
/*==============================================================*/
/* Index: HAFEN_FAHRGEBIET2_FK                                  */
/*==============================================================*/
create index HAFEN_FAHRGEBIET2_FK on HAFEN_FAHRGEBIET (
   FGID ASC
);
 
/*==============================================================*/
/* Table: KUNDE                                                 */
/*==============================================================*/
create table KUNDE  (
   PID                  INTEGER                         not null,
   RECHNUNG_PLZ         SMALLINT                        not null,
   RECHNUNG_STR         VARCHAR2(20)                    not null,
   RECHNUNG_ORT         VARCHAR2(20)                    not null,
   constraint PK_KUNDE primary key (PID)
);
 
/*==============================================================*/
/* Table: PERSON                                                */
/*==============================================================*/
create table PERSON  (
   PID                  INTEGER                         not null,
   VORNAME              VARCHAR2(20)                    not null,
   NACHNAME             VARCHAR2(20)                    not null,
   GEBURTSDATUM         DATE                            not null,
   constraint PK_PERSON primary key (PID)
);
 
/*==============================================================*/
/* Table: VERLEIH                                               */
/*==============================================================*/
create table VERLEIH  (
   VID                  INTEGER                         not null,
   PID                  INTEGER                         not null,
   BID                  INTEGER                         not null,
   SHID                 INTEGER                         not null,
   ZHID                 INTEGER                         not null,
   STARTDATUM           DATE                            not null,
   ENDDATUM             DATE                            not null,
   MITFAHRER            INTEGER,
   constraint PK_VERLEIH primary key (VID)
);
 
/*==============================================================*/
/* Index: KUNDE_VERLEIH_FK                                      */
/*==============================================================*/
create index KUNDE_VERLEIH_FK on VERLEIH (
   PID ASC
);
 
/*==============================================================*/
/* Index: VERLEIH__BOOT_FK                                      */
/*==============================================================*/
create index VERLEIH__BOOT_FK on VERLEIH (
   BID ASC
);
 
/*==============================================================*/
/* Index: STARTHAFEN_FK                                         */
/*==============================================================*/
create index STARTHAFEN_FK on VERLEIH (
   SHID ASC
);
 
/*==============================================================*/
/* Index: ZIELHAFEN_FK                                          */
/*==============================================================*/
create index ZIELHAFEN_FK on VERLEIH (
   ZHID ASC
);
 
alter table BOOT
   add constraint FK_BOOT_BOOT_BOOT_BOOTSTYP foreign key (BTID)
      references BOOTSTYP (BTID);
 
alter table BOOTSFUEHRER
   add constraint FK_BOOTSFUE_INHERITAN_PERSON foreign key (PID)
      references PERSON (PID);
 
alter table BOOTSFUEHRER_VERLEIH
   add constraint FK_BOOTSFUE_BOOTSFUEH_VERLEIH foreign key (VID)
      references VERLEIH (VID);
 
alter table BOOTSFUEHRER_VERLEIH
   add constraint FK_BOOTSFUE_BOOTSFUEH_BOOTSFUE foreign key (PID)
      references BOOTSFUEHRER (PID);
 
alter table FAHRGEBIET_BOOTSTYP
   add constraint FK_FAHRGEBI_FAHRGEBIE_FAHRGEBI foreign key (FGID)
      references FAHRGEBIET (FGID);
 
alter table FAHRGEBIET_BOOTSTYP
   add constraint FK_FAHRGEBI_FAHRGEBIE_BOOTSTYP foreign key (BTID)
      references BOOTSTYP (BTID);
 
alter table HAFEN_FAHRGEBIET
   add constraint FK_HAFEN_FA_HAFEN_FAH_HAFEN foreign key (HID)
      references HAFEN (HID);
 
alter table HAFEN_FAHRGEBIET
   add constraint FK_HAFEN_FA_HAFEN_FAH_FAHRGEBI foreign key (FGID)
      references FAHRGEBIET (FGID);
 
alter table KUNDE
   add constraint FK_KUNDE_INHERITAN_PERSON foreign key (PID)
      references PERSON (PID);
 
alter table VERLEIH
   add constraint FK_VERLEIH_KUNDE_VER_KUNDE foreign key (PID)
      references KUNDE (PID);
 
alter table VERLEIH
   add constraint FK_VERLEIH_STARTHAFE_HAFEN foreign key (SHID)
      references HAFEN (HID);
 
alter table VERLEIH
   add constraint FK_VERLEIH_VERLEIH___BOOT foreign key (BID)
      references BOOT (BID);
 
alter table VERLEIH
   add constraint FK_VERLEIH_ZIELHAFEN_HAFEN foreign key (ZHID)
      references HAFEN (HID);
/*==============================================================*/
/* DBMS name:      ORACLE Version 10g                           */
/* Created on:     12.12.2011 10:42:32                          */
/*==============================================================*/

/* Praktikum 2 Datenbanken Inserts */
/* 719303 */
/* 718514 */
/* 27.11.2011 */

alter table BOOT
   drop constraint FK_BOOT_BOOT_BOOT_BOOTSTYP;

alter table BOOTSFUEHRER
   drop constraint FK_BOOTSFUE_INHERITAN_PERSON;

alter table BOOTSFUEHRER_VERLEIH
   drop constraint FK_BOOTSFUE_BOOTSFUEH_VERLEIH;

alter table BOOTSFUEHRER_VERLEIH
   drop constraint FK_BOOTSFUE_BOOTSFUEH_BOOTSFUE;

alter table FAHRGEBIET_BOOTSTYP
   drop constraint FK_FAHRGEBI_FAHRGEBIE_FAHRGEBI;

alter table FAHRGEBIET_BOOTSTYP
   drop constraint FK_FAHRGEBI_FAHRGEBIE_BOOTSTYP;

alter table HAFEN_FAHRGEBIET
   drop constraint FK_HAFEN_FA_HAFEN_FAH_HAFEN;

alter table HAFEN_FAHRGEBIET
   drop constraint FK_HAFEN_FA_HAFEN_FAH_FAHRGEBI;

alter table KUNDE
   drop constraint FK_KUNDE_INHERITAN_PERSON;

alter table VERLEIH
   drop constraint FK_VERLEIH_KUNDE_VER_KUNDE;

alter table VERLEIH
   drop constraint FK_VERLEIH_STARTHAFE_HAFEN;

alter table VERLEIH
   drop constraint FK_VERLEIH_VERLEIH___BOOT;

alter table VERLEIH
   drop constraint FK_VERLEIH_ZIELHAFEN_HAFEN;

drop index BOOT_BOOTSTYP_FK;

drop table BOOT cascade constraints;

drop table BOOTSFUEHRER cascade constraints;

drop index BOOTSFUEHRER_VERLEIH2_FK;

drop index BOOTSFUEHRER_VERLEIH_FK;

drop table BOOTSFUEHRER_VERLEIH cascade constraints;

drop table BOOTSTYP cascade constraints;

drop table FAHRGEBIET cascade constraints;

drop index FAHRGEBIET_BOOTSTYP2_FK;

drop index FAHRGEBIET_BOOTSTYP_FK;

drop table FAHRGEBIET_BOOTSTYP cascade constraints;

drop table HAFEN cascade constraints;

drop index HAFEN_FAHRGEBIET2_FK;

drop index HAFEN_FAHRGEBIET_FK;

drop table HAFEN_FAHRGEBIET cascade constraints;

drop table KUNDE cascade constraints;

drop table PERSON cascade constraints;

drop index ZIELHAFEN_FK;

drop index STARTHAFEN_FK;

drop index VERLEIH__BOOT_FK;

drop index KUNDE_VERLEIH_FK;

drop table VERLEIH cascade constraints;

/*==============================================================*/
/* Table: BOOT                                                  */
/*==============================================================*/
create table BOOT  (
   BID                  INTEGER                         not null,
   BTID                 INTEGER                         not null,
   LETZTEWARTUNG        DATE,
   constraint PK_BOOT primary key (BID)
);

/*==============================================================*/
/* Index: BOOT_BOOTSTYP_FK                                      */
/*==============================================================*/
create index BOOT_BOOTSTYP_FK on BOOT (
   BTID ASC
);

/*==============================================================*/
/* Table: BOOTSFUEHRER                                          */
/*==============================================================*/
create table BOOTSFUEHRER  (
   PID                  INTEGER                         not null,
   FUEHRERSCHEINTYP     VARCHAR2(20)                    not null,
   constraint PK_BOOTSFUEHRER primary key (PID)
);

/*==============================================================*/
/* Table: BOOTSFUEHRER_VERLEIH                                  */
/*==============================================================*/
create table BOOTSFUEHRER_VERLEIH  (
   VID                  INTEGER                         not null,
   PID                  INTEGER                         not null,
   constraint PK_BOOTSFUEHRER_VERLEIH primary key (VID, PID)
);

/*==============================================================*/
/* Index: BOOTSFUEHRER_VERLEIH_FK                               */
/*==============================================================*/
create index BOOTSFUEHRER_VERLEIH_FK on BOOTSFUEHRER_VERLEIH (
   VID ASC
);

/*==============================================================*/
/* Index: BOOTSFUEHRER_VERLEIH2_FK                              */
/*==============================================================*/
create index BOOTSFUEHRER_VERLEIH2_FK on BOOTSFUEHRER_VERLEIH (
   PID ASC
);

/*==============================================================*/
/* Table: BOOTSTYP                                              */
/*==============================================================*/
create table BOOTSTYP  (
   BTID                 INTEGER                         not null,
   TYPBEZEICHNUNG       VARCHAR2(20),
   MAXPERSONEN          INTEGER,
   WOCHENPREIS          NUMBER(6,2),
   FUHRERSCHEINBENOETIGT SMALLINT,
   constraint PK_BOOTSTYP primary key (BTID)
);

/*==============================================================*/
/* Table: FAHRGEBIET                                            */
/*==============================================================*/
create table FAHRGEBIET  (
   FGID                 INTEGER                         not null,
   GEBIETSSNAME         VARCHAR2(20),
   constraint PK_FAHRGEBIET primary key (FGID)
);

/*==============================================================*/
/* Table: FAHRGEBIET_BOOTSTYP                                   */
/*==============================================================*/
create table FAHRGEBIET_BOOTSTYP  (
   FGID                 INTEGER                         not null,
   BTID                 INTEGER                         not null,
   constraint PK_FAHRGEBIET_BOOTSTYP primary key (FGID, BTID)
);

/*==============================================================*/
/* Index: FAHRGEBIET_BOOTSTYP_FK                                */
/*==============================================================*/
create index FAHRGEBIET_BOOTSTYP_FK on FAHRGEBIET_BOOTSTYP (
   FGID ASC
);

/*==============================================================*/
/* Index: FAHRGEBIET_BOOTSTYP2_FK                               */
/*==============================================================*/
create index FAHRGEBIET_BOOTSTYP2_FK on FAHRGEBIET_BOOTSTYP (
   BTID ASC
);

/*==============================================================*/
/* Table: HAFEN                                                 */
/*==============================================================*/
create table HAFEN  (
   HID                  INTEGER                         not null,
   LIEGEGEBUEHR         NUMBER(3,2),
   HAFENNAME            VARCHAR2(20),
   constraint PK_HAFEN primary key (HID)
);

/*==============================================================*/
/* Table: HAFEN_FAHRGEBIET                                      */
/*==============================================================*/
create table HAFEN_FAHRGEBIET  (
   HID                  INTEGER                         not null,
   FGID                 INTEGER                         not null,
   constraint PK_HAFEN_FAHRGEBIET primary key (HID, FGID)
);

/*==============================================================*/
/* Index: HAFEN_FAHRGEBIET_FK                                   */
/*==============================================================*/
create index HAFEN_FAHRGEBIET_FK on HAFEN_FAHRGEBIET (
   HID ASC
);

/*==============================================================*/
/* Index: HAFEN_FAHRGEBIET2_FK                                  */
/*==============================================================*/
create index HAFEN_FAHRGEBIET2_FK on HAFEN_FAHRGEBIET (
   FGID ASC
);

/*==============================================================*/
/* Table: KUNDE                                                 */
/*==============================================================*/
create table KUNDE  (
   PID                  INTEGER                         not null,
   RECHNUNG_PLZ         SMALLINT                        not null,
   RECHNUNG_STR         VARCHAR2(20)                    not null,
   RECHNUNG_ORT         VARCHAR2(20)                    not null,
   constraint PK_KUNDE primary key (PID)
);

/*==============================================================*/
/* Table: PERSON                                                */
/*==============================================================*/
create table PERSON  (
   PID                  INTEGER                         not null,
   VORNAME              VARCHAR2(20)                    not null,
   NACHNAME             VARCHAR2(20)                    not null,
   GEBURTSDATUM         DATE                            not null,
   constraint PK_PERSON primary key (PID)
);

/*==============================================================*/
/* Table: VERLEIH                                               */
/*==============================================================*/
create table VERLEIH  (
   VID                  INTEGER                         not null,
   PID                  INTEGER                         not null,
   BID                  INTEGER                         not null,
   SHID                 INTEGER                         not null,
   ZHID                 INTEGER                         not null,
   STARTDATUM           DATE                            not null,
   ENDDATUM             DATE                            not null,
   MITFAHRER            INTEGER,
   constraint PK_VERLEIH primary key (VID)
);

/*==============================================================*/
/* Index: KUNDE_VERLEIH_FK                                      */
/*==============================================================*/
create index KUNDE_VERLEIH_FK on VERLEIH (
   PID ASC
);

/*==============================================================*/
/* Index: VERLEIH__BOOT_FK                                      */
/*==============================================================*/
create index VERLEIH__BOOT_FK on VERLEIH (
   BID ASC
);

/*==============================================================*/
/* Index: STARTHAFEN_FK                                         */
/*==============================================================*/
create index STARTHAFEN_FK on VERLEIH (
   SHID ASC
);

/*==============================================================*/
/* Index: ZIELHAFEN_FK                                          */
/*==============================================================*/
create index ZIELHAFEN_FK on VERLEIH (
   ZHID ASC
);

alter table BOOT
   add constraint FK_BOOT_BOOT_BOOT_BOOTSTYP foreign key (BTID)
      references BOOTSTYP (BTID);

alter table BOOTSFUEHRER
   add constraint FK_BOOTSFUE_INHERITAN_PERSON foreign key (PID)
      references PERSON (PID);

alter table BOOTSFUEHRER_VERLEIH
   add constraint FK_BOOTSFUE_BOOTSFUEH_VERLEIH foreign key (VID)
      references VERLEIH (VID);

alter table BOOTSFUEHRER_VERLEIH
   add constraint FK_BOOTSFUE_BOOTSFUEH_BOOTSFUE foreign key (PID)
      references BOOTSFUEHRER (PID);

alter table FAHRGEBIET_BOOTSTYP
   add constraint FK_FAHRGEBI_FAHRGEBIE_FAHRGEBI foreign key (FGID)
      references FAHRGEBIET (FGID);

alter table FAHRGEBIET_BOOTSTYP
   add constraint FK_FAHRGEBI_FAHRGEBIE_BOOTSTYP foreign key (BTID)
      references BOOTSTYP (BTID);

alter table HAFEN_FAHRGEBIET
   add constraint FK_HAFEN_FA_HAFEN_FAH_HAFEN foreign key (HID)
      references HAFEN (HID);

alter table HAFEN_FAHRGEBIET
   add constraint FK_HAFEN_FA_HAFEN_FAH_FAHRGEBI foreign key (FGID)
      references FAHRGEBIET (FGID);

alter table KUNDE
   add constraint FK_KUNDE_INHERITAN_PERSON foreign key (PID)
      references PERSON (PID);

alter table VERLEIH
   add constraint FK_VERLEIH_KUNDE_VER_KUNDE foreign key (PID)
      references KUNDE (PID);

alter table VERLEIH
   add constraint FK_VERLEIH_STARTHAFE_HAFEN foreign key (SHID)
      references HAFEN (HID);

alter table VERLEIH
   add constraint FK_VERLEIH_VERLEIH___BOOT foreign key (BID)
      references BOOT (BID);

alter table VERLEIH
   add constraint FK_VERLEIH_ZIELHAFEN_HAFEN foreign key (ZHID)
      references HAFEN (HID);

Inserts:

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
/* Praktikum 3 Datenbanken Inserts */
/* 719303 */
/* 718514 */
/* 27.11.2011 */
 
/* Personen */
INSERT INTO PERSON (PID, VORNAME, NACHNAME, GEBURTSDATUM) VALUES (1, 'Max', 'Muster', '23.03.1987');
INSERT INTO PERSON (PID, VORNAME, NACHNAME, GEBURTSDATUM) VALUES (2, 'Hans', 'Wurst', '11.06.1992');
INSERT INTO PERSON (PID, VORNAME, NACHNAME, GEBURTSDATUM) VALUES (3, 'Peter', 'Lustig', '07.12.1979');
INSERT INTO PERSON (PID, VORNAME, NACHNAME, GEBURTSDATUM) VALUES (4, 'Lieschen', 'Müller', '09.08.1980');
 
/* Kunden */
 
INSERT INTO KUNDE (PID, RECHNUNG_PLZ, RECHNUNG_STR, RECHNUNG_ORT) VALUES (1, '11111', 'Grenzweg 3', 'Musterhausen');
INSERT INTO KUNDE (PID, RECHNUNG_PLZ, RECHNUNG_STR, RECHNUNG_ORT) VALUES (2, '22222', 'Mittelgasse 12', 'Wurstdorf');
INSERT INTO KUNDE (PID, RECHNUNG_PLZ, RECHNUNG_STR, RECHNUNG_ORT) VALUES (3, '33333', 'Ringstraße 5', 'Frohenheim');
INSERT INTO KUNDE (PID, RECHNUNG_PLZ, RECHNUNG_STR, RECHNUNG_ORT) VALUES (4, '44444', 'Müllerweg 33', 'Mühlhausen');
 
/* Bootstypen */
INSERT INTO BOOTSTYP (BTID, TYPBEZEICHNUNG, MAXPERSONEN, WOCHENPREIS, FUHRERSCHEINBENOETIGT) VALUES (1, 'Cirrus', 2, 1140, 0);
INSERT INTO BOOTSTYP (BTID, TYPBEZEICHNUNG, MAXPERSONEN, WOCHENPREIS, FUHRERSCHEINBENOETIGT) VALUES (2, 'Clipper', 4, 1830, 0);
INSERT INTO BOOTSTYP (BTID, TYPBEZEICHNUNG, MAXPERSONEN, WOCHENPREIS, FUHRERSCHEINBENOETIGT) VALUES (3, 'Calypso', 6, 2140, 1);
INSERT INTO BOOTSTYP (BTID, TYPBEZEICHNUNG, MAXPERSONEN, WOCHENPREIS, FUHRERSCHEINBENOETIGT) VALUES (4, 'Royal Magnifique', 8, 3000, 1);
 
/* Boote */
INSERT INTO BOOT (BID, BTID, LETZTEWARTUNG) VALUES (1, 1, '27.05.2011');
INSERT INTO BOOT (BID, BTID, LETZTEWARTUNG) VALUES (2, 1, '28.06.2011');
INSERT INTO BOOT (BID, BTID, LETZTEWARTUNG) VALUES (3, 1, '29.08.2011');
INSERT INTO BOOT (BID, BTID, LETZTEWARTUNG) VALUES (4, 1, '30.10.2011');
INSERT INTO BOOT (BID, BTID, LETZTEWARTUNG) VALUES (5, 1, '01.03.2011');
INSERT INTO BOOT (BID, BTID, LETZTEWARTUNG) VALUES (6, 1, '02.07.2011');
 
INSERT INTO BOOT (BID, BTID, LETZTEWARTUNG) VALUES (10, 3, '03.9.2011');
INSERT INTO BOOT (BID, BTID, LETZTEWARTUNG) VALUES (11, 3, '04.11.2011');
 
INSERT INTO BOOT (BID, BTID, LETZTEWARTUNG) VALUES (20, 4, '05.6.2011');
INSERT INTO BOOT (BID, BTID, LETZTEWARTUNG) VALUES (21, 4, '06.4.2011');
INSERT INTO BOOT (BID, BTID, LETZTEWARTUNG) VALUES (22, 4, '07.2.2011');
 
INSERT INTO BOOT (BID, BTID, LETZTEWARTUNG) VALUES (50, 2, '08.5.2011');
INSERT INTO BOOT (BID, BTID, LETZTEWARTUNG) VALUES (51, 2, '09.7.2011');
INSERT INTO BOOT (BID, BTID, LETZTEWARTUNG) VALUES (52, 2, '10.9.2011');
INSERT INTO BOOT (BID, BTID, LETZTEWARTUNG) VALUES (53, 2, '11.6.2011');
 
/* Fahrgebiete */
INSERT INTO FAHRGEBIET (FGID, GEBIETSSNAME) VALUES (1, 'Midi');
INSERT INTO FAHRGEBIET (FGID, GEBIETSSNAME) VALUES (2, 'Camargue');
INSERT INTO FAHRGEBIET (FGID, GEBIETSSNAME) VALUES (3, 'Bretagne');
 
/* Fahrgebiet Bootstyp */
INSERT INTO FAHRGEBIET_BOOTSTYP (FGID, BTID) VALUES (1, 1);
INSERT INTO FAHRGEBIET_BOOTSTYP (FGID, BTID) VALUES (2, 1);
 
INSERT INTO FAHRGEBIET_BOOTSTYP (FGID, BTID) VALUES (1, 2);
INSERT INTO FAHRGEBIET_BOOTSTYP (FGID, BTID) VALUES (2, 2);
INSERT INTO FAHRGEBIET_BOOTSTYP (FGID, BTID) VALUES (3, 2);
 
INSERT INTO FAHRGEBIET_BOOTSTYP (FGID, BTID) VALUES (1, 3);
INSERT INTO FAHRGEBIET_BOOTSTYP (FGID, BTID) VALUES (2, 3);
 
INSERT INTO FAHRGEBIET_BOOTSTYP (FGID, BTID) VALUES (2, 4);
INSERT INTO FAHRGEBIET_BOOTSTYP (FGID, BTID) VALUES (3, 4);
 
/* Häfen */
INSERT INTO HAFEN (HID, LIEGEGEBUEHR, HAFENNAME) VALUES (1, 1.50, 'Toulouse');
INSERT INTO HAFEN (HID, LIEGEGEBUEHR, HAFENNAME) VALUES (2, 1.50, 'Castelnaudary');
INSERT INTO HAFEN (HID, LIEGEGEBUEHR, HAFENNAME) VALUES (3, 3, 'Carcassonne');
INSERT INTO HAFEN (HID, LIEGEGEBUEHR, HAFENNAME) VALUES (4, 3, 'Narbonne');
INSERT INTO HAFEN (HID, LIEGEGEBUEHR, HAFENNAME) VALUES (5, 1.50, 'Montpellier');
INSERT INTO HAFEN (HID, LIEGEGEBUEHR, HAFENNAME) VALUES (6, 3, 'Aigues-Mortes');
INSERT INTO HAFEN (HID, LIEGEGEBUEHR, HAFENNAME) VALUES (7, 1.50, 'Beaucaire');
INSERT INTO HAFEN (HID, LIEGEGEBUEHR, HAFENNAME) VALUES (8, 3, 'Dinan');
INSERT INTO HAFEN (HID, LIEGEGEBUEHR, HAFENNAME) VALUES (9, 1.50, 'Messac');
INSERT INTO HAFEN (HID, LIEGEGEBUEHR, HAFENNAME) VALUES (10, 3, 'Nort-sur-Erdre');
 
/* Verträge */
INSERT INTO VERLEIH (VID, PID, BID, shID, zhID, STARTDATUM, ENDDATUM, MITFAHRER) VALUES (1, 1, 1, 2, 1, '27.11.2011', '30.11.2011', 2);
INSERT INTO VERLEIH (VID, PID, BID, shID, zhID, STARTDATUM, ENDDATUM, MITFAHRER) VALUES (2, 2, 50, 5, 3, '27.11.2011', '15.12.2011', 2);
INSERT INTO VERLEIH (VID, PID, BID, shID, zhID, STARTDATUM, ENDDATUM, MITFAHRER) VALUES (3, 3, 21, 1, 9, '27.11.2011', '14.01.2012', 2);
 
/* Verträge Bootsführer */
INSERT INTO BOOTSFUEHRER (PID, fuehrerscheintyp) VALUES (1, 1);
INSERT INTO BOOTSFUEHRER (PID, fuehrerscheintyp) VALUES (2, 1);
INSERT INTO BOOTSFUEHRER (PID, fuehrerscheintyp) VALUES (3, 1);
 
/* Verträge Bootsführer */
INSERT INTO BOOTSFUEHRER_VERLEIH (VID, PID) VALUES (1, 1);
INSERT INTO BOOTSFUEHRER_VERLEIH (VID, PID) VALUES (2, 2);
INSERT INTO BOOTSFUEHRER_VERLEIH (VID, PID) VALUES (3, 3);
 
/* Hafen Fahrgebiete */
INSERT INTO HAFEN_FAHRGEBIET (HID, FGID) VALUES (1, 1);
INSERT INTO HAFEN_FAHRGEBIET (HID, FGID) VALUES (2, 1);
INSERT INTO HAFEN_FAHRGEBIET (HID, FGID) VALUES (3, 1);
INSERT INTO HAFEN_FAHRGEBIET (HID, FGID) VALUES (4, 1); 
 
INSERT INTO HAFEN_FAHRGEBIET (HID, FGID) VALUES (4, 2);
INSERT INTO HAFEN_FAHRGEBIET (HID, FGID) VALUES (5, 2);
INSERT INTO HAFEN_FAHRGEBIET (HID, FGID) VALUES (6, 2);
INSERT INTO HAFEN_FAHRGEBIET (HID, FGID) VALUES (7, 2);
 
INSERT INTO HAFEN_FAHRGEBIET (HID, FGID) VALUES (8, 3);
INSERT INTO HAFEN_FAHRGEBIET (HID, FGID) VALUES (9, 3);
INSERT INTO HAFEN_FAHRGEBIET (HID, FGID) VALUES (10, 3);
/* Praktikum 3 Datenbanken Inserts */
/* 719303 */
/* 718514 */
/* 27.11.2011 */

/* Personen */
INSERT INTO PERSON (PID, VORNAME, NACHNAME, GEBURTSDATUM) VALUES (1, 'Max', 'Muster', '23.03.1987');
INSERT INTO PERSON (PID, VORNAME, NACHNAME, GEBURTSDATUM) VALUES (2, 'Hans', 'Wurst', '11.06.1992');
INSERT INTO PERSON (PID, VORNAME, NACHNAME, GEBURTSDATUM) VALUES (3, 'Peter', 'Lustig', '07.12.1979');
INSERT INTO PERSON (PID, VORNAME, NACHNAME, GEBURTSDATUM) VALUES (4, 'Lieschen', 'Müller', '09.08.1980');

/* Kunden */

INSERT INTO KUNDE (PID, RECHNUNG_PLZ, RECHNUNG_STR, RECHNUNG_ORT) VALUES (1, '11111', 'Grenzweg 3', 'Musterhausen');
INSERT INTO KUNDE (PID, RECHNUNG_PLZ, RECHNUNG_STR, RECHNUNG_ORT) VALUES (2, '22222', 'Mittelgasse 12', 'Wurstdorf');
INSERT INTO KUNDE (PID, RECHNUNG_PLZ, RECHNUNG_STR, RECHNUNG_ORT) VALUES (3, '33333', 'Ringstraße 5', 'Frohenheim');
INSERT INTO KUNDE (PID, RECHNUNG_PLZ, RECHNUNG_STR, RECHNUNG_ORT) VALUES (4, '44444', 'Müllerweg 33', 'Mühlhausen');

/* Bootstypen */
INSERT INTO BOOTSTYP (BTID, TYPBEZEICHNUNG, MAXPERSONEN, WOCHENPREIS, FUHRERSCHEINBENOETIGT) VALUES (1, 'Cirrus', 2, 1140, 0);
INSERT INTO BOOTSTYP (BTID, TYPBEZEICHNUNG, MAXPERSONEN, WOCHENPREIS, FUHRERSCHEINBENOETIGT) VALUES (2, 'Clipper', 4, 1830, 0);
INSERT INTO BOOTSTYP (BTID, TYPBEZEICHNUNG, MAXPERSONEN, WOCHENPREIS, FUHRERSCHEINBENOETIGT) VALUES (3, 'Calypso', 6, 2140, 1);
INSERT INTO BOOTSTYP (BTID, TYPBEZEICHNUNG, MAXPERSONEN, WOCHENPREIS, FUHRERSCHEINBENOETIGT) VALUES (4, 'Royal Magnifique', 8, 3000, 1);

/* Boote */
INSERT INTO BOOT (BID, BTID, LETZTEWARTUNG) VALUES (1, 1, '27.05.2011');
INSERT INTO BOOT (BID, BTID, LETZTEWARTUNG) VALUES (2, 1, '28.06.2011');
INSERT INTO BOOT (BID, BTID, LETZTEWARTUNG) VALUES (3, 1, '29.08.2011');
INSERT INTO BOOT (BID, BTID, LETZTEWARTUNG) VALUES (4, 1, '30.10.2011');
INSERT INTO BOOT (BID, BTID, LETZTEWARTUNG) VALUES (5, 1, '01.03.2011');
INSERT INTO BOOT (BID, BTID, LETZTEWARTUNG) VALUES (6, 1, '02.07.2011');

INSERT INTO BOOT (BID, BTID, LETZTEWARTUNG) VALUES (10, 3, '03.9.2011');
INSERT INTO BOOT (BID, BTID, LETZTEWARTUNG) VALUES (11, 3, '04.11.2011');

INSERT INTO BOOT (BID, BTID, LETZTEWARTUNG) VALUES (20, 4, '05.6.2011');
INSERT INTO BOOT (BID, BTID, LETZTEWARTUNG) VALUES (21, 4, '06.4.2011');
INSERT INTO BOOT (BID, BTID, LETZTEWARTUNG) VALUES (22, 4, '07.2.2011');

INSERT INTO BOOT (BID, BTID, LETZTEWARTUNG) VALUES (50, 2, '08.5.2011');
INSERT INTO BOOT (BID, BTID, LETZTEWARTUNG) VALUES (51, 2, '09.7.2011');
INSERT INTO BOOT (BID, BTID, LETZTEWARTUNG) VALUES (52, 2, '10.9.2011');
INSERT INTO BOOT (BID, BTID, LETZTEWARTUNG) VALUES (53, 2, '11.6.2011');

/* Fahrgebiete */
INSERT INTO FAHRGEBIET (FGID, GEBIETSSNAME) VALUES (1, 'Midi');
INSERT INTO FAHRGEBIET (FGID, GEBIETSSNAME) VALUES (2, 'Camargue');
INSERT INTO FAHRGEBIET (FGID, GEBIETSSNAME) VALUES (3, 'Bretagne');

/* Fahrgebiet Bootstyp */
INSERT INTO FAHRGEBIET_BOOTSTYP (FGID, BTID) VALUES (1, 1);
INSERT INTO FAHRGEBIET_BOOTSTYP (FGID, BTID) VALUES (2, 1);

INSERT INTO FAHRGEBIET_BOOTSTYP (FGID, BTID) VALUES (1, 2);
INSERT INTO FAHRGEBIET_BOOTSTYP (FGID, BTID) VALUES (2, 2);
INSERT INTO FAHRGEBIET_BOOTSTYP (FGID, BTID) VALUES (3, 2);

INSERT INTO FAHRGEBIET_BOOTSTYP (FGID, BTID) VALUES (1, 3);
INSERT INTO FAHRGEBIET_BOOTSTYP (FGID, BTID) VALUES (2, 3);

INSERT INTO FAHRGEBIET_BOOTSTYP (FGID, BTID) VALUES (2, 4);
INSERT INTO FAHRGEBIET_BOOTSTYP (FGID, BTID) VALUES (3, 4);

/* Häfen */
INSERT INTO HAFEN (HID, LIEGEGEBUEHR, HAFENNAME) VALUES (1, 1.50, 'Toulouse');
INSERT INTO HAFEN (HID, LIEGEGEBUEHR, HAFENNAME) VALUES (2, 1.50, 'Castelnaudary');
INSERT INTO HAFEN (HID, LIEGEGEBUEHR, HAFENNAME) VALUES (3, 3, 'Carcassonne');
INSERT INTO HAFEN (HID, LIEGEGEBUEHR, HAFENNAME) VALUES (4, 3, 'Narbonne');
INSERT INTO HAFEN (HID, LIEGEGEBUEHR, HAFENNAME) VALUES (5, 1.50, 'Montpellier');
INSERT INTO HAFEN (HID, LIEGEGEBUEHR, HAFENNAME) VALUES (6, 3, 'Aigues-Mortes');
INSERT INTO HAFEN (HID, LIEGEGEBUEHR, HAFENNAME) VALUES (7, 1.50, 'Beaucaire');
INSERT INTO HAFEN (HID, LIEGEGEBUEHR, HAFENNAME) VALUES (8, 3, 'Dinan');
INSERT INTO HAFEN (HID, LIEGEGEBUEHR, HAFENNAME) VALUES (9, 1.50, 'Messac');
INSERT INTO HAFEN (HID, LIEGEGEBUEHR, HAFENNAME) VALUES (10, 3, 'Nort-sur-Erdre');

/* Verträge */
INSERT INTO VERLEIH (VID, PID, BID, shID, zhID, STARTDATUM, ENDDATUM, MITFAHRER) VALUES (1, 1, 1, 2, 1, '27.11.2011', '30.11.2011', 2);
INSERT INTO VERLEIH (VID, PID, BID, shID, zhID, STARTDATUM, ENDDATUM, MITFAHRER) VALUES (2, 2, 50, 5, 3, '27.11.2011', '15.12.2011', 2);
INSERT INTO VERLEIH (VID, PID, BID, shID, zhID, STARTDATUM, ENDDATUM, MITFAHRER) VALUES (3, 3, 21, 1, 9, '27.11.2011', '14.01.2012', 2);

/* Verträge Bootsführer */
INSERT INTO BOOTSFUEHRER (PID, fuehrerscheintyp) VALUES (1, 1);
INSERT INTO BOOTSFUEHRER (PID, fuehrerscheintyp) VALUES (2, 1);
INSERT INTO BOOTSFUEHRER (PID, fuehrerscheintyp) VALUES (3, 1);

/* Verträge Bootsführer */
INSERT INTO BOOTSFUEHRER_VERLEIH (VID, PID) VALUES (1, 1);
INSERT INTO BOOTSFUEHRER_VERLEIH (VID, PID) VALUES (2, 2);
INSERT INTO BOOTSFUEHRER_VERLEIH (VID, PID) VALUES (3, 3);

/* Hafen Fahrgebiete */
INSERT INTO HAFEN_FAHRGEBIET (HID, FGID) VALUES (1, 1);
INSERT INTO HAFEN_FAHRGEBIET (HID, FGID) VALUES (2, 1);
INSERT INTO HAFEN_FAHRGEBIET (HID, FGID) VALUES (3, 1);
INSERT INTO HAFEN_FAHRGEBIET (HID, FGID) VALUES (4, 1); 

INSERT INTO HAFEN_FAHRGEBIET (HID, FGID) VALUES (4, 2);
INSERT INTO HAFEN_FAHRGEBIET (HID, FGID) VALUES (5, 2);
INSERT INTO HAFEN_FAHRGEBIET (HID, FGID) VALUES (6, 2);
INSERT INTO HAFEN_FAHRGEBIET (HID, FGID) VALUES (7, 2);

INSERT INTO HAFEN_FAHRGEBIET (HID, FGID) VALUES (8, 3);
INSERT INTO HAFEN_FAHRGEBIET (HID, FGID) VALUES (9, 3);
INSERT INTO HAFEN_FAHRGEBIET (HID, FGID) VALUES (10, 3);

Die Lösung des Ganzen war dann relativ trivial und hat etwa 2 Stunden gedauert wobei locker 1 Stunde für das Lesen der versäumten Vorlesungsfolien draufging :O

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
/* Praktikum 5 */
/* 09.01.2012 */
 
/* DEBUG Kram für Oracle 10g */
set serveroutput on
show errors
 
ALTER TABLE BOOT ADD naechstewartung DATE;
 
UPDATE BOOT SET naechstewartung = add_months(letzteWartung, 6) WHERE bid = 1;
UPDATE BOOT SET naechstewartung = add_months(letzteWartung, 6) WHERE bid = 2;
UPDATE BOOT SET naechstewartung = add_months(letzteWartung, 6) WHERE bid = 3;
UPDATE BOOT SET naechstewartung = add_months(letzteWartung, 6) WHERE bid = 4;
UPDATE BOOT SET naechstewartung = add_months(letzteWartung, 6) WHERE bid = 5;
UPDATE BOOT SET naechstewartung = add_months(letzteWartung, 6) WHERE bid = 6;
 
UPDATE BOOT SET naechstewartung = add_months(letzteWartung, 6) WHERE bid = 10;
UPDATE BOOT SET naechstewartung = add_months(letzteWartung, 6) WHERE bid = 11;  
 
UPDATE BOOT SET naechstewartung = add_months(letzteWartung, 6) WHERE bid = 20;
UPDATE BOOT SET naechstewartung = add_months(letzteWartung, 6) WHERE bid = 21;
UPDATE BOOT SET naechstewartung = add_months(letzteWartung, 6) WHERE bid = 22;
 
UPDATE BOOT SET naechstewartung = add_months(letzteWartung, 6) WHERE bid = 50;
UPDATE BOOT SET naechstewartung = add_months(letzteWartung, 6) WHERE bid = 51;
UPDATE BOOT SET naechstewartung = add_months(letzteWartung, 6) WHERE bid = 52;
UPDATE BOOT SET naechstewartung = add_months(letzteWartung, 6) WHERE bid = 53;
 
/* stored function */
/* Wenn Maintanance Datum kleiner als Startdatum oder Maintanance Datum größer Enddatum dann keine Maintanance in Zeitraum */
/* return: true wenn Wartungsarbeiten im gegebenen Zeitraum liegen, ansonsten return:false */
create or replace
function maintanance_check (boots_id integer, s_datum Date, e_datum Date)
return BOOLEAN
IS
  nw_datum boot.naechstewartung%type;
begin
  select naechstewartung into nw_datum from boot where bid = boots_id;
 
  if nw_datum not between s_datum and  e_datum then
      return false;
    else
      return true;
  end if;
 
end maintanance_check;
/
 
/* Trigger für insert/update von Verträgen! */
create or replace trigger tr_maintanance_check
before insert or update
on verleih
for each row
declare
  MAINTANANCE_SHEDULED exception;
  m_d DATE;
begin
 
  if maintanance_check(:new.bid, :new.startdatum, :new.enddatum) then
    raise MAINTANANCE_SHEDULED;
  end if;
 
exception
  when MAINTANANCE_SHEDULED then
  raise_application_error(-20001, 'Das Boot ist während dem gewünschten Ausleihzeitraum für eine geplante Wartung vorgemerkt und kann nicht ausgeliehen werden!');
end;
/
 
/* Testfälle für den trigger */
 
/* test insert 1: Wartungsarbeiten innerhalb ausleihzeitraum => erwarte fehlermeldung!  */
INSERT INTO VERLEIH (VID, PID, BID, shID, zhID, STARTDATUM, ENDDATUM, MITFAHRER) VALUES (4, 1, 1, 2, 1, '20.03.2012', '02.04.2012', 2);
 
/* test insert 2: Wartungsarbeiten innerhalb ausleihzeitraum => erwarte ordnungsgemäßes insert!  */
INSERT INTO VERLEIH (VID, PID, BID, shID, zhID, STARTDATUM, ENDDATUM, MITFAHRER) VALUES (5, 1, 1, 2, 1, '01.04.2012', '02.04.2012', 2);
 
/* test update 1: Wartungsarbeiten innerhalb ausleihzeitraum => erwarte fehlermeldung!  */
update verleih set startdatum = '20.03.2012', enddatum = '02.04.2012' where vid = 1;
 
/* test update 1: Wartungsarbeiten außerhalb ausleihzeitraum => erwarte ordnungsgemäßes update!  */
update verleih set startdatum = '01.04.2012', enddatum = '02.04.2012' where vid = 1;
/* Praktikum 5 */
/* 09.01.2012 */

/* DEBUG Kram für Oracle 10g */
set serveroutput on
show errors

ALTER TABLE BOOT ADD naechstewartung DATE;

UPDATE BOOT SET naechstewartung = add_months(letzteWartung, 6) WHERE bid = 1;
UPDATE BOOT SET naechstewartung = add_months(letzteWartung, 6) WHERE bid = 2;
UPDATE BOOT SET naechstewartung = add_months(letzteWartung, 6) WHERE bid = 3;
UPDATE BOOT SET naechstewartung = add_months(letzteWartung, 6) WHERE bid = 4;
UPDATE BOOT SET naechstewartung = add_months(letzteWartung, 6) WHERE bid = 5;
UPDATE BOOT SET naechstewartung = add_months(letzteWartung, 6) WHERE bid = 6;

UPDATE BOOT SET naechstewartung = add_months(letzteWartung, 6) WHERE bid = 10;
UPDATE BOOT SET naechstewartung = add_months(letzteWartung, 6) WHERE bid = 11;	

UPDATE BOOT SET naechstewartung = add_months(letzteWartung, 6) WHERE bid = 20;
UPDATE BOOT SET naechstewartung = add_months(letzteWartung, 6) WHERE bid = 21;
UPDATE BOOT SET naechstewartung = add_months(letzteWartung, 6) WHERE bid = 22;

UPDATE BOOT SET naechstewartung = add_months(letzteWartung, 6) WHERE bid = 50;
UPDATE BOOT SET naechstewartung = add_months(letzteWartung, 6) WHERE bid = 51;
UPDATE BOOT SET naechstewartung = add_months(letzteWartung, 6) WHERE bid = 52;
UPDATE BOOT SET naechstewartung = add_months(letzteWartung, 6) WHERE bid = 53;

/* stored function */
/* Wenn Maintanance Datum kleiner als Startdatum oder Maintanance Datum größer Enddatum dann keine Maintanance in Zeitraum */
/* return: true wenn Wartungsarbeiten im gegebenen Zeitraum liegen, ansonsten return:false */
create or replace
function maintanance_check (boots_id integer, s_datum Date, e_datum Date)
return BOOLEAN
IS
  nw_datum boot.naechstewartung%type;
begin
  select naechstewartung into nw_datum from boot where bid = boots_id;

  if nw_datum not between s_datum and  e_datum then
      return false;
    else
      return true;
  end if;

end maintanance_check;
/

/* Trigger für insert/update von Verträgen! */
create or replace trigger tr_maintanance_check
before insert or update
on verleih
for each row
declare
  MAINTANANCE_SHEDULED exception;
  m_d DATE;
begin

  if maintanance_check(:new.bid, :new.startdatum, :new.enddatum) then
    raise MAINTANANCE_SHEDULED;
  end if;

exception
  when MAINTANANCE_SHEDULED then
  raise_application_error(-20001, 'Das Boot ist während dem gewünschten Ausleihzeitraum für eine geplante Wartung vorgemerkt und kann nicht ausgeliehen werden!');
end;
/

/* Testfälle für den trigger */

/* test insert 1: Wartungsarbeiten innerhalb ausleihzeitraum => erwarte fehlermeldung!  */
INSERT INTO VERLEIH (VID, PID, BID, shID, zhID, STARTDATUM, ENDDATUM, MITFAHRER) VALUES (4, 1, 1, 2, 1, '20.03.2012', '02.04.2012', 2);

/* test insert 2: Wartungsarbeiten innerhalb ausleihzeitraum => erwarte ordnungsgemäßes insert!  */
INSERT INTO VERLEIH (VID, PID, BID, shID, zhID, STARTDATUM, ENDDATUM, MITFAHRER) VALUES (5, 1, 1, 2, 1, '01.04.2012', '02.04.2012', 2);

/* test update 1: Wartungsarbeiten innerhalb ausleihzeitraum => erwarte fehlermeldung!  */
update verleih set startdatum = '20.03.2012', enddatum = '02.04.2012' where vid = 1;

/* test update 1: Wartungsarbeiten außerhalb ausleihzeitraum => erwarte ordnungsgemäßes update!  */
update verleih set startdatum = '01.04.2012', enddatum = '02.04.2012' where vid = 1;

 

Share and Enjoy

  • Facebook
  • Twitter
  • Delicious
  • Digg
  • Add to favorites
  • Email
  • RSS

Write a comment