Archiv des LibreOffice- und OpenOffice.org-Wiki

[ÜberSicht] [TitelIndex] [WortIndex] [SeiteFinden

(./) SO8 OOo2

Erzeugen und Verwenden eines zusammengesetzten Primärschlüssels in DatenBanken.

1. Wann braucht man zusammengesetzte Primärschlüssel?

Als Beispiel dient die schon in DatenbankErzeugen benutzte Datenbank Europa.odb. Dort gibt es die Tabellen

Sprachen

Kurz(P)

Lang

de

Deutsch

en

Englisch

fr

Französisch

und

Länder

Code(P)

Name

EU

Flagge

DE

Deutschland

CH

Schweiz

BE

Belgien

wobei (P) den Primärschlüssel kennzeichnet.

Die Information, welche Sprache in welchem Land gesprochen wird, kann weder in der Tabelle „Sprachen“ noch in der Tabelle „Länder“ aufgenommen werden, weil in einem Land mehrere Sprachen vorkommen können und es auch umgekehrt möglich ist, dass eine Sprache in mehreren Ländern gesprochen wird. Es liegt eine so genannte n:m-Beziehung vor. Diese wird dadurch aufgelöst, dass eine dritte Tabelle benutzt wird, die diese Information enthält. Sie hat ein Datenfeld mit einem Verweis auf das Land und ein Datenfeld mit einem Verweis auf die Sprache. Eine solche Verbindungstabelle kann darüber hinaus natürlich noch weitere Datenfelder enthalten, hier vielleicht für die Information, wie viel Prozent der Landesbevölkerung diese Spache als Muttersprache sprechen.

In DatenbankErzeugen wurde bei dieser Tabelle der Einfachheit halber ein zusätzliches Feld für einen Primärschlüssel eingefügt. Dadurch können aber ungewollt doppelte Einträge entstehen, Beispiel Tabelle „Landessprache“:

Nr

Land

Sprache

1

DE

de

2

CH

de

3

CH

de

Die Zeilen zwei und drei sind durch den künstlichen Primärschlüssel formal unterschiedlich, aber inhaltlich enthalten sie die gleiche Information. Wollen Sie dies vermeiden, dürfen Sie kein zusätzliches Datenfeld für den Primärschlüssel benutzen. Statt dessen bilden Sie aus den beiden Feldern „Land“ und „Sprache“ zusammen den Primärschlüssel. Ein solcher zusammengesetzter Primärschlüssel ist typisch für die Verbindungstabelle einer n:m-Beziehung.

2. Zusammengesetzte Primärschlüssel setzen

2.1. In der Entwurfsansicht

Klicken Sie mit gedrückter Strg-Taste auf den Zeilenkopf der beiden Zeilen. Wählen Sie dann dort aus dem KontextMenü den Eintrag Primärschlüssel.

entwurfansicht1.png

Sie erhalten dann zwei Zeilen mit dem Schlüsselsymbol symbolpkey.png .

entwurfansicht2.png

2.2. Im Assistenten

Wenn Sie beim Tabellenentwurf mit dem Assistenten arbeiten, wird im dritten Schritt der Primärschlüssel gesetzt. Dort finden Sie im unteren Teil die Option, einen zusammengesetzten Primärschlüssel zu benutzen.

assistentschritt3.png

2.3. Beim Tabellenimport

Beim Import von Daten haben Sie im dritten Schritt die Möglichkeit einen Primärschlüssel zu setzen. Klicken Sie mit gedrückter Strg-Taste auf die betreffenden Feldnamen, öffnen Sie das KontextMenü und klicken Sie dort auf den Eintrag Primärschlüssel.

import3aklein.png

Auch hier sehen Sie anschließend zwei Schlüsselsymbole.

import3bklein.png

3. Beziehungen eintragen

Auch im Dialog „Relationenentwurf“, den Sie in Base über Extras → Beziehungen erreichen, sind in der Tabelle nun zwei Schlüssel zu sehen.

beziehungen.png

In dieser Situation ist es bis jetzt (OOo2.0.2) nicht möglich, die Beziehungen durch Ziehen herzustellen, sondern Sie müssen den Dialog „Relationen“ über die Schaltfläche lc_dbaddrelation.png oder über Menü Einfügen → Neue Relation aufrufen.

relationen.png

In der linken Spalte wählen Sie das Ziel der Beziehung aus (DropDown-Liste), also das Feld, das die Referenz (Fremdschlüssel) enthält. In der rechten Spalte wählen Sie die Quelle aus, das Feld, auf den der Fremdschlüssel verweist.

Tipp: Der zentrale Beziehungseditor ist sehr streng und erlaubt nur 1:1 oder 1:n-Beziehungen, in denen wenigstens das referenzierte Feld Primärschlüssel ist. Losere m:n-Beziehungen lassen sich (nur) innerhalb von Abfragen definieren - etwa, wenn es darum geht, nur jene Datensätze aus zwei Tabellen anzuzeigen, bei denen ein oder mehrere (nicht indizierte) Felder übereinstimmen.

4. Siehe auch


KategorieBase KategorieHowto


LizenzBedingungen | AnbieterKennzeichnung | DatenschutzErklärung | Stand: 2013-04-28