Relationales Datenmodell: Unterschied zwischen den Versionen

Aus SibiWiki
Zur Navigation springen Zur Suche springen
 
(6 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 11: Zeile 11:
Das Entity-Relationship-Modell kann mithilfe von technischen Schritten in ein relationales Datenmodell übersetzt werden.
Das Entity-Relationship-Modell kann mithilfe von technischen Schritten in ein relationales Datenmodell übersetzt werden.


=Erklärvideos=
# [https://youtu.be/0_3Dyf-7_Bg Relationales Datenmodell - Was ist das?]
# [https://youtu.be/JEyv8hh_Q5I aus einem Entity-Relationship-Modell ein relationales Datenmodell erstellen]
# [https://youtu.be/MSe4uxcxTHg Mit MySQL-Workbench und XAMPP aus dem ER-Modell eine "echte" Datenbank erzeugen]


=Fachbegriffe=
=Fachbegriffe=


Primärschlüssel, Primärschlüssel kombiniert aus zwei Fremdschlüsseln, Fremdschlüssel, Attribut, Tabelle, 1:n-Beziehung, n:m-Beziehung
Primärschlüssel, Primärschlüssel kombiniert aus zwei Fremdschlüsseln, Fremdschlüssel, Attribut, Tabelle, 1:n-Beziehung, n:m-Beziehung
<font color='red'>
Das Zentralabitur verwendet folgende Fachbegriffe, die hier kurz übersetzt werden:
</font>
* <font color='red'>'''Datenbankschema'''</font> = das ganze relationale Datenmodell
* <font color='red'>'''Relationenschema'''</font> = eine Zeile im relationalen Datenmodell, z.B. kurs(<u>id</u>, name, kuerzel, halbjahr, &uarr;lehrer_id)<br/>''Hier wird das  "Tabelle" genannt, weil es in der Datenbank eine Tabelle wird.''


=Erläuterung der Begriffe=
=Erläuterung der Begriffe=


* '''Primärschlüssel''': Der Primärschlüssel (Primary Key; abgekürzt: '''PK''') ist ein Attribut (oder eine Kombination aus 2 Attributen), das '''einen Datensatz eindeutig identifiziert'''.  
* '''Primärschlüssel''': Der Primärschlüssel (Primary Key; abgekürzt: '''PK''') ist ein Attribut (oder eine Kombination aus 2 Attributen), das '''einen Datensatz (d.h. eine Zeile in einer Datenbank-Tabelle)  eindeutig identifiziert'''.  
** Primärschlüssel werden unterstrichen, z.B. '''<u>id</u>'''
** Primärschlüssel werden unterstrichen, z.B. '''<u>id</u>'''
* '''Fremdschlüssel''': Der Fremdschlüssel (Foreign Key; abgekürzt: '''FK''') stellt die Verbindung zwischen Tabellen her: Ein Fremdschlüssel verweist auf den Primärschlüssel einer anderen Tabelle.
* '''Fremdschlüssel''': Der Fremdschlüssel (Foreign Key; abgekürzt: '''FK''') stellt die Verbindung zwischen Tabellen her: '''Ein Fremdschlüssel verweist auf den Primärschlüssel einer anderen Tabelle.'''
** Fremdschlüssel werden durch einen Pfeil nach oben (&uarr;) markiert, z.B.: '''&uarr;kunde_id'''
** Fremdschlüssel werden durch einen Pfeil nach oben (&uarr;) markiert, z.B.: '''&uarr;kunde_id'''


Zeile 61: Zeile 72:
* die beiden Fremdschlüssel können '''zusammen''' als Primärschlüssel genutzt werden, denn jeder Schüler kann jeden Kurs nur einmal belegen.
* die beiden Fremdschlüssel können '''zusammen''' als Primärschlüssel genutzt werden, denn jeder Schüler kann jeden Kurs nur einmal belegen.


'''Endergebnis:'''
'''Man erhält also:'''


* schueler(<u>id</u>, name, vorname, geburtsdatum, adresse, geschlecht)
* schueler(<u>id</u>, name, vorname, geburtsdatum, adresse, geschlecht)
Zeile 67: Zeile 78:
* kurs(<u>id</u>, name, kuerzel, halbjahr, &uarr;lehrer_id)
* kurs(<u>id</u>, name, kuerzel, halbjahr, &uarr;lehrer_id)
* lehrer(<u>id</u>, name, vorname, kuerzel)
* lehrer(<u>id</u>, name, vorname, kuerzel)
==Endergebnis und Zusammenfassung==
'''Endergebnis für das relationale Datenmodell:'''
* schueler(<u>id</u>, name, vorname, geburtsdatum, adresse, geschlecht)
* belegt(<u>&uarr;schueler_id</u>, <u>&uarr;kurs_id</u>, note)
* kurs(<u>id</u>, name, kuerzel, halbjahr, &uarr;lehrer_id)
* lehrer(<u>id</u>, name, vorname, kuerzel)
'''Zusammenfassung:'''
* Jede Entitätsmenge bekommt einen '''Primärschlüssel'''
* '''1:n-Beziehungen''' werden durch einen '''Fremdschlüssel auf der n-Seite der Beziehung''' modelliert.
* '''n:m-Beziehungen''' werden durch eine eigene Tabelle modelliert:
** die Tabelle enthält '''zwei Fremdschlüssel''', für jede beteiligte Entitätsmenge einen.
** die Tabelle kann weitere Attribute enthalten.


=Praxis=
=Praxis=

Aktuelle Version vom 16. Januar 2024, 15:01 Uhr


Mithilfe von Relationalen Datenmodellen kann man relationale Datenbanken planen:

Realität -> Anforderungsermittlung -> Entity-Relationship-Modell -> Relationales Datenmodell -> Datenbanksystem

Um ein relationales Datenmodell zu erstellen, muss erst ein Entity-Relationship-Modell vorliegen. Das Entity-Relationship-Modell kann mithilfe von technischen Schritten in ein relationales Datenmodell übersetzt werden.


Erklärvideos

  1. Relationales Datenmodell - Was ist das?
  2. aus einem Entity-Relationship-Modell ein relationales Datenmodell erstellen
  3. Mit MySQL-Workbench und XAMPP aus dem ER-Modell eine "echte" Datenbank erzeugen

Fachbegriffe

Primärschlüssel, Primärschlüssel kombiniert aus zwei Fremdschlüsseln, Fremdschlüssel, Attribut, Tabelle, 1:n-Beziehung, n:m-Beziehung

Das Zentralabitur verwendet folgende Fachbegriffe, die hier kurz übersetzt werden:

  • Datenbankschema = das ganze relationale Datenmodell
  • Relationenschema = eine Zeile im relationalen Datenmodell, z.B. kurs(id, name, kuerzel, halbjahr, ↑lehrer_id)
    Hier wird das "Tabelle" genannt, weil es in der Datenbank eine Tabelle wird.

Erläuterung der Begriffe

  • Primärschlüssel: Der Primärschlüssel (Primary Key; abgekürzt: PK) ist ein Attribut (oder eine Kombination aus 2 Attributen), das einen Datensatz (d.h. eine Zeile in einer Datenbank-Tabelle) eindeutig identifiziert.
    • Primärschlüssel werden unterstrichen, z.B. id
  • Fremdschlüssel: Der Fremdschlüssel (Foreign Key; abgekürzt: FK) stellt die Verbindung zwischen Tabellen her: Ein Fremdschlüssel verweist auf den Primärschlüssel einer anderen Tabelle.
    • Fremdschlüssel werden durch einen Pfeil nach oben (↑) markiert, z.B.: ↑kunde_id

Vom ER-Modell zum relationalen Datenmodell

ER-Modell Kurssystem

Der Weg vom ER-Modell zum relationalen Datenmodell wird beispielhaft am ER-Modell Kurssystem (s. rechts) dargestellt.

Primärschlüssel festlegen

Für die Entitätsmengen schueler, kurs und lehrer müssen Primärschlüssel festgelegt werden:

  • Keine der drei Tabellen hat ein Attribut, das einen Datensatz eindeutig identifiziert.
  • Deswegen erhält jede Entitätsmenge ein neues Attribut id als Primärschlüssel.

Zwischenergebnis:

  • schueler(id, name, vorname, geburtsdatum, adresse, geschlecht)
  • kurs(id, name, kuerzel, halbjahr)
  • lehrer(id, name, vorname, kuerzel)

Man sieht, dass die Beziehungen zwischen den Entitätsmengen noch nicht in das relationale Datenmodell übersetzt wurden; dementsprechend fehlt auch das Attribut note.

1:n-Beziehungen übertragen

1:n-Beziehungen werden in das relationale Datenmodell übersetzt, indem auf der n-Seite der Beziehung ein Fremdschlüssel eingetragen wird, der auf den Primärschlüssel der anderen beteiligten Tabelle verweist.

  • lehrer - kurs ist eine 1:n-Beziehung.
  • kurs ist auf der n-Seite der Beziehung.
  • in kurs wird als Fremdschlüssel ↑lehrer_id eingetragen.

Zwischenergebnis:

  • schueler(id, name, vorname, geburtsdatum, adresse, geschlecht)
  • kurs(id, name, kuerzel, halbjahr, ↑lehrer_id)
  • lehrer(id, name, vorname, kuerzel)

Jetzt kann man bei jedem einzelen Kurs sehen, welcher Lehrer ihn unterrichtet.

n:m-Beziehungen übertragen

n:m-Beziehungen werden in das relationale Datenmodell übersetzt, indem man eine Zwischentabelle einfügt: die Zwischentabelle enthält zwei Fremdschlüssel auf die beiden Tabellen der Beziehung. Meistens kann die Kombination der beiden Fremdschlüssel als Primärschlüssel der Zwischentabelle genutzt werden.

  • Eine Tabelle belegt wird eingeführt.
  • sie enthält als Attribute die beiden Fremdschlüssel ↑schueler_id und ↑kurs_id - und zusätzlich das Attribut note.
  • die beiden Fremdschlüssel können zusammen als Primärschlüssel genutzt werden, denn jeder Schüler kann jeden Kurs nur einmal belegen.

Man erhält also:

  • schueler(id, name, vorname, geburtsdatum, adresse, geschlecht)
  • belegt(↑schueler_id, ↑kurs_id, note)
  • kurs(id, name, kuerzel, halbjahr, ↑lehrer_id)
  • lehrer(id, name, vorname, kuerzel)

Endergebnis und Zusammenfassung

Endergebnis für das relationale Datenmodell:

  • schueler(id, name, vorname, geburtsdatum, adresse, geschlecht)
  • belegt(↑schueler_id, ↑kurs_id, note)
  • kurs(id, name, kuerzel, halbjahr, ↑lehrer_id)
  • lehrer(id, name, vorname, kuerzel)

Zusammenfassung:

  • Jede Entitätsmenge bekommt einen Primärschlüssel
  • 1:n-Beziehungen werden durch einen Fremdschlüssel auf der n-Seite der Beziehung modelliert.
  • n:m-Beziehungen werden durch eine eigene Tabelle modelliert:
    • die Tabelle enthält zwei Fremdschlüssel, für jede beteiligte Entitätsmenge einen.
    • die Tabelle kann weitere Attribute enthalten.

Praxis

In der Praxis nimmt man zur Erstellung des relationalen Datenmodells ein Tool, z.B. MySQL-Workbench.

Vorteil: Man kann das fertige relationale Datenmodell sofort in die Datenbank exportieren.