PMG/Kurs 1214/DB Beleg/Tom

Aus ProgrammingWiki

Wiki-Quelltext dieser Seite.

<language>SQL</language>
'''RM aus dem ERM ableiten, RM nicht als Screenshot von Access, sondern als "Zeilen" mit PS und Fremdschlüsseln'''
= Datenbankbeleg Tom Zieschank =

== Datenbank Einführung ==

=== Begründung ===

Ich habe eine Datenbank erstellt, die sich um einen Online-Videospiel-Versand dreht.

Ich denke, dass sich eine Datenbank hier aufgrund der vielen Bestellungen und der Übersicht lohnt.

Über die Datenbank sind nun leicht Informationen herauszufinden, wie beispielsweise die vorratsmenge, die hinterlegten Postdaten, Mengen und was ein Kunde für Artikel bestellte.
=== Grundlagen ===
Datenbasis: ''Datenmaterial, strukturierte Daten''

Datenbankmanagementsystem (DBMS): ''dient der Sortierung und Verwaltung von Daten''

Datenbank: ''Datenbasis und Datenbankmanagementsystem (DBMS) in Verbindung''


==== Kardinalitäten ====

1:1-Beziehung: ''Jeder Entität der Entitymenge A wird genau eine Entität der Entitymenge B zugeordnet und umgekehrt.''

1:n-Beziehung: ''Jeder Entität der Entitymenge A können mehrere Entitäten der Entitymenge B zugeordnet werden, umgekehrt kann jedoch jeder Entität der Menge B nur genau eine Entität der Menge A zugeordnet werden.''

m:n-Beziehung: ''Jeder Entität der Entitymenge A können mehrere Entitäten der Entitymenge B zugeordnet werden und umgekehrt.''


==== Normalformen ====

ENF - Erste Normalform: ''jeder Spalte wird nur eine Information zugeordnet. Dadurch werden erst Abfragen ermöglicht, da es keine Komplikationen bei der Suche gibt.''

ZNF - Zweite Normalform: ''simultane Aufteilung der Entitäten und Entitymengen in Tabellen. Jede Relation modelliert nur einen Sachverhalt. Das Verständnis der Datenbank Strukturen wird so erleichtert. Außerdem wird Redundanz (Dopplungen) vermieden.''

=== Entity Relationship Modell ===

[[Bild:TomLeech_Diagramm1.jpeg|675px]]

=== Relationship Modell ===



'''tbl_Kunde'''(K_ID,Vorname,Nachname,PLZ,Straße,Hausnummer,Geb_Datum)

'''tbl_KundenArtikel'''(''K_ID,A_ID'')

'''tbl_Artikel'''(A_ID,Preis,Name,FSK,Genre,Plattform)

'''tbl_Lager'''(Menge,''A_ID'')

'''tbl_Post'''(Abholdatum,Auslieferungsdatum,''K_ID,A_ID'')

[[Bild:TomLeech_RM.jpg]]


== Datenbank ==

=== Tabellenerstellung und Füllung ===

<code id="52ef556cbb8f5">
DROP TABLE IF EXISTS tbl_Kunde;
CREATE TABLE tbl_Kunde (
     K_ID integer,
     Vorname varchar (255),
     Nachname varchar (255),
     PLZ varchar (5),
     Straße varchar(255),
     Hausnummer integer,
     Geb_Datum date,
     PRIMARY KEY (K_ID)
);

DROP TABLE IF EXISTS tbl_Artikel;
CREATE TABLE tbl_Artikel (
     A_ID integer,
     Preis decimal 10.2,
     Name varchar(255),
     FSK integer,
     Genre varchar (255),
     Plattform varchar (255),
     PRIMARY KEY (A_ID)
);

DROP TABLE IF EXISTS tbl_KundenArtikel;
CREATE TABLE tbl_KundenArtikel (
     K_ID integer,
     A_ID integer,
);

DROP TABLE IF EXISTS tbl_Lager;
CREATE TABLE tbl_Lager (
     Mengen integer,
     A_ID integer,
);

DROP TABLE IF EXISTS tbl_Post;
CREATE TABLE tbl_Post;
     K_ID integer,
     A_ID integer,
     Auslieferungsdatum date,
     Abholdatum date,
);     


INSERT INTO tbl_Kunde (K_ID,Vorname,Nachname,PLZ,Straße,Hausnummer,Geb_Datum,) VALUES (1,'Jakob','Räbiger','02627','Pommritz',2,07.03.1996);
INSERT INTO tbl_Kunde (K_ID,Vorname,Nachname,PLZ,Straße,Hausnummer,Geb_Datum,) VALUES (2,'Tom','Zieschank','02694','Hauptstr'.,10,24.08.1995);
INSERT INTO tbl_Kunde (K_ID,Vorname,Nachname,PLZ,Straße,Hausnummer,Geb_Datum,) VALUES (3,'Alexander','Rudel','02625','Otto-Nagel-Straße',20,01.03.1996);
INSERT INTO tbl_Kunde (K_ID,Vorname,Nachname,PLZ,Straße,Hausnummer,Geb_Datum,) VALUES (4,'Patrick','Höhne','02625','Neukircher',16,10.05.1995);

INSERT INTO tbl_Artikel (A_ID,Preis,Name,FSK,Genre,Plattform) VALUES (1,44.95,'Nintendogs',0,'Simulation','Nintendo_DS');
INSERT INTO tbl_Artikel (A_ID,Preis,Name,FSK,Genre,Plattform) VALUES (2,29.95,'Skyrim',16,'Rollenspiel','PC');
INSERT INTO tbl_Artikel (A_ID,Preis,Name,FSK,Genre,Plattform) VALUES (3,29.95,'Skyrim',16,'Rollenspiel','PS3');
INSERT INTO tbl_Artikel (A_ID,Preis,Name,FSK,Genre,Plattform) VALUES (4,29.95,'Skyrim',16,'Rollenspiel','XBOX360');
INSERT INTO tbl_Artikel (A_ID,Preis,Name,FSK,Genre,Plattform) VALUES (5,59.95,'FIFA14',0,'Sportsimulation','PS3');
INSERT INTO tbl_Artikel (A_ID,Preis,Name,FSK,Genre,Plattform) VALUES (6,59.95,'FIFA14',0,'Sportsimulation','XBOX360'));
INSERT INTO tbl_Artikel (A_ID,Preis,Name,FSK,Genre,Plattform) VALUES (7,49.95,'FIFA14',0,'Sportsimulation','PC');
INSERT INTO tbl_Artikel (A_ID,Preis,Name,FSK,Genre,Plattform) VALUES (8,59.95,'Battlefield4',18,'Ego-Shooter','PS3');
INSERT INTO tbl_Artikel (A_ID,Preis,Name,FSK,Genre,Plattform) VALUES (9,59.95,'Battlefield4',18,'Ego-Shooter','XBOX360');
INSERT INTO tbl_Artikel (A_ID,Preis,Name,FSK,Genre,Plattform) VALUES (10,59.95,'Battlefield4',18,'Ego-Shooter','PC');

INSERT INTO tbl_KundenArtikel (K_ID,A_ID) VALUES (1,2);
INSERT INTO tbl_KundenArtikel (K_ID,A_ID) VALUES (1,6);
INSERT INTO tbl_KundenArtikel (K_ID,A_ID) VALUES (2,9);
INSERT INTO tbl_KundenArtikel (K_ID,A_ID) VALUES (3,6);
INSERT INTO tbl_KundenArtikel (K_ID,A_ID) VALUES (4,1);

INSERT INTO tbl_Lager (A_ID,Mengen) VALUES (1,7);
INSERT INTO tbl_Lager (A_ID,Mengen) VALUES (2,4);
INSERT INTO tbl_Lager (A_ID,Mengen) VALUES (3,14);
INSERT INTO tbl_Lager (A_ID,Mengen) VALUES (4,11);
INSERT INTO tbl_Lager (A_ID,Mengen) VALUES (5,7);
INSERT INTO tbl_Lager (A_ID,Mengen) VALUES (6,6);
INSERT INTO tbl_Lager (A_ID,Mengen) VALUES (7,9);
INSERT INTO tbl_Lager (A_ID,Mengen) VALUES (8,2);
INSERT INTO tbl_Lager (A_ID,Mengen) VALUES (9,10);
INSERT INTO tbl_Lager (A_ID,Mengen) VALUES (10,4);

INSERT INTO tbl_Post (K_ID,A_ID,Auslieferungsdatum,Abholdatum) VALUES (1,2,03.02.2014,30.01.2014);
INSERT INTO tbl_Post (K_ID,A_ID,Auslieferungsdatum,Abholdatum) VALUES (1,6,03.02.2014,30.01.2014);
INSERT INTO tbl_Post (K_ID,A_ID,Auslieferungsdatum,Abholdatum) VALUES (2,9,05.02.2014,02.02.2014);
INSERT INTO tbl_Post (K_ID,A_ID,Auslieferungsdatum,Abholdatum) VALUES (3,6,06.02.2014,03.02.2014);
INSERT INTO tbl_Post (K_ID,A_ID,Auslieferungsdatum,Abholdatum) VALUES (4,1,08.02.2014,04.02.2014);
</code>

Kunden die im Umkreis von Bautzen wohnen?
<run id="52ef610511a5b">
Select *
From tbl_Kunden
Where PLZ like '02625';
</run>

=== Abfragen ===