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: