Datenbanken odellieren Das Erstellen einer Datenbank erfolgt in ehreren Schritten, a Ende besteht eine relationale Datenbank, und nur die werden i Unterricht behandelt, lediglich aus Tabellen. I. Erstellen des Seantischen Modells. Aufgaben der Datenbank analysieren und Objekte erkennen 2. Die Attribute des Objektes benennen 3. Den Datentyp jedes Attributes festlegen 4. Zeichnen des Seantischen Modells 5. Erkennen der Beziehungen und Festlegen der Kardinalität Beispiel: Es soll der Deutsche Bundestag verwaltet werden. Von jede Abgeordneten soll die Parteizugehörigkeit, der und das Geburtsdatu sowie das Geschlecht und der Wohnort gespeichert werden, außerde seit wann er in diese Ort wohnt. Beachte, dass ein Abgeordneter ehrere Wohnorte haben kann. Von den Parteien ist der und die Adresse der Parteizentrale zu speichern. I Bundestag gibt es Fraktionen, die sich aus einer oder ehrerer Parteien zusaensetzen. Von den Franktionen soll der gespeichert werden und welche Parteien ihr jeweils angehören. U Problee bei Tippfehlern vereiden zu helfen, soll der Ort als eigene Klasse odelliert werden! Zeichne das entsprechende Seantische Modell! Lösungsvorschlag:. Es werden die Objekte Abgeordneter, Partei und Franktion erkannt. 2. Folgende Attribute üssen in der DB gespeichert werden: Abgeordneter(, Geburtsdatu, Geschlecht) Partei(, Anschrift) Fraktion() Ort(PLZ, ) Beachte: Bei Objekt Abgeordneter ist die Parteizugehörigkeit kein eigenes Objekt, da es ein Objekt Partei gibt. Bei der Franktion ist die Partei auch kein eigenes Objekt, da es das Objekt Partei gibt. Es wäre in diese Fall sicherlich nicht öglich, die Partei wegzulassen und nur bei den Objekten Abgeordneter und Fraktion die Partei als Attribut einzufügen, da zu einen zu viel Redundanz enstehen würde, da bei jede Abgeordneten die Anschrift der Parteizentrale abzuspeichern wäre, zu anderen i Vorfeld nicht eindeutig bestit werden kann, wie viele Parteien sich axial zu einer Fraktion zusaenschließen. 3. Datentyp den Attributen zuordnen! Abgeordneter{:varchar(00), Geburtsdatu(Date), Geschlecht:char} Partei{:varchar(00), Anschrift:varchar(00)} Fraktion{:varchar(00)} Ort{PLZ:varchar(5), Ort:varchar(00)} Es wird ausreichen, folgende Datentypen zu kennen: varchar(00) Zeichenfolge der Länge 00 int() ganze Zahl (benötigter Speicherplatz 8 Byte) Date Datu i Forat JJJJ-MM-TT Decial(0,2) Dezialzahl it zwei Nachkoastellen Double(6) (Fließ-)Koazahl 2006 Manuel Friedrich email: info@anuel-friedrich.de - Seite von 5
Anerkung: Bei der Postleitzahl wird nicht int verwendet, da es Postleitzahlen gibt, die it 0 beginnen und diese führende 0 bei Verwendung einer Ganzzahl wegfallen würde. 4. / 5. ABGEORDNETER :varchar(00), Geburtsdatu(Date), Geschlecht:char Wohnt seit:date ORT n PLZ:varchar(5), Ort:varchar(00) gehoehrt_an hat_sitz_in bildet PARTEI :varchar(00), Anschrift:varchar(00), FRAKTION :varchar(00) II.Erstellen des Logischen Modells Es gilt nun, das Seantische Modell in ein Logisches Modell uzuwandeln! Also eine Anzahl von Tabellen zu erstellen.. Wandle die Klassen zu Tabellen u, der Tabellennae ergibt sich aus de Klassennaen, jede Tabelle hat eine Spalte it de n ID, die den Priärschlüssel der Tabelle bildet und jedes Attribut bildet eine weitere Spalte. Abgeordneter ID Geburtsdatu Geschlecht Partei ID Anschrift Ort ID PLZ 2006 Manuel Friedrich email: info@anuel-friedrich.de - Seite 2 von 5
Fraktion ID 2. Wandle jede -n-beziehung in eine eigene Tabelle u. Die Tabelle hat den n der Beziehung und indestens zwei Spalten, nälich die beiden Priärschlüssel der verbundenen Klassen. Diese bilden in der Tabelle Fredschlüssel und erhalten daher einen neuen n, nälich <Klassennae>Nr. Außerde können weitere Spalten dadurch entstehen, dass Attribute an der Beziehung angeheftet wurden. Wohnt OrtNr AbgeordneterNr Seit 3. Aus --Beziehungen üssen keine eigenen Tabellen erstellt werden, es genügt die Tabelle zu erweitern, an der die Kardinalität erittelt wurde. Erweitert wird diese Tabelle u den Fredschlüssel. Abgeordneter ID Geburtsdatu Geschlecht ParteiNr Partei ID Anschrift OrtNr FraktionNr Nun sind alle Tabellen erstellt, was an auch als Logisches Modell der Datenbank bezeichnet. III.Abfragen Mit Hilfe der Sprache SQL (Structured Query Language) können nun Inforationen aus der Datenbank abgefragt werden. Die Abfragen erfolgen stets nach folgende Schea: SELECT Spaltennae FROM Tabellennae und können aber noch erweitert werden u WHERE ORDER BY AS GROUP BY Auswahl bestiter Zeilen Reihenfolge anderer in Zusaenhang it count(*), MIN(*), MAX(*), AVG(*) und SUM(*) 2006 Manuel Friedrich email: info@anuel-friedrich.de - Seite 3 von 5
Beispiel: Thea: Zusaenfassung DB Ort ID PLZ 000 Berlin 2 95028 Hof Abgeordneter ID Geburtsdatu Geschlecht ParteiNr Paul Dapf 950-0-2 M 2 970-05-3 W 2 Wohnt OrtNr AbgeordneterNr Seit 2 2 980-02-5 2 2004-06-7 2 950-0-2 Beispiel n aller Abgeordneter: SELECT FROM Abgeordneter; Paul Dapf Beispiel 2 und Geschlecht: SELECT, Geschlecht FROM Abgeordneter; Paul Dapf Geschlecht M W Beispiel 3 und Geschlecht sortiert nach : SELECT, Geschlecht FROM Abgeordneter ORDER BY ; Paul Dapf Geschlecht M W Beispiel 4 Wie viele Abgeordnete wohnen in jede Ort: SELECT OrtNr, count(*) AS Anzahl FROM Wohnt GROUP BY OrtNr; OrtNr AbgeordneterNr 2 2 2006 Manuel Friedrich email: info@anuel-friedrich.de - Seite 4 von 5
Bei Abfragen über ehr als einer Tabelle sind alle betroffenen Tabellen (die auf de Weg liegen, also die i Seantischen Modell zwischen den Klassen liegen) it einzubeziehen. Die Fredschlüssel der beteiligten Klassen/Beziehungen sind jeweils gleichzusetzen! Beispiel 5 Gib die n Aller Abgeordneten der Partei 2 aus und den n des Ortes in de sie wohnen, sortiert nach n und bei nsgleichheit auch nach Ortsnae, der Ortsnae soll die Überschrift Ort haben: SELECT Abgeordneter., Ort. AS Ort FROM Abgeordneter, Wohnt, Ort WHERE ParteiNr=2 AND Abgeordneter.ID=wohnt.AbgeordneterNr AND wohnt.ortnr=ort.id ORDER BY Abgeordneter., Ort.; Geburtsdatu Berlin Hof Anerkung: Wenn alle Spalten ausgewählt werden sollen kann das Wildcard * verwendet werden. 2006 Manuel Friedrich email: info@anuel-friedrich.de - Seite 5 von 5