Relationales Datenmodell 09: Unterschied zwischen den Versionen

Aus SibiWiki
Zur Navigation springen Zur Suche springen
Zeile 15: Zeile 15:


=Primärschlüssel und Fremdschlüssel=
=Primärschlüssel und Fremdschlüssel=
[[File:Relationales-datenmodell-mysql-workbench.png|thumb|Relationales Datenmodell; nicht alle Attribute sind übertragen. |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 24:
** '''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?=

Version vom 24. Mai 2014, 14:07 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?