PMG/Sammlung alt DB
Aus ProgrammingWiki
Wiki-Quelltext dieser Seite.
<language>SQL</language>
Anlegen einer Tabelle '''Leser''':
<code id="4cac9b9b9cf57">
DROP TABLE IF EXISTS leser;
CREATE TABLE leser (
L_NR varchar(255),
Name varchar(255),
Vorname varchar(255),
Geb_datum varchar(30),
PLZ varchar(255),
Ort varchar(255),
Straße varchar(255)
);
INSERT INTO leser VALUES ('001', 'Franz', 'Werner', '12.08.1969', '01259', 'Dresden', 'Ottostr.12');
INSERT INTO leser VALUES ('002', 'Bert', 'Kuni', '01.01.2010', '02625', 'Bautzen', 'Bismarkstr. 10');
INSERT INTO leser VALUES ('003', 'Hummel', 'Elfriede', '05.12.1940', '02222', 'Doosdorf', 'Nr. 5');
INSERT INTO leser VALUES ('004', 'Stramm', 'Berta', '01.02.1988', '01226', 'Dresden', 'Heideweg 7');
INSERT INTO leser VALUES ('010', 'Bunt', 'Sebastian', '11.11.1985', '02625', 'Bautzen', 'Reichenstr. 17');
</code>
<eval id="4cac9c50ee28a">
select *
from leser;
</eval>
SELECT buch2.Schlagwort, buch1.Titel, buch1.Verlag, buch1.Jahr
FROM buch1, buch2
WHERE buch1.T_NR = buch2.T_NR and ((buch2.Schlagwort)='LISP') ;
select T_Nr, Titel, Verlag, Aus_datum
from leser, ausleihe, bestand, buch1
where leser.L_NR=ausleihe.L_NR and ausleihe.reg_nr=bestand.reg_nr and bestand.T_nr=buch1.T_Nr and L_Nr='001';
Außerdem wird eine Tabelle '''Buch1''' benötigt, die die Angaben zu den Büchern enthält:
<br>
<code hidden id="4caca38a0ae95">
DROP TABLE IF EXISTS buch1;
CREATE TABLE buch1 (
T_NR varchar(255) ,
Autor varchar(255) ,
Titel varchar(255) ,
Verlag varchar(255) ,
Jahr varchar(255) ,
ISBN varchar(255)
);
INSERT INTO buch1 VALUES ('00001', 'Abelson, H. u.a.', 'Struktur und Interpretation von Computerprogrammen', 'Springer', '1991', '3-540-56934-0');
INSERT INTO buch1 VALUES ('00002', 'Appelrath, H.-J. u.a', 'Starthilfe Informatik', 'BG Teubner', '1998', '3-519-00241-8');
INSERT INTO buch1 VALUES ('00003', 'Claus, V. u.a.', 'Duden Informatik', 'Meyers Lexikonv', '1993', '3-411-05232-5');
INSERT INTO buch1 VALUES ('00004', 'Horn, Ch. u.a.', 'Lehr- und Übungsbuch Informatik, Bd. 1', 'Fachbuchverlag ', '1995', '3-343-00891-5');
INSERT INTO buch1 VALUES ('00005', 'Horn, Ch. u.a.', 'Lehr- und Übungsbuch Informatik, Bd. 3', 'Fachbuchverlag ', '1997', '3-446-18699-9');
INSERT INTO buch1 VALUES ('00006', 'Precht, M. u.a.', 'EDV-Grundwissen', 'Addison-Wesley', '1997', '3-8273-1222-1');
</code>
Lassen Sie sich die Inhalte der Tabelle buch1 anzeigen!
<eval id="4caca38a0afb3">
</eval>
Im Folgenden sind noch die Tabellen '''buch2''', '''bestand''' und '''ausleihe''' angelegt und mit Datensätzen gefüllt.<br>
Lassen Sie sich ebenfalls die Inhalte anzeigen.
<code id="4cacd69914c4f" hidden>
DROP TABLE IF EXISTS buch2;
CREATE TABLE buch2 (
T_NR varchar(255),
Schlagwort varchar(255)
);
INSERT INTO buch2 VALUES ('00001', 'Programmierung');
INSERT INTO buch2 VALUES ('00001', 'LISP');
INSERT INTO buch2 VALUES ('00002', 'Grundlagen');
INSERT INTO buch2 VALUES ('00003', 'Nachschlagewerk');
INSERT INTO buch2 VALUES ('00004', 'Grundlagen');
INSERT INTO buch2 VALUES ('00004', 'Programmierung');
INSERT INTO buch2 VALUES ('00004', 'Algorithmierung');
INSERT INTO buch2 VALUES ('00004', 'Betriebssysteme');
INSERT INTO buch2 VALUES ('00004', 'Tabellenkalkula');
INSERT INTO buch2 VALUES ('00004', 'Datenbanken');
INSERT INTO buch2 VALUES ('00005', 'Software-Engine');
INSERT INTO buch2 VALUES ('00005', 'SQL');
INSERT INTO buch2 VALUES ('00005', 'PROLOG');
INSERT INTO buch2 VALUES ('00005', 'LISP');
INSERT INTO buch2 VALUES ('00005', 'C++');
INSERT INTO buch2 VALUES ('00005', 'Objektorientier');
INSERT INTO buch2 VALUES ('00006', 'Programmierung');
INSERT INTO buch2 VALUES ('00006', 'Tabellenkalkula');
INSERT INTO buch2 VALUES ('00006', 'Datenbanken');
INSERT INTO buch2 VALUES ('00006', 'Betriebssysteme');
DROP TABLE IF EXISTS bestand;
CREATE TABLE bestand (
T_NR varchar(255),
Reg_Nr varchar(255),
vorhanden boolean
);
INSERT INTO bestand VALUES ('00001', '00001', 0);
INSERT INTO bestand VALUES ('00001', '00002', 0);
INSERT INTO bestand VALUES ('00001', '00003', 0);
INSERT INTO bestand VALUES ('00002', '00004', 0);
INSERT INTO bestand VALUES ('00003', '00005', 0);
INSERT INTO bestand VALUES ('00003', '00006', 0);
INSERT INTO bestand VALUES ('00004', '00007', 0);
INSERT INTO bestand VALUES ('00004', '00008', 0);
INSERT INTO bestand VALUES ('00004', '00009', 0);
INSERT INTO bestand VALUES ('00004', '00010', 0);
INSERT INTO bestand VALUES ('00005', '00011', 0);
INSERT INTO bestand VALUES ('00005', '00012', 0);
INSERT INTO bestand VALUES ('00005', '00013', 0);
INSERT INTO bestand VALUES ('00006', '00014', 0);
INSERT INTO bestand VALUES ('00006', '00015', 0);
INSERT INTO bestand VALUES ('', '', 0);
DROP TABLE IF EXISTS ausleihe;
CREATE TABLE ausleihe (
L_NR varchar(255) ,
Reg_Nr varchar(255) ,
Aus_datum varchar(30)
);
INSERT INTO ausleihe VALUES ('001', '00011', '01.01.2010');
INSERT INTO ausleihe VALUES ('003', '00012', '20.03.2010');
INSERT INTO ausleihe VALUES ('010', '00002', '21.05.2009');
INSERT INTO ausleihe VALUES ('002', '00007', '11.10.2010');
INSERT INTO ausleihe VALUES ('001', '00001', '05.09.2010');
</code>
<eval id="4cacd69914d8d">
</eval>
Analysieren Sie die Tabellen und finden Sie die Beziehungen zwischen diesen heraus. ([[Media:Bibo.JPG|vergleiche hier]])
<br>
Abschließend stellen Sie folgende Anfragen:
1. Welche Bücher beinhalten Ausführungen zu der Programmiersprache LISP?
2. Welche Bücher (T_Nr, Titel, Verlag) hat der Leser mit der L_Nr '001' wann ausgeliehen?
SELECT buch2.Schlagwort, buch1.Titel, buch1.Verlag, buch1.Jahr
FROM buch1, buch2
WHERE buch1.T_NR = buch2.T_NR and ((buch2.Schlagwort)='LISP') ;
select T_Nr, Titel, Verlag, Aus_datum
from leser, ausleihe, bestand, buch1
where leser.L_NR=ausleihe.L_NR and ausleihe.reg_nr=bestand.reg_nr and bestand.T_nr=buch1.T_Nr and L_Nr='001';
<eval id="4cacdaf17bbc6">
</eval>
Gegeben ist folgende, stark vereinfachte Datenbank mit den Tabellen ''Schueler'' und ''Noten'', die neben den Adressen die Prüfungsnoten der Schüler in einigen Fächern speichert.<br>
<code hidden id="4cacebae2b337">
DROP TABLE IF EXISTS schueler;
CREATE TABLE schueler (
Name varchar(20),
Vorname varchar(20) ,
Wohnort varchar(15) ,
PLZ varchar(5) ,
Telefon varchar(11) ,
Straße varchar(25) ,
Schuelernr varchar(7) ,
PRIMARY KEY (Schuelernr)
);
INSERT INTO schueler VALUES ('Scheurich', 'Erich', 'Bautzen', '02625', '40256', 'Mättigstr. 12', '1234567');
INSERT INTO schueler VALUES ('Schlenkrich', 'Ricarda', 'Teichritz', '02689', '23456', 'Dorfstr. 2', '1234568');
INSERT INTO schueler VALUES ('Angst', 'Beatrice', 'Wurschen', '02645', '67255', 'Nr. 12a', '1234569');
INSERT INTO schueler VALUES ('Waurick', 'Andre', 'Bautzen', '02625', '30445', 'Brecht-Str. 34', '1234572');
INSERT INTO schueler VALUES ('Scheurich', 'Erick', 'Bautzen', '02625', '40256', 'Mättigstr. 12', '1234573');
DROP TABLE IF EXISTS Noten;
CREATE TABLE Noten (
Schuelernr varchar(7),
Mathe integer default '0',
Deutsch integer,
Bio integer
);
INSERT INTO Noten VALUES ('1234567', 2, 3, 1);
INSERT INTO Noten VALUES ('1234568', 2, 2, 2);
INSERT INTO Noten VALUES ('1234569', 3, 4, 2);
INSERT INTO Noten VALUES ('1234572', 4, 3, 3);
INSERT INTO Noten VALUES ('1234573', 1, 1, 1);
</code>
'''1. Erstellen Sie folgende Abfragen:'''
* Gesucht sind alle Namen, Vornamen und Adressen derjenigen Schüler, deren Noten in allen Fächern besser als 3 sind.
* Gesucht sind alle Schüler aus Bautzen.
<eval id="4cacebc7a138b">
</eval>
select Name, Vorname, Wohnort, PLZ
from schueler, Noten
where schueler.schuelernr=Noten.schuelernr and (Mathe<3 and Deutsch<3 and Bio<3);
select Name, Vorname
from schueler
where Wohnort='Bautzen';
select * from schueler;
'''2. Ergänzen Sie die Datenbank um eine Tabelle Pruefer.'''<br>
mit den Attributen
* Pruefernr varchar(7)
* Name varchar(20)
* Fach varchar(4))
Füllen Sie die Tabelle mit mindestens 3 Datensätzen
'''3. Aufgabe'''<br>
Die Tabelle ist noch "losgelöst" von den anderen Tabellen.<br>
Beschreiben Sie eine Möglichkeit, damit die Tabelle ''pruefer'' in Beziehung zu den anderen steht.
<eval id="4cd111f4e4723">
begin
write(' // Hier sollte Ihr Text stehen ');
end.
</eval>
Erstelle eine Datenbank '''''CD-Versand''''': zur Verwaltung von Kundendaten, der vorhandenen CDs und des Versands an Kunden
Datenbank_SQL-Syntax zum Nachlesen: [http://hsqldb.org/doc/2.0/guide/index.html] <br><br>
{| border="1"
|-
| [[Bild:CD-Versand.jpeg|Miniatur|250px]] || [[Bild:1234.jpeg|Miniatur|250px]] || [[Bild:Diagramm2.jpeg|Miniatur|250px]]
|-
| Astrid|| Linda || David
|-
| [[Bild:Ll1.jpeg|Miniatur|250px]] || [[Bild:Modell_cd-versand.jpeg|Miniatur|250px]] || [[Bild:Dia.jpeg|Miniatur|250px]]
|-
| Jonas || Martin || Franz
|}
<code id="4cda754fb9361">
//Hier Datenstruktur anlegen
</code>
<eval id="4cda754fb947d">
//Hier Abfragen formulieren
</eval>
<eval id="4cecf79a4840c">
//Hier Abfragen formulieren
</eval>
<eval id="4cecf79a48523">
//Hier Abfragen formulieren
</eval>
zurück zu [[Datenbanken]]
'''Anforderungen an das Datenbank-Projekt'''
Bearbeiten Sie ein Datenbank-Projekt zu einem Thema Ihrer Wahl.
Dazu gehören:
* Ziel der Datenbank ("Begründung" der Themenwahl)
* Modellierung in einem ERM
* Transformation in das Relationenmodell
* Erstellen der DB (Struktur/notwendige Datensätze)
* Erstellen von verschiedenen Abfragen (unterschiedlicher „Schwierigkeit“)
Das Projekt ist komplett im PWiki zu bearbeiten.
Dabei arbeitet jeder auf einer eigenen Seite (siehe Links unten). Unterseiten werden mit "/" neu eingefügt.[[Bild:Unterseiten.JPG|right|thumb|250px|in der Adresszeile hinter die aktuelle Seite einfügen]]<br>
Wichtige Merkmale der Modelle (Kardinalität, Normalform, ...) sind zu erläutern.<br>
Das ERM ist als Bild einzufügen.
Bearbeitung des Projekts während der Unterrichtsstunden.
vorgesehener Zeitraum: