DB Schema der Klausur „Datenbanken I SS 2009“

Da ich wissen wollte, ob die SQL Abfragen, die ich geschrieben hatte, richtig sind, habe ich das Datenbank Schema der Klausur vom Sommersemester 2009 für die Oracle Datenbank realisiert.

/* Erstellt das DB-Schema der Datenbanken I Klausur vom SS 2009 */

create table tbl_Kundengruppe (
id int not null,
strKundengruppenname varchar(50) not null,
constraint PK_tbl_Kundengruppe
primary key(id)
);

create table tbl_Telefon (
id int not null,
strTelefonnummer varchar(12) not null,
constraint PK_tbl_Telefon
primary key(id)
);

create table tbl_Umsatz (
id int not null,
fk_Telefon int not null,
dtStart date not null,
dtEnd date not null,
constraint PK_tbl_Umsatz
primary key(id),
constraint FK_Umsatz_Telefon
foreign key (fk_Telefon)
references tbl_Telefon (id)
on delete cascade
);

create table tbl_Kunden (
id int not null,
strName varchar(255) not null,
fk_Telefon int not null,
fk_Kundengruppe int not null,
constraint PK_tbl_Kunden
primary key (id),
constraint FK_Kunden_Kundengruppe
foreign key (fk_Kundengruppe)
references tbl_Kundengruppe (id)
on delete cascade,
constraint FK_Kunden_Telefon
foreign key (fk_Telefon)
references tbl_Telefon (id)
on delete cascade
);

insert into tbl_Kundengruppe values (1, 'Privatkunde');
insert into tbl_Kundengruppe values (2, 'Geschäftskunde');
insert into tbl_Kundengruppe values (3, 'VIP-Kunde');

insert into tbl_Telefon values (1, '491711234567');
insert into tbl_Telefon values (2, '491727654321');
insert into tbl_Telefon values (3, '491732222222');
insert into tbl_Telefon values (4, '491743333333');
insert into tbl_Telefon values (5, '491754444444');
insert into tbl_Telefon values (6, '491709988776');

insert into tbl_Kunden values (2, 'Hans', 1, 1);
insert into tbl_Kunden values (3, 'Dieter', 2, 1);
insert into tbl_Kunden values (4, 'Ralf', 3, 2);
insert into tbl_Kunden values (5, 'Christine', 4, 2);
insert into tbl_Kunden values (6, 'Madonna', 5, 3);
insert into tbl_Kunden values (7, 'Schröder', 6, 3);

insert into tbl_Umsatz values (1, 2, to_date('2009-07-04 20:54:47', 'yyyy-mm-dd hh24:mi:ss'), to_date('2009-07-04 20:54:47', 'yyyy-mm-dd hh24:mi:ss'));
insert into tbl_Umsatz values (2, 1, to_date('2009-07-04 20:54:47', 'yyyy-mm-dd hh24:mi:ss'), to_date('2009-07-04 20:54:47', 'yyyy-mm-dd hh24:mi:ss'));
insert into tbl_Umsatz values (3, 3, to_date('2009-07-04 20:54:47', 'yyyy-mm-dd hh24:mi:ss'), to_date('2009-07-04 20:54:47', 'yyyy-mm-dd hh24:mi:ss'));
insert into tbl_Umsatz values (4, 4, to_date('2009-07-04 20:54:47', 'yyyy-mm-dd hh24:mi:ss'), to_date('2009-07-04 20:54:47', 'yyyy-mm-dd hh24:mi:ss'));
insert into tbl_Umsatz values (5, 5, to_date('2009-07-04 20:54:47', 'yyyy-mm-dd hh24:mi:ss'), to_date('2009-07-04 20:54:47', 'yyyy-mm-dd hh24:mi:ss'));
insert into tbl_Umsatz values (8, 2, to_date('2009-07-04 20:54:47', 'yyyy-mm-dd hh24:mi:ss'), to_date('2009-07-04 20:54:47', 'yyyy-mm-dd hh24:mi:ss'));
insert into tbl_Umsatz values (9, 1, to_date('2009-07-04 20:54:47', 'yyyy-mm-dd hh24:mi:ss'), to_date('2009-07-04 20:54:47', 'yyyy-mm-dd hh24:mi:ss'));
insert into tbl_Umsatz values (10, 1, to_date('2009-07-04 20:54:47', 'yyyy-mm-dd hh24:mi:ss'), to_date('2009-07-04 20:54:47', 'yyyy-mm-dd hh24:mi:ss'));
insert into tbl_Umsatz values (11, 1, to_date('2009-07-04 20:54:47', 'yyyy-mm-dd hh24:mi:ss'), to_date('2009-07-04 20:54:47', 'yyyy-mm-dd hh24:mi:ss'));
insert into tbl_Umsatz values (12, 3, to_date('2009-07-04 20:54:47', 'yyyy-mm-dd hh24:mi:ss'), to_date('2009-07-04 20:54:47', 'yyyy-mm-dd hh24:mi:ss'));
insert into tbl_Umsatz values (13, 2, to_date('2009-07-04 20:54:47', 'yyyy-mm-dd hh24:mi:ss'), to_date('2009-07-04 20:54:47', 'yyyy-mm-dd hh24:mi:ss'));
insert into tbl_Umsatz values (14, 5, to_date('2009-07-04 20:54:47', 'yyyy-mm-dd hh24:mi:ss'), to_date('2009-07-04 20:54:47', 'yyyy-mm-dd hh24:mi:ss'));
insert into tbl_Umsatz values (15, 1, to_date('2009-07-04 20:54:47', 'yyyy-mm-dd hh24:mi:ss'), to_date('2009-07-04 20:54:47', 'yyyy-mm-dd hh24:mi:ss'));

Beim Datum- / Zeitformat für die Attribute „dtStart“ und „dtEnd“ gibt es ein paar Probleme, weshalb momentan nur das Datum und nicht die Zeit angezeigt wird.

/* Erstellt das erweiterte DB Schema der Datenbanken I Klausur vom SS 2009.
Das allgemeine Schema muss schon vorhanden sein, um dieses hier nutzen zu können! */

create table tbl_Kunden2 (
id int not null,
strName varchar(255) not null,
fk_Kundengruppe int not null,
constraint PK_tbl_Kunden2
primary key (id),
constraint FK_Kunden2_Kundengruppe
foreign key (fk_Kundengruppe)
references tbl_Kundengruppe (id)
on delete cascade
);

insert into tbl_Kunden2 values (2, 'Hans', 1);
insert into tbl_Kunden2 values (3, 'Dieter', 1);
insert into tbl_Kunden2 values (4, 'Ralf', 2);
insert into tbl_Kunden2 values (5, 'Christine', 2);
insert into tbl_Kunden2 values (6, 'Madonna', 3);
insert into tbl_Kunden2 values (7, 'Schröder', 3);

create table tbl_Kunden2Telefon (
id int not null,
fk_Kunden int not null,
fk_Telefon int not null,
constraint PK_tbl_Kunden2Telefon
primary key (id),
constraint FK_Kunden2Telefon_Kunden2
foreign key (fk_Kunden)
references tbl_Kunden2 (id)
on delete cascade,
constraint FK_Kunden2Telefon_Telefon
foreign key (fk_Telefon)
references tbl_Telefon (id)
on delete cascade
);

insert into tbl_Kunden2Telefon values (1, 2, 2);
insert into tbl_Kunden2Telefon values (2, 2, 1);
insert into tbl_Kunden2Telefon values (3, 3, 3);
insert into tbl_Kunden2Telefon values (4, 4, 4);
insert into tbl_Kunden2Telefon values (5, 5, 6);
insert into tbl_Kunden2Telefon values (6, 6, 5);
insert into tbl_Kunden2Telefon values (7, 7, 7);

Das erweiterte Schema fügt neben der Tabelle „tbl_Kunden2Telefon“ auch noch eine „tbl_Kunden2“ ein, da ich die Kundentabelle des 1. Schemas nicht verändern wollte.

Das Schema ist zwar nicht perfekt, aber die Klausuraufgaben lassen sich damit eigentlich sehr gut nachvollziehen (mit Ausnahme der DATEDIFF() Aufgabe).


Diesen Beitrag teilen:
Facebooktwitterredditpinterestlinkedinmail

2 Gedanken zu „DB Schema der Klausur „Datenbanken I SS 2009““

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.