Sammlung alt DB

Aus ProgrammingWiki
< PMG
Archivierte Version vom 2012-12-04T20:17:17+00:00. Aktuelle Version

Inhaltsverzeichnis

  • Es wird eine Datenbank angelegt.
  • Die Datenfelder werden gefüllt.
  • Eine Abfrage gestellt.

Eine kleine DB vorbereiten: <eval id="4c8fc835525fc"> DROP TABLE Place IF EXISTS; CREATE TABLE Place (Code INTEGER,Name VARCHAR(255)); CREATE INDEX iCode ON Place (Code);</eval>

DROP TABLE Customer IF EXISTS; CREATE TABLE Customer (Nr INTEGER,Name VARCHAR(255),Place INTEGER); CREATE INDEX iNr ON Customer (Nr);

Führen wir ein paar Inserts durch: <eval id="4c8fc8355270c"> INSERT INTO Place VALUES (4900,'Langenthal'); INSERT INTO Place VALUES (8000,'Zurich'); INSERT INTO Place VALUES (3000,'Berne'); INSERT INTO Place VALUES (1200,'Geneva'); INSERT INTO Place VALUES (6900,'Lugano');</eval>

INSERT INTO Customer VALUES (1,'Meier',3000); INSERT INTO Customer VALUES (2,'Mueller',8000); INSERT INTO Customer VALUES (3,'Devaux',1200); INSERT INTO Customer VALUES (4,'Rossi',6900); INSERT INTO Customer VALUES (5,'Rickli',3000); INSERT INTO Customer VALUES (6,'Graf',3000); INSERT INTO Customer VALUES (7,'Mueller',4900); INSERT INTO Customer VALUES (8,'May',1200); INSERT INTO Customer VALUES (9,'Berger',8000); INSERT INTO Customer VALUES (10,'D''Ascoli',6900); INSERT INTO Customer VALUES (11,'Padruz',1200); INSERT INTO Customer VALUES (12,'Hug',4900);


Ein Query dazu: <eval id="4c8fc83552820"> SELECT * FROM Customer; SELECT * FROM Customer,place WHERE Customer.place=place.code AND place.name='Berne' </eval>

Natürlich kann man auch CODE Boxen verwenden oder versteckten Code für das anlegen einer Datenbank 
mit Beispielinhalten usw.
Elemente, die in einer CODE Box hinterlegt sind, werden IMMER vor jedem EVAL mit ausgeführt. 
Damit eignen Sie sich prima, um Tabellen und Datensätze anzulegen:


<eval id="4c8fc8355292f"> SELECT * FROM Artikel;</eval>

SELECT * FROM Artikel WHERE A_Preis = (SELECT MAX(A.A_Preis) FROM Artikel As A)

Dieses Beispiel stammt von der Programming-Wiki-Seite von Michael Hielscher

Was ist passiert

Ein Gängstertrio hat am 23.08.2009 die Central Bank in New York ausgeräumt. Es waren Profis wie der Polizeichef bestätigte: "Hier waren ganz klar Kenner mit Erfahrung am Werk. Sie haben den Coup sicher schon über Wochen im Vorfeld geplant."

Die Hinweise

Von den Augenzeugen haben wir nur zwei Hinweise auf die drei männliche Täter erhalten:

1. Hinweis: 
Ein Täter bedrohte die Angestellten und wurde von einem Komplizen „Lie“ gerufen. 
Er soll mindestens 1'80 groß gewesen sein, zwischen 20 und 30 Jahre alt und trug 
einen auffallend chinesischen Kleidungsstil. 
2.Hinweis:
Eine Augenzeugin erinnert sich an das Fluchtfahrzeug. Es ist ein blauer oder 
schwarzer BMW gewesen sagt sie und das Kennzeichen soll auf 557 geendet haben.


Die Datenbank

Als FBI-Ermittler und Datenbank-Spezialist bist du für diesen Fall zuständig. Du hast bereits 100 Personen herausgesucht, die als Täter in Frage kommen könnten. Du hast Zugriff auf folgende Tabellen der FBI-Datenbank:

Die Spalten Vater, Mutter, Fahrzeughalter und Person sind Fremdschlüssel auf die Spalte ID der Tabelle Einwohner.

Bankraub_ERD.png

Hier kannst du einen Blick in die Datenbank werfen. Es werden jeweils 10 Datensätze angezeigt.

<eval id="4c8fc263e000b"> SELECT * FROM Einwohner AS Ausschnitt LIMIT 10; SELECT * FROM Vorstrafen AS Ausschnitt LIMIT 10; SELECT * FROM KFZ AS Ausschnitt LIMIT 10; SELECT * FROM Strafzettel AS Ausschnitt LIMIT 10; </eval>

SELECT * FROM Einwohner;
SELECT * FROM Vorstrafen;
SELECT * FROM KFZ;
SELECT * FROM Strafzettel

Die Aufgabe

Als FBI-Ermittler sollst du die Datenbank verwenden, um den Tätern auf die Spur zu kommen. Du kannst davon ausgehen, dass alle Täter in der Datenbank erfasst sind und eindeutig nach dem Ausschlussprinzip bestimmt werden können. Wie bereits vom Polizeichef erwähnt handelt es sich um Profis. Du kannst davon ausgehen, dass jeder Täter eine oder mehrere Vorstrafen besitzt.

Vorgehen:

  • Skizziere dir zunächst ein Datenbankschema auf einem Blatt Papier und kennzeichne die Beziehungen zwischen den einzelnen Tabellen.
  • Verwende geeignete SQL Anfragen, um die Datenbank zu durchsuchen.
  • Notiere dir die Namen der drei Täter und Begründe deine Entscheidung. Durch logische Schlussfolgerungen kannst du den Täterkreis einengen.


<eval id="4a9790521d0b8"> // Gib hier deine SQL Befehle ein, um zu probieren und die 3 Täter zu bestimmen. </eval>


<eval id="4c8fc5e200452"> // Gib hier deine SQL Befehle ein... </eval>


<eval id="4c8fc5e2005a0"> // Gib hier deine SQL Befehle ein... </eval>


<eval id="4c8fc5e2006e3"> // Gib hier deine SQL Befehle ein... </eval>

Lösung

1. Täter: Lie Jang (Er ist der einzige mit dem Vornamen "Lie" und dem passendem Alter.)

2. Täter: Egon Anderson (Seine Mutter ist Halterinn des Fluchtautos und ist die einzige männliche Person in der Familie Anderson mit Vorstrafe.)

3. Täter: Eddy Quin (Er wohnt als einziger Vorbestrafter auf der Jefferson Street, wo das Fluchtauto die Wochen vor dem Einbruch mehrere Strafzettel bekommen hat.)


Anlegen einer Tabelle Leser:



<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:

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.
Lassen Sie sich ebenfalls die Inhalte anzeigen.


<eval id="4cacd69914d8d"> </eval>


Analysieren Sie die Tabellen und finden Sie die Beziehungen zwischen diesen heraus. (vergleiche hier)
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.



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.

mit den Attributen

  • Pruefernr varchar(7)
  • Name varchar(20)
  • Fach varchar(4))

Füllen Sie die Tabelle mit mindestens 3 Datensätzen


3. Aufgabe

Die Tabelle ist noch "losgelöst" von den anderen Tabellen.
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


CD-Versand.jpeg1234.jpegDiagramm2.jpeg
AstridLindaDavid
Ll1.jpegModell_cd-versand.jpegDia.jpeg
JonasMartinFranz



<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.Unterseiten.JPG

Wichtige Merkmale der Modelle (Kardinalität, Normalform, ...) sind zu erläutern.
Das ERM ist als Bild einzufügen.


Bearbeitung des Projekts während der Unterrichtsstunden.

vorgesehener Zeitraum: