PMG/Kurs 1214/DB Beleg/Nico
Aus ProgrammingWiki
Wiki-Quelltext dieser Seite.
<language>SQL</language>
'''Datenbank - Beleg_Nico.Stecher'''
== Datenbank Grundlagen ==
===Begriffe===
'''''Datenbasis:''''' strukturiertes Datenmaterial
'''''Datenbankmanagementsystem (DBMS):''''' Sortierung und Verwaltung von Daten
'''''Datenbank:''''' Verbindung/Kombination Datenbasis und DBMS
'''''Entität(Entity):''''' individuell identifizierbares Objekt der Wirklichkeit ( Personen,Objekte,Ereignis) [http://de.wikipedia.org/wiki/Entity-Relationship-Modell]
'''''Entitymenge:''''' zusammenfassen von Entitäten gleicher Eigenschaft; Angabe durch Substantive
'''''Attribut:''''' Eigenschaft einer Entität
===Kardinalitäten im ER-Modell===
[[Bild:Stechern_Grundlagendb.JPG]]
[http://www.wittye.com/content/schule/nwt13/Datenbanken-Modellierung.pdf]
===Normalformen===
''1. Normalform (1. NF):'' Wertebereiche der Merkmale sind atomar (jede Information -> eine Spalte).
''2. Normalform (2. NF):''Nichtschlüsselmerkmale sind von allen Schlüsselmerkmalen voll funktional abhängig ( Primärschlüssel-> für eindeutige Zuordnung)
''3. Normalform (3. NF):''kein Nichtschlüsselmerkmal ist von irgendeinem Schlüssel transitiv abhängig
[http://www.mubk.de/lernbereiche/infowirtschaft/wi/datenbanken/db04.htm]
= Thema =
==Begründung==
Mein Thema ist der Autokauf. Ich habe dieses Thema gewählt, weil beim Autokauf gewisse Beziehungen eindeutig zu erläutern und voneinander abhängig sind. Somit hängt der Autokauf von verschiedenen Faktoren ab, wodurch sich ein Relationen-Modell darstellen lässt. Außerdem kann man durch die Erstellung gewisser Tabellen einen Überblick über die Thematik erkennen und gewisse Abhängigkeiten besser deuten.
== ER-Modell ==
[[Bild:Stechern_Diagram1.jpg]]
==='''Kunde kauft Auto '''===
In diesem Teilbereich habe ich die Kardinalität '''1:n''' gewählt, da das Prinzip bei mir darauf hinausläuft, dass 1 Kunde (Kunden_ID)die Chance hat mehrere Autos (Auto_ID) zu kaufen.Das Attribut ''Kunden_ID'' ist somit der Fremdschlüssel für die Entität Auto.
==='''Auto gehört Autohaus'''===
In diesem Teilbereich habe ich die Kardinalität '''n:1''' gewählt. Diese läuft darauf zurück das 'n Autos' genau einem Autohaus gehören. Das Attribut ''Autohaus_ID'' ist somit der Fremdschlüssel für die Entität Auto.
==='''Auto ist ein Modell'''===
In diesem Teilbereich habe ich die Kardinalität '''n:1''' gewählt. Diese läuft darauf zurück das 'n-Autos' genau einem gewissen Modell zugeschrieben werden. Das Attribut ''Modell_ID'' ist somit der Fremdschlüssel für die Entität Auto.
==='''Hersteller stellt Modelle her'''===
In diesem Teilbereich habe ich die Kardinalität '''1:n''' gewählt. Diese läuft darauf zurück das 'n-Modelle' genau von einem Hersteller produziert bzw. hergestellt werden. Das Attribut ''Hersteller_ID'' ist somit der Fremdschlüssel für die Entität Modell.
==Relationenmodell==
'''kundentabelle''' (KUNDEN_ID;Telefon;Vorname,Name,Wohnort,PLZ)
'''autotabelle''' (AUTO_ID;Zustand;Erstzulassung;Farbe;Tachostand;''Autohaus_ID'';''Kunden_ID'';''Modell_ID'')
'''autohaustabelle'''(AUTOHAUS_ID;PLZ;Marken;Ort)
'''modelltabelle'''(MODELL_ID;Klassen;Marke/Modellname;Leistung,''Hersteller_ID'')
'''herstellertabelle'''(HERSTELLER_ID;Name;Hauptsitz;Telefon;Kontaktperson)
==Erstellung einer Datenbank==
<code id="52dd5a9444d72">
DROP TABLE IF EXISTS Kunde;
CREATE TABLE Kunde(
Kunden_ID varchar(50),
Telefon varchar(50),
Vorname varchar(50),
Name varchar(50),
Wohnort varchar(50),
PLZ varchar(50)
);
INSERT INTO Kunde VALUES ('01', '35635', 'Chris', 'Müller', 'Wartha' , '02694');
INSERT INTO Kunde VALUES ('02', '88388', 'Patrick', 'Becker' ,'Doberschau' , '01877');
INSERT INTO Kunde VALUES ('03', '98672', 'Clara', 'Janotte', 'Bautzen' , '02625');
INSERT INTO Kunde VALUES ('04', '12121', 'Agnes','Mitschke', 'Bautzen' , '02625');
DROP TABLE IF EXISTS Auto;
CREATE TABLE Auto(
Kunden_ID varchar(50),
Autohaus_ID varchar(50),
Modell_ID varchar(50),
Tachostand varchar(50),
Farbe varchar(50),
Erstzulassung varchar(50),
Zustand varchar(50),
Auto_ID varchar(50)
);
INSERT INTO Auto VALUES ('01', 'AH1', 'M1', '70000', 'weiß' , '2005', 'gut', 'A1' );
INSERT INTO Auto VALUES ('02', 'AH2', 'M2', '150000' ,'schwarz' , '1999', 'mittel' , 'A2');
INSERT INTO Auto VALUES ('03', 'AH3', 'M3', '20000' ,'rot' , '2009', 'sehrgut' , 'A3');
INSERT INTO Auto VALUES ('04', 'AH4', 'M4', '240000' ,'pink' , '1996', 'schlecht' , 'A4');
INSERT INTO Auto VALUES ('03', 'AH4', 'M5', '35000' ,'weiß' , '2005', 'gut' , 'A5');
INSERT INTO Auto VALUES ('04', 'AH5', 'M6', '10000' ,'schwarz' , '2012', 'sehr gut' , 'A6');
INSERT INTO Auto VALUES ('01', 'AH5', 'M7', '5000' ,'gold' , '2013', 'sehrgut' , 'A7');
INSERT INTO Auto VALUES ('02', 'AH6', 'M8', '40000' ,'silber' , '2007', 'gut' , 'A8');
INSERT INTO Auto VALUES ('01', 'AH7', 'M9', '378900' ,'schwarz' , '1980', 'mittel' , 'A9');
DROP TABLE IF EXISTS Autohaus;
CREATE TABLE Autohaus(
Autohaus_ID varchar(50),
PLZ varchar(50),
Marken varchar(50),
Ort varchar(50)
);
INSERT INTO Autohaus VALUES ('AH1', '01067', 'VW', 'Dresden');
INSERT INTO Autohaus VALUES ('AH2', '01796', 'VW', 'Pirna');
INSERT INTO Autohaus VALUES ('AH3', '02625', 'VW', 'Bautzen');
INSERT INTO Autohaus VALUES ('AH4', '02625', 'Seat', 'Bautzen');
INSERT INTO Autohaus VALUES ('AH5', '28195', 'Porsche', 'Bremen');
INSERT INTO Autohaus VALUES ('AH6', '80331', 'Renault', 'München');
INSERT INTO Autohaus VALUES ('AH7', '10115', 'Dodge', 'Berlin');
DROP TABLE IF EXISTS Modell;
CREATE TABLE Modell(
Hersteller_ID varchar(50),
Klassen varchar(50),
Leistung varchar(50),
Modellname varchar(50),
Modell_ID varchar(50)
);
INSERT INTO Modell VALUES ('H1', 'B', '250PS', 'Golf5', 'M1');
INSERT INTO Modell VALUES ('H1', 'F', '65PS', 'Lupo' ,'M2');
INSERT INTO Modell VALUES ('H1', 'A', '400PS', 'Golf6', 'M3');
INSERT INTO Modell VALUES ('H2', 'F', '70PS','Marbella', 'M4');
INSERT INTO Modell VALUES ('H2', 'C', '190PS','Exeo', 'M5');
INSERT INTO Modell VALUES ('H3', 'S', '600PS','991', 'M6');
INSERT INTO Modell VALUES ('H3', 'S', '670PS','918 Spyder/918 RSR', 'M7');
INSERT INTO Modell VALUES ('H4', 'E', '100PS','ZOE', 'M8');
INSERT INTO Modell VALUES ('H5', 'A', '380PS','Challenger', 'M9');
DROP TABLE IF EXISTS Hersteller;
CREATE TABLE Hersteller(
Hersteller_ID varchar(50),
Name varchar(50),
Hauptsitz varchar(50),
Telefon varchar(50),
Kontaktperson varchar(50)
);
INSERT INTO Hersteller VALUES ('H1', 'VW', 'Wolfsburg', '05361/986622', 'Christine Ritz');
INSERT INTO Hersteller VALUES ('H2', 'Seat', 'Barcelona', '06150/1818999' ,'Jürgen Stackman');
INSERT INTO Hersteller VALUES ('H3', 'Porsche', 'Stuttgart-Zuffenhausen', '05743/09001234' ,'Wolfgang Porsche;Matthias Müller');
INSERT INTO Hersteller VALUES ('H4', 'Renault', 'Boulogne-Billancourt', '01350/80001239' ,'Carlos Ghosn');
INSERT INTO Hersteller VALUES ('H5', 'Dodge', 'Michigan', '64813/2634802' ,'Gigolo Dodge');
</code>
==SQL-Abfragen==
'''Tabelle Kunde'''
<run id="52rr5h423df8z">SELECT * FROM Kunde</run>
'''Tabelle Auto'''
<run id="52rr5h563df8z">SELECT * FROM Auto</run>
'''Tabelle Autohaus'''
<run id="52rr5h673df8z">SELECT * FROM Autohaus</run>
'''Tabelle Modell'''
<run id="52rr5h785df8z">SELECT * FROM Modell</run>
'''Tabelle Hersteller'''
<run id="52dd5h237df8z">SELECT * FROM Hersteller</run>
'''Welche Modelle sind vom Hersteller "Porsche" hergestellt ?'''
<run id="52rr5h2678f8z">SELECT Modell_ID, Modellname, Hersteller_ID FROM Modell WHERE Hersteller_ID='H3'</run>
'''Welche Autos kauft Chris(Auto_ID,Zustand,Erstzulassung,Farbe)?'''
<run id="52rr5h588f8z">SELECT Kunden_ID,Auto_ID,Zustand,Erstzulassung,Farbe FROM Auto WHERE Kunden_ID='01';