PMG2224 4/DB Beleg/Soraya
Aus ProgrammingWiki
Wiki-Quelltext dieser Seite.
<language>SQL</language> #Wie lautet die Telefonnummer von Fahrlehrer Schmidt? <run id="65f9d5df3098d"> SELECT Telefonnummer FROM Fahrlehrer WHERE Nachname = "Schmidt"; </run> ==Datenbank-Beleg:== <document>SorayaM_ERM-Modell.pdf</document> <document>SorayaM_RM-Modell.pdf</document> '''Thema der Datenbank:''' Fahrschule '''Ziel/Begründung:''' * verschiedene Datenpunkte, die effizient organisiert werden können * erleichterter Zugriff auf: ** Schülerinformationen ** Theoriestunden ** Fahrstunden ** Prüfungstermine ** Fahrlehrerdaten ** Fahrzeuge '''kritische Reflexion zu Modellierung und Umsetzung:''' * Nicht alle Funktionen/Geschäftsprozesse einer Fahrschule sind im Datenbankdesign umgesetzt * Nur der wichtigste Geschäftsprozess einer Fahrschule wurde umgesetzt: Durchführung von praktischen Fahrstunden und Theoriestunden '''wichtige Merkmale der Modelle:''' :''Kardinalität:'' * Die Kardinalität beschreibt die Beziehung zwischen den Entitäten in der Datenbank * Sie gibt an, wie viele Instanzen einer Entität mit einer anderen Entität in Beziehung stehen können * drei Haupttypen der Kardinalität: ** 1:1 (Eins-zu-Eins): Eine Instanz einer Entität ist genau mit einer Instanz einer anderen Entität verknüpft ** 1:N (Eins-zu-Viele): Eine Instanz einer Entität kann mit mehreren Instanzen einer anderen Entität verknüpft sein ** N:M (Viele-zu-Viele): Mehrere Instanzen einer Entität können mit mehreren Instanzen einer anderen Entität verknüpft sein -> -> Dies erfordert eine Zwischentabelle * Die Kardinalität beeinflusst das Datenbankdesign und die Beziehung zwischen den Tabellen ''Entität:'' * Ein einzelnes Objekt mit den dazugehörigen Eigenschaften. * Entitäten des Modells sind: Fahrzeug, Fahrstunde, Fahrlehrer, Fahrschueler, Theorieunterricht ''Relationship (Beziehung):'' * Beziehungen sind Assoziationen zwischen oder unter Entitäten * Beziehungen des Modells: :Fahrlehrer -> '''„fuehrtDurch“''' -> Fahrstunde :Fahrlehrer -> '''„fuehrtDurch“''' -> Theorieunterricht :Fahrschueler -> '''„nimmt teil“''' -> Fahrstunde :Fahrschueler -> '''„nimmt teil“''' -> TheorieUnterricht :Fahrstunde -> '''„nutzt“''' -> Fahrzeug ''Attribute:'' *Attribute sind Eigenschaften einer Entität, einer Viele-zu-viele-Beziehung oder einer Eins zu-eins-Beziehung * im Modell: Die meisten Attribute sind Eigenschaften der Entitäten, außer das Attribut '''„istPruefer“''' (dieses ist die Eigenschaft der '''„fuehrtDurch“''' Beziehung zw. Fahrlehrer und Fahrstunde, weil Fahrlehrer selbst auch Prüfer sein können) ''Normalform:'' *unter Datenbanknormalisierung versteht man den Prozess der Organisation von Daten in Tabellen in :einer Weise, dass diese konsistent und frei von Datenanomalien sind *Normalisierung ist ein :wesentlicher Bestandteil der relationalen Datenbanktheorie -> keine doppelte Datenhaltung -> dasselbe Attribut einer Tabelle darf nicht in einer anderen Tabelle vorkommen *1. Normalform: alle Attribute in einer Tabelle liegen atomar vor (jede Information innerhalb einer Tabelle erhält ihre eigene Tabellenspalte; Daten werden einheitlich und klar strukturiert) ''Primärschlüssel'' *ist in jeder Entität enthalten (unterstrichen gekennzeichnet) *ist eine Spalte/Spaltengruppe in einer Tabelle, deren Werte eine Zeile in der Tabelle eindeutig kennzeichnen ''Fremdschlüssel'' *ist eine Spalte/Spaltengruppe in einer Tabelle, deren Werte den Werten :des Primärschlüssels in einer anderen Tabelle entsprechen *verwendet in den Beziehungen „fuehrtDurch“, „nimmtTeil“ '''Verwendete Quellen/Tools:''' <code id="65f6bce623267">create database Fahrschule; use Fahrschule; CREATE TABLE Fahrzeug ( id INT NOT NULL auto_increment, Name VARCHAR(128) NOT NULL, PRIMARY KEY (id) ); CREATE TABLE Fahrlehrer ( id INT NOT NULL auto_increment, Vorname VARCHAR(128) NOT NULL, Nachname VARCHAR(128) NOT NULL, Telefonnummer VARCHAR(16) NOT NULL, PRIMARY KEY (id) ); CREATE TABLE Fahrschueler ( id INT NOT NULL auto_increment, Vorname VARCHAR(128) NOT NULL, Nachname VARCHAR(128) NOT NULL, Telefonnummer VARCHAR(16) NOT NULL, PRIMARY KEY (id) ); CREATE TABLE Fahrstunde ( id INT NOT NULL auto_increment, Start DATETIME NOT NULL, Ende DATETIME NOT NULL, istSonderfahrt INT NOT NULL, kostenProStunde FLOAT NOT NULL, istPruefung INT NOT NULL, FahrschuelerID INT NOT NULL, FahrzeugID INT NOT NULL, PRIMARY KEY (id), FOREIGN KEY (FahrschuelerID) REFERENCES Fahrschueler(id), FOREIGN KEY (FahrzeugID) REFERENCES Fahrzeug(id) ); CREATE TABLE TheorieUnterricht ( Start DATETIME NOT NULL, Ende DATETIME NOT NULL, istPruefung INT NOT NULL, id INT NOT NULL auto_increment, FahrlehrerID INT NOT NULL, PRIMARY KEY (id), FOREIGN KEY (FahrlehrerID) REFERENCES Fahrlehrer(id) ); CREATE TABLE nimmtTeil ( FahrschuelerID INT NOT NULL, TheorieUnterrichtID INT NOT NULL, PRIMARY KEY (FahrschuelerID, TheorieUnterrichtID), FOREIGN KEY (FahrschuelerID) REFERENCES Fahrschueler(id), FOREIGN KEY (TheorieUnterrichtID) REFERENCES TheorieUnterricht(id) ); CREATE TABLE fuertDurch ( istPruefer INT NOT NULL, FahrlehrerID INT NOT NULL, FahrstundeID INT NOT NULL, PRIMARY KEY (FahrlehrerID, FahrstundeID), FOREIGN KEY (FahrlehrerID) REFERENCES Fahrlehrer(id), FOREIGN KEY (FahrstundeID) REFERENCES Fahrstunde(id) ); </code>