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)




==Tabellen==

<code id="52f7a7020a3ea">
Create table T_Kunde (
     Kunden_ID integer,
     Vorname varchar (100),
     Nachname varchar (100),
     Postleitzahl varchar (5),
     Strasse varchar (100),
     Hausnummer integer,
     Geburtsdatum date,
     Wohnort integer (100),
     Primary Key (Kunden_ID)
);



Create table T_CD (
    CD_ID integer,
    Preis decimal,
    Genre varchar (50),
    Interpret varchar (50),
    CD_Titel varchar (50),
    Primary Key (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);
    Primary Key (CD_ID, Kunden_ID)
);

Create table T_Versandhaus (
   Kunden_ID integer,
   CD_ID integer,
   Zustellungsdatum date);
   Primary Key (CD_ID, Kunden_ID)

);

INSERT INTO T_Kunde (Kunden_ID, Vorname, Nachname, Postleitzahl, Geburtsdatum, Hausnummer, Strasse, Wohnort) VALUES ('1','Max','Mustermann','12345','12.12.1987','45','August-Bebel Str.','Bautzen');
INSERT INTO T_Kunde (Kunden_ID, Vorname, Nachname, Postleitzahl, Geburtsdatum, Hausnummer, Strasse, Wohnort) VALUES ('2','Franz','Feuer','08152','26.05.2000','1','Karl-Marx Str.','Dresden');
INSERT INTO T_Kunde (Kunden_ID, Vorname, Nachname, Postleitzahl, Geburtsdatum, Hausnummer, Strasse, Wohnort) VALUES ('3','Susi','Sorglos','27485','14.07.1978','90','Paul-Neck Str.','Muenchen');
INSERT INTO T_Kunde (Kunden_ID, Vorname, Nachname, Postleitzahl, Geburtsdatum, Hausnummer, Strasse, Wohnort) VALUES ('4','Rudi','Riesenrad','61554','07.01.1965','12','Wilhelm-von-Polenz Str.','Hamburg');
INSERT INTO T_Kunde (Kunden_ID, Vorname, Nachname, Postleitzahl, Geburtsdatum, Hausnummer, Strasse, Wohnort) VALUES ('5','Valentia','Vegetarier','23123','12.05.1969','2','Große Str.','Hochhausen');
INSERT INTO T_Kunde (Kunden_ID, Vorname, Nachname, Postleitzahl, Geburtsdatum, Hausnummer, Strasse, Wohnort) VALUES ('6','Toni','Trockenpflaume','12312','09.01.1999','4','Kleine Str.','Moskau');

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>

==SQL-Abfragen==


<run id="52dd5a9444e2f">SELECT * FROM T_CD;</run>

<run id="52ef621c03b07">SELECT * FROM T_Kunde;</run>

<run id="52f89d5f3ab06"> SELECT * FROM T_CD_Lager;</run>

<run id="52f89d5f3aba0"> SELECT * FROM T_Artikel;</run>