PMG1617/DB Beleg/RichardB

Aus ProgrammingWiki

Wiki-Quelltext dieser Seite.

<language>SQL</language>
'''Datenbank-Projekt: Smartphones'''

==Begründung der Themenwahl==

Ich habe dieses Thema gewählt, weil Smartphones in unserer heutigen Zeit weit verbreitet sind und einen großen Anteil zur fortschrittlichen Entwicklung der Technologie beitragen. Ebenso habe ich mich für dieses Thema entschieden da Smartphones in unserer Gesellschaft nicht mehr wegzudenken sind und sich ein gutes ERM damit darstellen lässt.

==Modellierung in einem ERM==

'''Kardinalität''':

1:1 Beziehung: Eine Entität X ist genau einer anderen Entität Y zugeordnet.

1:n Beziehung: Einer Entität X auf der einen Seite stehen keine, eine oder mehrere Entitäten auf der anderen Seite gegenüber.

n:m Beziehung: Auf beiden Seiten können beliebeig viele Entitäten in Beziehung zueinander stehen.

'''Normalformen''':

ENF: [erste Normalform] --> jede Information in einer Spalte.


ZNF: [zweite Normalform] --> befindet sich in 1. Normalform und  Nichtschlüsselattribut von jedem Schlüsselkandidaten voll funktional abhängig.


DNF: [dritte Normalform]--> befindet sich in 2. Normal und Nichtschlüsselattribut transitiv von Kandidatenschlüssel abhängt.

==Transformation in das Entity-Relationship-Modell==

[[Bild:Bsler_Dqwd.PNG]]

==Transformation ERM in RM==
Primärschlüssel = Unterstrichen
Sekundärschlüssel = gestrichelt Unterstrichen 

'''Kunde''' (Vorname, Nachname, Geburtsjahr, Straße, Wohnort, Postleitzahl, Hausnummer, Kunden_ID)

'''Smartphone''' (Hersteller, Software, Hardware, Größe , Smartphone_ID, Preis, Typenbezeichnung )

'''Händler''' (Name, Anzahl, Adresse, Händler_ID, Kunden_ID, Preis)


(Straße, Wohnort, Postleitzahl, Hausnummer) --> Sind im ERM als Adresse zusammengefasst

==Datenbank==
<code id="5aa64d07e2c28">
Create Table Kunde(
        Vorname varchar,
        Nachname varchar,
        Geburtsjahr varchar,
        Straße varchar,
        Wohnort varchar,
        Postleitzahl varchar,
        Hausnummer varchar,
        Kunden_ID integer)
        Primary Key (Kunden_ID);

Create Table Smartphone(
        Hersteller varchar,
        Software varchar,
        Hardware varchar,
        Größe varchar, 
        Smartphone_ID varchar,
        Preis decimal
        Typenbezeichnung varchar)
        Primary Key (Smartphone_ID);

Create Table Händler(
        Name varchar,
        Anzahl integer,
        Adresse varchar,
        Händler_ID integer, 
        Kunden_ID integer,
        Preis decimal)
        Primary Key (Kunden_ID);

INSERT INTO Kunde (Vorname, Nachname, Geburtsjahr,Wohnort, Postleitzahl, Hausnummer, Straße, Kunden_ID) VALUES ('Max','Humpel',2000,'Bautzen',02625,'Czornebohstraße',15,1);
INSERT INTO Kunde (Vorname, Nachname, Geburtsjahr,Wohnort, Postleitzahl, Hausnummer, Straße, Kunden_ID) VALUES ('Erik','Seppel',1960,'Dresden',01067,'Siemensstraße',6,2);
INSERT INTO Kunde (Vorname, Nachname, Geburtsjahr,Wohnort, Postleitzahl, Hausnummer, Straße, Kunden_ID) VALUES ('Maik','Müller',1998,'Dresden','1067,'Saalfelderstraße',5,3);
INSERT INTO Kunde (Vorname, Nachname, Geburtsjahr,Wohnort, Postleitzahl, Hausnummer, Straße, Kunden_ID) VALUES ('Cindy','Otto',2003,'Bautzen',02625,'Rosenstraße',3,4);
INSERT INTO Kunde (Vorname, Nachname, Geburtsjahr,Wohnort, Postleitzahl, Hausnummer, Straße, Kunden_ID) VALUES ('Luisa','Henkel',1990,'Leipzig','04103,'Ungerstraße',9,5);


INSERT INTO Smartphone (Hersteller, Software, Größe, Smartphone_ID, Preis, Typenbezeichnung) VALUES ('Apple','IOS',5,1,390,'Iphone 8');
INSERT INTO Smartphone (Hersteller, Software, Größe, Smartphone_ID, Preis, Typenbezeichnung) VALUES ('Samsung','Android',6,2,250,'Samsung J3');
INSERT INTO Smartphone (Hersteller, Software, Größe, Smartphone_ID, Preis, Typenbezeichnung) VALUES ('Huawei','Android',4,3,290,'Huawei P10'); 
INSERT INTO Smartphone (Hersteller, Software, Größe, Smartphone_ID, Preis, Typenbezeichnung) VALUES ('Samsung','Android',7,4,410,'Note 8');
INSERT INTO Smartphone (Hersteller, Software, Größe, Smartphone_ID, Preis, Typenbezeichnung) VALUES ('Apple','IOS',6,5,1000,'Iphone 10'); 


INSERT INTO Händler (Name, Anzahl, Ort, Postleitzahl, Straße, Hausnummer)  VALUES ('Medimax',20,'Bautzen',02625,'Kornmarkt',7);
INSERT INTO Händler (Name, Anzahl, Ort, Postleitzahl, Straße, Hausnummer ) VALUES ('Expert',40,'Bautzen',02625,'Dresdenerstraße',50);
INSERT INTO Händler (Name, Anzahl, Ort, Postleitzahl, Straße, Hausnummer ) VALUES ('Vodafoneshop',5,'Dresden',01067,'Kesseldorferstraße',2);
INSERT INTO Händler (Name, Anzahl, Ort, Postleitzahl, Straße, Hausnummer ) VALUES ('Billigmillig',5,'Bautzen',02625,'Löbauerstraße',99);
INSERT INTO Händler (Name, Anzahl, Ort, Postleitzahl, Straße, Hausnummer ) VALUES ('Conrad',90,'Leipzig',09604,'Neumarkt',20);

</code>

==Abfragen==
<run></run>

SELECT * FROM Kunde;

SELECT *
FROM Kunde 
WHERE Geburtsjahr = (SELECT ALL(K.Geburtsjahr) FROM Kunde AS K)

==kritische Reflexion zu Modellierung und Umsetzung==

Bevor man ein Datenbank-Projekt erstellt muss man auf wichtige Faktoren achten. Die Basis unseres Datenbank-Projektes bildet das gewählte Thema, dieses sollte sorgfältig überlegt und bedacht werden. Hat man nun ein passendes Thema gefunden, welches sich gut darstellen lässt und nicht zu umfangreich ist, kann man beginnen. Unsere erste Aufgabe war es, zu Begründen weshalb wir unser Thema gewählt haben. Diese Aufgabe viel leicht, da man ein Thema seiner Wahl nehmen durfte und somit schon eine gegebene Begründung sowie Argumente hatte. Die zweite Aufgabe bestand darin ein ERM zu modellieren und darauf folgend die dritte, dieses in ein Relationenmodell zu transformieren. Beide erwiesen sich als einfache Aufgaben. Auf die drei zu Beginn noch leicht zu erledigenden Aufgaben folgten allerdings zunehmend schwierigere. Das Erstellen der Datenbankstrukturen, wie auch der Abfragen brachte die ersten Probleme hervor. Bei beiden war eine vollständige Konzentration notwendig, denn schon die kleinsten Schreibfehler könnten Fehlermeldungen auslösen. Die Datenbankstruktur konnte Ich noch fertigstellen, jedoch bereiteten die Abfragen große Probleme. Fehlermeldungen über Fehlermeldungen machten es unmöglich die Abfragen zu erstellen.