PMG/Kurs 1214/DB Beleg/Georg
Aus ProgrammingWiki
Wiki-Quelltext dieser Seite.
<language>SQL</language>
'''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 namentliche ''Links'' unten). <br>
Bilder sind als ''jpg'' hochzuladen.
Programmiersprache ist mit ''SQL'' auszuwählen.
Für den Programmcode die Codebox verwenden, für die Abfragen die Runbox.
''Alle Übungsseiten des PWiki stehen zur Verfügung (incl. Hilfeseiten)''
Wichtige Merkmale der Modelle (Kardinalität, Normalform, ...) sind zu erläutern.<br>
Das ERM ist als Bild (erzeugt mit dem Tool "Dia") einzufügen.
Bearbeitung des Projekts ''selbstständig'' während der Unterrichtsstunden ("Fernwartung" der Eingabeboxen und Seiten möglich).
vorgesehener Zeitraum: (20.) 27.01.2014 - 10.02.2014 (Abgabe)
===Erklärungen===
Datenbasis: ''Datenmaterial, strukturierte Daten''
Datenbank: ''Verbindung aus Datenbasis und Datenbankmanagementsystem(DBMS)''
Datenbankmanagementsystem (DBMS): ''dient der Sortierung und Verwaltung von Daten''
Entität: ''beschreibt Ausprägung eines Sachverhaltes durch Angabe von Attributen''
===Kardinalitäten (Erklärung)===
1:1 Beziehung: '' Jeder Datensatz ist in Tabelle A genau einem Datensatz in Tabelle B zugeordnet und umgekehrt ''
1:n Beziehung: '' In einem Datensatz der Tabelle A können mehrere passende Datensätze in der Tabelle B zugeordnet sein, aber einem Datensatz in Tabelle B ist nie mehr als ein Datensatz in Tabelle A zugeordnet ''
m:n Beziehung: '' Jedem Datensatz in Tabelle A können mehrere passende Datensätze in Tabelle B zugeordnet sein und umgekehrt ''
'''Normalformen (ENF, ZNF):'''
ENF - Erste Normalform: '' jeder Spalte wird nur eine Information zugeordnet ''
ZNF - Zweite Normalform: '' parallele/gleichzeitige Aufteilung der Entitäten und Entitymengen in Tabellen ''
===Thema und Begründung===
Thema: CD-Versand
Begründung: Da wir dieses Thema schon im Unterricht behandelt haben, fällt mir daher das hereindenken in den Sachverhalt leichter.
==ERM==
[[Bild:Georgasdf_Diagramm3.jpeg]]
==ERM in RM==
Primärschlüssel = "Unterstrichen"
CD(CD_ID, CD-Titel, Genre, Preis, Interpret)
Versandhaus(CD_ID, Zustellungsdatum, Kunden_ID)
Kunde(Kunden_ID, Geburtsdatum, Straße, Hausnummer, Vorname, Nachname, Postleitzahl)
CD-Lager(CD_ID, Anzahl)
<code id="52f7a7020a3ea">
Create table T_Kunde (
Kunden_ID integer,
Vorname varchar (100),
Nachname varchar (100),
Postleitzahl varchar (5),
Straße varchar(100),
Hausnummer integer,
Geburtsdatum date,
Primärschlüssel (Kunden_ID)
);
Create table T_CD (
CD_ID integer,
Preis decimal,
Genre varchar (50),
Interpret varchar (50),
CD-Titel varchar (50),
Primärschlüssel (CD_ID)
);
Create table T_CD_Lager (
CD_ID integer,
Anzahl integer,
Primary Key (CD_ID)
);
Create table T_Artikel (
Kunden_ID integer,
CD_ID integer);
Create table T_Versandhaus (
Kunden_ID integer,
CD_ID integer,
Zustellungsdatum date);
INSERT INTO T_Kunde (Kunden_ID, Vorname, Nachname, Postleitzahl, Geburtsdatum, Hausnummer, Straße) VALUES ('1','Max','Mustermann','12345','12.12.1987','45','August-Bebel Str.')
INSERT INTO T_Kunde (Kunden_ID, Vorname, Nachname, Postleitzahl, Geburtsdatum, Hausnummer, Straße) VALUES ('2','Franz','Feuer','08152','26.05.2000','1','Karl-Marx Str.')
INSERT INTO T_Kunde (Kunden_ID, Vorname, Nachname, Postleitzahl, Geburtsdatum, Hausnummer, Straße) VALUES ('3','Susi','Sorglos','27485','14.07.1978','90','Paul-Neck Str.')
INSERT INTO T_Kunde (Kunden_ID, Vorname, Nachname, Postleitzahl, Geburtsdatum, Hausnummer, Straße) VALUES ('4','Rudi','Riesenrad','61554','07.01.1965','12','Wilhelm-von-Polenz Str.')
INSERT INTO T_Kunde (Kunden_ID, Vorname, Nachname, Postleitzahl, Geburtsdatum, Hausnummer, Straße) VALUES ('5','Valentia','Vegetarier','23123','12.05.1969','2','Große Str.')
INSERT INTO T_Kunde (Kunden_ID, Vorname, Nachname, Postleitzahl, Geburtsdatum, Hausnummer, Straße) VALUES ('6','Toni','Trockenpflaume','12312','09.01.1999','4','Kleine Str.')
INSERT INTO T_CD (CD_ID, Interpret, Preis, CD-Titel, Genre) VALUES ('1','Linkin Park','20.00','Minutes to Midnight','Rock')
INSERT INTO T_CD (CD_ID, Interpret, Preis, CD-Titel, Genre) VALUES ('2','Eminem','14.95','Recovery','Hip Hop')
INSERT INTO T_CD (CD_ID, Interpret, Preis, CD-Titel, Genre) VALUES ('3','Silla','19.95','Die Passion Whisky','Hip Hop')
INSERT INTO T_CD (CD_ID, Interpret, Preis, CD-Titel, Genre) VALUES ('4','Andrea Berg','24.95','Du hast mich 1000mal belogen','Schlager')
INSERT INTO T_CD_Lager (CD_ID, Anzahl) VALUES ('1','19')
INSERT INTO T_CD_Lager (CD_ID, Anzahl) VALUES ('2','43')
INSERT INTO T_CD_Lager (CD_ID, Anzahl) VALUES ('3','3')
INSERT INTO T_CD_Lager (CD_ID, Anzahl) VALUES ('4','89')
Insert into T_Artikel (Kunden_ID, CD_ID) values ('1', '2)
Insert into T_Artikel (Kunden_ID, CD_ID) values ('2', '4)
Insert into T_Artikel (Kunden_ID, CD_ID) values ('3', '1)
Insert into T_Artikel (Kunden_ID, CD_ID) values ('4', '3)
Insert into T_Artikel (Kunden_ID, CD_ID) values ('5', '4)
Insert into T_Versandhaus (Kunden_ID, CD_ID) values ('1','2')
Insert into T_Versandhaus (Kunden_ID, CD_ID) values ('1','4')
Insert into T_Versandhaus (Kunden_ID, CD_ID) values ('1','1')
Insert into T_Versandhaus (Kunden_ID, CD_ID) values ('1','3')
Insert into T_Versandhaus (Kunden_ID, CD_ID) values ('1','4')
</code>
<run
Zeige, alle Informationen über das Hotel!
<run id="52dd5a9444e2f">SELECT * FROM Hotel;</run>
Welche Zimmer mit welcher Größe hat die Kundennummer 10 gebucht?
<run id="52ef621c03b07">SELECT Zimmernummer, L_Größe From Luxuszimmer WHERE Kundennummer='10';</run>
Auf welchen Straßen leben welche Kunden der Stadt Bautzen?
<run id="52ef621c03baa">SELECT K_Straße, K_Name FROM Kunden WHERE K_Ort='Bautzen';</run>
Gib die Mitarbeiternummer der Mitarbeiter, die ein großes Zimmer (40) reinigen, an!
<run id="52ef621c03c61">SELECT DISTINCT VerbindungML.Mitarbeiternummer FROM Luxuszimmer, VerbindungML
WHERE L_Größe='40' and VerbindungML.Zimmernummer=Luxuszimmer.Zimmernummer;</run>
Welcher Mitarbeiter haben die gebuchten Zimmer des Herrn Hackenbergs gereinigt?
<run id="52f78152eccaa">SELECT Distinct M_Name
FROM Mitarbeiter, VerbindungML, Luxuszimmer, Kunden
WHERE K_Name='Hackenberg' and VerbindungML.Zimmernummer=Luxuszimmer.Zimmernummer
and Luxuszimmer.Kundennummer=Kunden.Kundennummer and VerbindungML.Mitarbeiternummer=Mitarbeiter.Mitarbeiternummer;</run>
Für eigene Abfragen:
<run id="52ef621c03d93"></run>
</run>