Relationales Datenmodell 09: Unterschied zwischen den Versionen
(7 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?= | ||
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]] | [[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. | ||
Zeile 24: | 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
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
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 Tabelleschueler
. - 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
undkurs_id
. Zusammen bilden sie den Primärschlüssel der Tabellebelegt
. Denn: die Kombination ausschueler_id
undkurs_id
identifiziert eindeutig eine Zeile in der Tabellebelegt
. (Kein Schüler kann zweimal den gleichen Kurs belegen...)
- Fremdschlüssel in 1:n-Beziehungen: Fremdschlüssel werden von MySQL-Workbench automatisch erzeugt, wenn man eine 1:n-Beziehung herstellt, z.B.:
Wie sieht die Datenbank dann aus?
Die Datenbank kann dann z.B. so aussehen wie unten.
- Die Primärschlüssel (
id
) identifizieren in den Tabellenschueler
,kurs
und
lehrer
eindeutig die Datensätze (=Zeilen).
- In der Tabelle
belegt
besteht der Primärschlüssel aus der Kombination vonschueler_id
undkurs_id
. - Durch die Fremdschlüssel (
schueler_id
,kurs_id
undlehrer_id
) wird die Beziehung zwischen den Tabellen hergestellt.
Tabelle
|
Tabelle
Schüler 2 (= Stefanie Schwarzmüller) |
Tabelle
|
Tabelle
|