q2:das_relationenmodell

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
q2:das_relationenmodell [2017/07/14 16:57] – angelegt admin03q2:das_relationenmodell [2017/07/14 18:54] (aktuell) admin03
Zeile 3: Zeile 3:
 Im letzten Theorieteil wurde das ER-Modell als Hilfsmittel zum Erstellen einer Abstraktion der Realität vorgestellt und an Beispielen erläutert. Leider lassen sich so erstellte Konzepte nicht so ohne weiteres auf einem Rechner implementieren. Die klassischen DBMS-Systeme, die als Software auf Computern zur Verfügung stehen, beruhen alle auf Modellen, deren Ge¬stal-tungsmöglichkeit gegenüber dem ER-Modell weiter eingeschränkt ist. Man unter¬scheidet zwischen dem hierarchischen, dem Netzwerk- und dem Relationalen Modell. Das mit Abstand wichtigste ist das Relationale, bei uns kurz als R-Modell bezeichnet, deshalb soll es hier als einziges vorgestellt werden. es geht zurück auf Arbeiten von E.F. Codd Anfang der 70er Jahre. Auch ACCESS verwendet dieses Datenmodell (ebenso wie Dbase, MySql, Interbase, DB2, Oracle usw.), über die beiden anderen Konzepte kann man in der einschlägigen Literatur nachlesen. Im Moment werden neue Datenmodelle debattiert, die Schwächen dieser klassischen Modelle vermeiden und in ihrer Reichhaltigkeit das ER-Modell erreichen. Das wichtigste ist das soge-nannte Objektorientierte Modell, von dem es auch erste Realisierungen als DBMS gibt.  Im letzten Theorieteil wurde das ER-Modell als Hilfsmittel zum Erstellen einer Abstraktion der Realität vorgestellt und an Beispielen erläutert. Leider lassen sich so erstellte Konzepte nicht so ohne weiteres auf einem Rechner implementieren. Die klassischen DBMS-Systeme, die als Software auf Computern zur Verfügung stehen, beruhen alle auf Modellen, deren Ge¬stal-tungsmöglichkeit gegenüber dem ER-Modell weiter eingeschränkt ist. Man unter¬scheidet zwischen dem hierarchischen, dem Netzwerk- und dem Relationalen Modell. Das mit Abstand wichtigste ist das Relationale, bei uns kurz als R-Modell bezeichnet, deshalb soll es hier als einziges vorgestellt werden. es geht zurück auf Arbeiten von E.F. Codd Anfang der 70er Jahre. Auch ACCESS verwendet dieses Datenmodell (ebenso wie Dbase, MySql, Interbase, DB2, Oracle usw.), über die beiden anderen Konzepte kann man in der einschlägigen Literatur nachlesen. Im Moment werden neue Datenmodelle debattiert, die Schwächen dieser klassischen Modelle vermeiden und in ihrer Reichhaltigkeit das ER-Modell erreichen. Das wichtigste ist das soge-nannte Objektorientierte Modell, von dem es auch erste Realisierungen als DBMS gibt. 
  
-===== Grundregel für Entitätstypen =====+Eine Relationale Datenbank besteht aus einer oder mehreren Tabellen (zweidimensionalen Feldern in der Sprache der Informatik), wobei man die Spalten meist als Attribute oder Feldbezeichner tituliert, die Zeilen als Datensatz oder Entity. Die Namen lassen schon deutlich werden, dass es eine enge Beziehung zwischen ER- und R-Modell gibt. So würde der Entity-Typ „Kurs“ im großen Bsp. des letzten Theoriekapitels durch folgende Tabelle erfasst: 
 + 
 +^Kurs-Nummer^Kurs-Thema^Jahrgangsstufe^Typ^ 
 +|11| Mechanik I|E1 |GK| 
 +|12| Mechanik I|E1 |GK| 
 +|3| Datenbanken|Q2 |GK| 
 +|25| Short Stories|Q1| LK| 
 + 
 +Dabei wird einschränkend vorausgesetzt, dass jeder Eintrag für ein Attribut elementar ist, d.h. nicht aus Teilattributen zusammengesetzt ist und auch höchstens einen Wert umfassen kann. Sogenannte Nullwerte, d.h. kein zugeordneter Wert für einen Eintrag, sind möglich. Ein Bsp. wäre das Attribut Telefon-Nr bei einer Tabelle für Personendaten. Ein Leerlassen (Nulleintrag) bedeutet, dass die entsprechende Person kein Telefon hat oder die Nummer geheim bleiben soll. Tabellen, bei denen die Einträge elementar sind, werden als in 1. Normalform befindlich bezeichnet. Hier erkennt man sofort eine Einschränkung gegenüber dem ER-Modell, denn das Attribut Vorher besuchte Schuler des Entity-Typs Schüler kann so nicht in eine Tabelle umgesetzt werden, es sei denn, jeder Schüler hätte vorher nur eine einzige Schule besucht. Auch zusam-mengesetzte Attribute wie Adresse beim Typ Schüler kann man so nicht erfassen. Das letzte Problem lässt sich allerdings leicht lösen. Man nimmt einfach für jedes Teilattribut wie Postleitzahl, Wohnort, Straße mit Haus-Nr. eine eigene Spalte. 
 + 
 +Jedes Attribut in einer Tabelle besitzt einen bestimmten vorbestimmten Wertebereich, z.B. Zeichenkette mit maximal 80 Zeichen oder Ganzzahl zwischen 0 und 255. Diese Wertebereiche werden oft als „domains“ bezeichnet. 
 + 
 +Wie im ER-Modell definiert man Schlüssel. Ein Attribut oder eine Kombination von Attributen ist dann ein Schlüssel, wenn es keine zwei Entities in der Tabelle mit denselben Werten der Kombination gibt. Einer davon wird als Primärschlüssel ausgewählt. Mit Hilfe solcher Schlüssel werden Beziehungen zwischen verschiedenen Tabellen hergestellt. So könnten wir unsere Tabelle für Kurse um das Attribut Lehrer-Nr. er¬weitern, das einen Bezug zur Tabelle Lehrer schafft, die so aussehen könnte.  
 + 
 +^Lehrer-Nr. ^Name ^Vorname ^Titel^ 
 +|421 |Müller| Manfred |StR| 
 +|665 |Maier |Marlene |OStR| 
 + 
 + 
 +Damit haben wir gleichzeitig die 1:n - Beziehung Lehrer - unterrichtet - Kurs im ER-Modell er¬fasst. Man bezeichnet die Lehrer-Nr in der Kurs-Tabelle als Fremdschlüssel. 
 + 
 +Jetzt findet sich auch eine Lösung für das Problem mit dem Mehrfachattribut Vorher besuchte Schule. Es muss eine eigene Tabelle für Schulen erstellt werden, die eine Beziehung über Schüler-Nr. zur Tabelle LSchüler schafft. 
 + 
 +^Schüler-Nr. ^Schule^ 
 +|421 |Grundschule Fuldatal| 
 +|421 |Gesamtschule Geistal| 
 +|665 |Integrierte Gesamtschule Obersuhl| 
 +|665 |Gesamtschule Obersberg| 
 + 
 +Einziger Schlüssel für diese Tabelle ist die Kombination Lehrer-Nr. - Fach. 
 + 
 +Hier kann auch eine Lösung sinnvoll sein, die eine Tabelle Schule ohne Schülernummern verwendet, insbesondere, wenn man noch mehr Attribute über die Schulen speichern will und eine Beziehung zu den Schülern mit einer Zwischentabelle herstellt, wie es weiter unten erläutert wird. 
 + 
 +Man erkennt, dass sich das ER-Bsp. in das R-Modell umsetzen lässt. Wir haben schon Mehrfach- und zusammengesetzte Attribute erledigt und 1:n - Beziehungen eingebaut (damit ist natürlich auch der Fall 1:1 erfasst). Es bleibt noch die Frage, wie man n:m - Beziehungen transformiert. Dazu betrachten wir im Bsp. die relationship besucht zwischen Schüler und Kurs. Weder die Hinzunahme eines Attributs Kurs-Nr. zu Schüler löst das Problem, denn ein Schüler besucht meist mehr als einen Kurs, noch die Hinzunahme der Schüler-Nr. zur Tabelle Kurs, da jeder Kurs von mehreren Schülern besucht wird. Es muss eine dritte Tabelle Kursbelegung her in der Form 
 + 
 +^Schüler-Nr. ^Kurs-Nr.^ Note ^Fehlstunden^ 
 +|7 |12| 12 |0| 
 +|8 |11 |4 |14| 
 +|9 |11 |9 |2| 
 + 
 +Wie man sieht, lassen sich hier auch ohne Probleme die Attribute der Beziehung unterbringen. Schlüssel in dieser Tabelle ist die Kombination Schüler - Kurs-Nr.. Man spricht häufig von einer Zwischentabelle. 
 + 
 +Wir versuchen jetzt, die allgemeinen Prinzipien einer Umsetzung vom ER-Modell ins R-Modell anzugeben: 
 + 
 + 
 + 
 +=====1 Grundregel: Jeder Entity-Typ wird eine eigene Tabelle.===== 
 <WRAP box round> <WRAP box round>
 Entitätstypen werden als Relationen dargestellt, bei der die Attribute in Klammern aufgezählt werden.   Entitätstypen werden als Relationen dargestellt, bei der die Attribute in Klammern aufgezählt werden.  
Zeile 22: Zeile 69:
 <WRAP box round> <WRAP box round>
 Jede ER-Beziehung wird auf eine Relation abgebildet. Die Relation besteht aus den Primärschlüsseln  Jede ER-Beziehung wird auf eine Relation abgebildet. Die Relation besteht aus den Primärschlüsseln 
-der beteiligten Entitätstypen sowie den Attributen der Beziehung.+der beteiligten Entitätstypen sowie den Attributen der Beziehung. 1:1 - und 1:n - Beziehungen lassen sich allerdings durch zusätzliche Attribute in einer Tabelle erfassen. Dabei wird der Schlüssel der 1-Tabelle ein zusätzliches Attribut in der n-Tabelle. (vgl: Optimierung)
 </WRAP> </WRAP>
  
  • /var/www/infowiki/data/attic/q2/das_relationenmodell.1500051456.txt.gz
  • Zuletzt geändert: 2017/07/14 16:57
  • von admin03