Databases Reference
In-Depth Information
autor int unique references autoren
und für Alben ohne Autor das Attribut id einfach auf null setzen. Doch spielt
uns SQL hier einen Streich, da es in Einklang mit dem Standard auch Dialekte gibt,
in denen jede unique -Constraint auch eine not null -Constraint erfordert (siehe
Abschnitt 5.14). Wenn wir diesen Eigenschaften Rechnung tragen müssen, dann
finden wir keine Lösung, die mit zwei Tabellen auskommt. In Abschnitt 7.4 haben
wir gelernt, dass wir jede binäre Beziehung durch zwei binäre Beziehungen und
einen zusätzlichen Entitätstyp zur Verwaltung der Beziehung ersetzen können.
Diesen Trick wenden wir hier an. Wir belassen die Tabellen autoren und alben
so einfach wie in Listing 7.2 und fügen eine dritte Tabelle hinzu:
Listing 7.6: Beispiel einer C-C-Beziehung
create table albenautoren(
album int not null unique references alben,
autor int not null unique references autoren,
primary key(album, autor)
)
Die Tabelle besteht nur aus Spalten, die den Primärschlüsseln der Tabellen
autoren und alben entsprechen. Jede der beiden Spalten der neuen Tabelle re-
ferenziert jeweils eine dieser beiden Tabellen. Wenn es eine Beziehung zwischen
einem Datensatz aus autoren und einem aus alben gibt, wird darüber in der
Tabelle albenautoren Buch geführt. Die beiden Tabellen stehen so nicht mehr
direkt, sondern nur indirekt über albenautoren zueinander in Beziehung.
Autoren
Alben
Autoren
AlbenAutoren
Alben
Abbildung 7.10: Auflösung einer C-C-Beziehung
Durch die beiden unique -Constraints gewährleisten wir, dass jeder Autor und je-
des Album nur maximal einmal in albumautoren auftritt und somit auch wirk-
lich eine C-C-Beziehung realisiert ist. Wie in Abbildung 7.10 dargestellt, haben wir
die C-C-Beziehung in zwei 1-C-Beziehungen zerlegt.
Search WWH ::




Custom Search