Relationales Datenmodell 09: Unterschied zwischen den Versionen

Aus SibiWiki
Zur Navigation springen Zur Suche springen
 
(8 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
[[Kategorie:Informatik]]
[[Kategorie:Informatik-09]]
[[File:Er-modell-schueler-lehrer-kurs-einfach.png|thumb|ER-Modell Kurssystem |576px]]
''Auf dieser Seite wird alles dargestellt, was man in Informatik 09 über das relationale Datenmodell wissen muss.''
''Auf dieser Seite wird alles dargestellt, was man in Informatik 09 über das relationale Datenmodell wissen muss.''


Zeile 4: Zeile 9:


=Wofür braucht man relationale Datenmodelle?=
=Wofür braucht man relationale Datenmodelle?=
[[File:ER-modell-lehrer-kurs-schueler.png|thumb|ER-Modell Kurssystem |572px]]


Mithilfe von relationalen Datenmodellen kann man Datenbanken planen:
Mithilfe von relationalen Datenmodellen kann man Datenbanken planen:
Zeile 15: Zeile 19:


=Primärschlüssel und Fremdschlüssel=
=Primärschlüssel und Fremdschlüssel=
[[File:Relationales-datenmodell-mysql-workbench.png|thumb|Relationales Datenmodell. |394px]]
Im relationalen Datenmodell werden die Zusammenhänge zwischen den Tabellen durch '''Primärschlüssel''' und '''Fremdschlüssel''' hergestellt.
Im relationalen Datenmodell werden die Zusammenhänge zwischen den Tabellen durch '''Primärschlüssel''' und '''Fremdschlüssel''' hergestellt.
* '''Primärschlüssel''': Der Primärschlüssel (Primary Key; abgekürzt: '''PK''') ist ein Attribut, das '''einen Datensatz (=eine Zeile in der Tabelle) eindeutig identifiziert'''.  
* '''Primärschlüssel''': Der Primärschlüssel (Primary Key; abgekürzt: '''PK''') ist ein Attribut, das '''einen Datensatz (=eine Zeile in der Tabelle) eindeutig identifiziert'''.  
Zeile 22: Zeile 28:
** '''Fremdschlüssel in 1:n-Beziehungen''': Fremdschlüssel werden von MySQL-Workbench automatisch erzeugt, wenn man eine 1:n-Beziehung herstellt, z.B.: <code>lehrer_id </code> in der Tabelle <code>schueler</code>.
** '''Fremdschlüssel in 1:n-Beziehungen''': Fremdschlüssel werden von MySQL-Workbench automatisch erzeugt, wenn man eine 1:n-Beziehung herstellt, z.B.: <code>lehrer_id </code> in der Tabelle <code>schueler</code>.
** '''Fremdschlüssel in n:m-Beziehungen''': Für n:m-Beziehungen erzeugt MySQL-Workbench eine Zwischentabelle; z.B. die Tabelle <code>belegt</code>. In dieser Tabelle sind '''zwei''' Fremdschlüssel: <code>schueler_id</code> und <code>kurs_id</code>. Zusammen bilden sie den Primärschlüssel der Tabelle <code>belegt</code>. Denn: die Kombination aus <code>schueler_id</code> und <code>kurs_id</code> identifiziert eindeutig eine Zeile in der Tabelle <code>belegt</code>. (Kein Schüler kann zweimal den gleichen Kurs belegen...)
** '''Fremdschlüssel in n:m-Beziehungen''': Für n:m-Beziehungen erzeugt MySQL-Workbench eine Zwischentabelle; z.B. die Tabelle <code>belegt</code>. In dieser Tabelle sind '''zwei''' Fremdschlüssel: <code>schueler_id</code> und <code>kurs_id</code>. Zusammen bilden sie den Primärschlüssel der Tabelle <code>belegt</code>. Denn: die Kombination aus <code>schueler_id</code> und <code>kurs_id</code> identifiziert eindeutig eine Zeile in der Tabelle <code>belegt</code>. (Kein Schüler kann zweimal den gleichen Kurs belegen...)
=Wie sieht die Datenbank dann aus?=
Die Datenbank kann dann z.B. so aussehen wie unten.
* Die '''Primärschlüssel ''' (<code>id</code>) identifizieren in den Tabellen <code>schueler</code>, <code>kurs</code> und
<code>lehrer</code> eindeutig die Datensätze (=Zeilen).
* In der Tabelle <code>belegt</code> besteht der '''Primärschlüssel''' aus der Kombination von <code>schueler_id</code> und <code>kurs_id</code>.
* Durch die '''Fremdschlüssel''' (<code>schueler_id</code>, <code>kurs_id</code> und <code>lehrer_id</code>) wird die Beziehung zwischen den Tabellen hergestellt.
<table>
<tr valign='top'>
<td>
''Tabelle <code>schueler</code>''
{| class="wikitable"
|-
! id !! name !! vorname
|-
| 1 || Meier || Hans
|-
| 2 || Schwarzmüller || Stefanie
|-
| 3 || Amann || Georg
|-
| 4 || Buttenmüller || Maria
|}
</td>
<td>
''Tabelle <code>belegt</code>''
{| class="wikitable"
|-
! schueler_id !! kurs_id !! note
|-
| 1 || 2 || 3
|-
| 1 || 3 || 1
|-
| 2 || 1 ||
|-
| 2 || 2 ||
|-
| 3 || 2 || 1
|}
''Schüler 2 (= Stefanie Schwarzmüller)''<br>
''hat noch keine Noten gekriegt!''
</td>
<td>
''Tabelle <code>kurs</code>''
{| class="wikitable"
|-
! id !! fach !! kuerzel !! lehrer_id
|-
| 1 || Mathematik || M-1 || 3
|-
| 2 || Deutsch || D-1 || 1
|-
| 3 || Mathematik || M-2 || 2
|}
</td>
<td>
''Tabelle <code>lehrer</code>''
{| class="wikitable"
|-
! id !! name !! vorname
|-
| 1 || Rees || Martin
|-
| 2 || Zimmermann || Georg
|-
| 3 || Hug || Christina
|}</td>
</tr>
</table>

Aktuelle Version vom 24. Mai 2014, 15:05 Uhr


ER-Modell Kurssystem

Auf dieser Seite wird alles dargestellt, was man in Informatik 09 über das relationale Datenmodell wissen muss.

Einen vollständigen Überblick über das relationale Datenmodell findet man hier: relationales Datenmodell

Wofür braucht man relationale Datenmodelle?

Mithilfe von relationalen Datenmodellen kann man 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 MySQL-Workbench in ein relationales Datenmodell übertragen werden.
  • Aus MySQL-Workbench kann man das relationale Datenmodell direkt in die Datenbank übertragen.

Primärschlüssel und Fremdschlüssel

Relationales Datenmodell.

Im relationalen Datenmodell werden die Zusammenhänge zwischen den Tabellen durch Primärschlüssel und Fremdschlüssel hergestellt.

  • Primärschlüssel: Der Primärschlüssel (Primary Key; abgekürzt: PK) ist ein Attribut, das einen Datensatz (=eine Zeile in der Tabelle) eindeutig identifiziert.
    • Primärschlüssel haben in MySQL Workbench ein Schlüsselsymbol.
    • Man benennt sie am besten mit 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 in 1:n-Beziehungen: Fremdschlüssel werden von MySQL-Workbench automatisch erzeugt, wenn man eine 1:n-Beziehung herstellt, z.B.: lehrer_id in der Tabelle schueler.
    • Fremdschlüssel in n:m-Beziehungen: Für n:m-Beziehungen erzeugt MySQL-Workbench eine Zwischentabelle; z.B. die Tabelle belegt. In dieser Tabelle sind zwei Fremdschlüssel: schueler_id und kurs_id. Zusammen bilden sie den Primärschlüssel der Tabelle belegt. Denn: die Kombination aus schueler_id und kurs_id identifiziert eindeutig eine Zeile in der Tabelle belegt. (Kein Schüler kann zweimal den gleichen Kurs belegen...)

Wie sieht die Datenbank dann aus?

Die Datenbank kann dann z.B. so aussehen wie unten.

  • Die Primärschlüssel (id) identifizieren in den Tabellen schueler, kurs und

lehrer eindeutig die Datensätze (=Zeilen).

  • In der Tabelle belegt besteht der Primärschlüssel aus der Kombination von schueler_id und kurs_id.
  • Durch die Fremdschlüssel (schueler_id, kurs_id und lehrer_id) wird die Beziehung zwischen den Tabellen hergestellt.


Tabelle schueler

id name vorname
1 Meier Hans
2 Schwarzmüller Stefanie
3 Amann Georg
4 Buttenmüller Maria

Tabelle belegt

schueler_id kurs_id note
1 2 3
1 3 1
2 1
2 2
3 2 1

Schüler 2 (= Stefanie Schwarzmüller)
hat noch keine Noten gekriegt!

Tabelle kurs

id fach kuerzel lehrer_id
1 Mathematik M-1 3
2 Deutsch D-1 1
3 Mathematik M-2 2

Tabelle lehrer

id name vorname
1 Rees Martin
2 Zimmermann Georg
3 Hug Christina