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)

-> Veränderung Modell: -> Kaufdatum,Hubraum, Fremdschlüssel: Modell_ID bei Entität Auto , Relation: Hersteller-Modell überprüfen , Dia downloaden

==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', 'AH4', 'M6', '10000' ,'schwarz' , '2012', 'sehr gut' , 'A6');
INSERT INTO Auto VALUES ('01', 'AH4', 'M7', '5000' ,'gold' , '2013', 'sehrgut' , 'A7');
INSERT INTO Auto VALUES ('02', 'AH4', 'M8', '40000' ,'silber' , '2007', 'gut' , 'A8');
INSERT INTO Auto VALUES ('01', 'AH4', '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', '01067', 'VW', 'Dresden');
INSERT INTO Autohaus VALUES ('AH3', '02625', 'VW', 'Bautzen');
INSERT INTO Autohaus VALUES ('AH4', '02625', 'Seat', 'Bautzen');

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 Modell VALUES ('H1', 'VW', 'Wolfsburg', '05361/986622', 'Christine Ritz');
INSERT INTO Modell VALUES ('H2', 'Seat', 'Barcelona', '06150/1818999' ,'Jürgen Stackman');
INSERT INTO Modell VALUES ('H3', 'Porsche', 'Stuttgart-Zuffenhausen', '05743/09001234' ,'Wolfgang Porsche;Matthias Müller');
INSERT INTO Modell VALUES ('H4', 'Renault', 'Boulogne-Billancourt', '01350/80001239' ,'Carlos Ghosn');
INSERT INTO Modell VALUES ('H5', 'Dodge', 'Michigan', '64813/2634802' ,'Gigolo Dodge');




</code>

==SQL-Abfragen==
Tabelle Kunde
<run id="52dd5a932df8z">SELECT * FROM Kunde</run>
Tabelle Auto
<run id="1h6d8l4h78h3h">SELECT * FROM Auto</run>
Auf welchen Straßen leben welche Kunden der Stadt Bautzen?
<run id="52ef62f58jg04">SELECT K_Straße, K_Name FROM Kunde WHERE K_Ort='Bautzen'</run>
Gib die Mitarbeiternummer der Mitarbeiter, die ein großes Zimmer (40) reinigen, an!
<run id="52ef634jg80kf">SELECT DISTINCT VerbindungML.Mitarbeiternummer FROM Luxuszimmer, VerbindungML
WHERE L_Größe='40' and VerbindungML.Zimmernummer=Luxuszimmer.Zimmernummer;</run>
Für eigene Abfragen:
<run id="52ef6234gkö6x"></run>