m:n Kardinalität auflösen ? < Datenbank-Modelle < Schule < Informatik < Vorhilfe
|
Hi !
Ich habe ein ER-Modell mit den Objekttypen "Buch" und "Autor" und dem Beziehungstyp "Schreiben".
Sagen wir, wir haben eine komplexe Beziehung zwischen beiden Objekttypen, weil ein Autor mehrere Bücher schreiben kann und ein Buch von mehreren Autoren geschrieben werden kann.
Mein Info-Buch sagt, dass bei der Überführung des obigen ER-Modells in ein relationales Datenmodell eine zusätzliche Relation "Schreiben" nötig ist, da sich eine m:n Kardinalität nur durch eine Auflösung in zwei 1:n Kardinalitäten überführen lässt.
Aber wozu ?? Mein Buch hat einen Primärschlüssel "ISBN" und einen Fremdschlüssel "wurde geschrieben von", der die Autorennummer referenziert. Die Relation Autor hat also einen Primärschlüssel "Autorennummer" und einen Fremdschlüssel "hat mitgeschrieben am Buch" der die ISBN referenziert.
Klappt doch alles wunderbar !?
Wäre euch füre eure Hilfe sehr dankbar !
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 21:29 Mi 11.04.2007 | Autor: | piet.t |
Hallo,
bleiben wir doch mal bei dem Beispiel:
Douglas Adams hat "Per Anhalter durch die Galaxis" und "Dirk Gentlys holistische Detektei" geschrieben - welche der beiden ISBN-Nummern nimmst Du jetzt in Deine Autor-Tabelle auf, es gibt dafür ja nur ein Feld?
Wenn man alle Bücher drin haben will müsste man den Autor mehrfach anlegen, also unter verschiedenen Autorennummern - dann sind allerdings die Fremdschlüssel in der Buchtabelle nicht mehr klar bestmimt und ausserdem müsste man die Autoren-Daten in mehreren Datensätzen pflegen und......ich glaube das reicht erst mal.
Oder sind noch Fragen offen??
Gruß
piet
|
|
|
|
|
Ah gut, damit hast du meine Frage eigentlich schon fast beantwortet ;)
aber kleine Gegenfrage, sagen wir wir haben nur eine 1:n Beziehung:
Objekttyp "Buch" und Objekttyp "Verlag". Ein Verlag kann n Bücher verlegen, aber ein Buch kann nur von einem Verlag verlegt werden. Sagen wir der Verlag "42" hat "Hitchhiker's Guide to the Galaxy" und "the Restaurant at the end of the universe" verlegt.
Jetzt brauchst du in der Tabelle Verlag ja auch für jeden einzelnen Verlag beliebig viele Zeilen für alle Bücher, die er verlegt hat und der Fremdschlüssen "Verlag" in der Tabelle "Buch" ist auch nicht mehr fest bestimmt.
Dann hat man ja bei 1:n Bezihungen das selbe Problem, oder wie !?
|
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 18:07 Do 12.04.2007 | Autor: | piet.t |
> Ah gut, damit hast du meine Frage eigentlich schon fast
> beantwortet ;)
>
> aber kleine Gegenfrage, sagen wir wir haben nur eine 1:n
> Beziehung:
>
> Objekttyp "Buch" und Objekttyp "Verlag". Ein Verlag kann n
> Bücher verlegen, aber ein Buch kann nur von einem Verlag
> verlegt werden. Sagen wir der Verlag "42" hat "Hitchhiker's
> Guide to the Galaxy" und "the Restaurant at the end of the
> universe" verlegt.
>
> Jetzt brauchst du in der Tabelle Verlag ja auch für jeden
> einzelnen Verlag beliebig viele Zeilen für alle Bücher, die
> er verlegt hat und der Fremdschlüssen "Verlag" in der
> Tabelle "Buch" ist auch nicht mehr fest bestimmt.
>
> Dann hat man ja bei 1:n Bezihungen das selbe Problem, oder
> wie !?
>
Nein, denn bei der 1:n-Beziehung bekommt der Verlag gar keinen Fremdschlüssel als Verweis auf "Buch" - die ganze Beziehung wird ausschließlich durch den Verweis auf "Verlag" in der Tabelle "Buch" abgebildet - und da hat man ja kein Problem, denn pro Buch gibt es ja nur einen Verlag also auch nur einen Verweis.
Merke (gerade von mir selbst getextet, also vielleicht doch nicht so genau merken):
Der Fremschlüssel kommt immer an das Ende der Beziehung, das der 1er-Kardinalität gegenüberliegt.
Weil das bei n:m nicht funktioniert macht man daraus eben zwei Beziehungen: eine n:1 und eine 1:m mit einer zusätzlichen "Beziehungstabelle" in der Mitte.
Alles klar?
Gruß
piet
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 15:24 Fr 13.04.2007 | Autor: | Bit2_Gosu |
Ahhhh ;) Kapiert !
Was mich wohl verwirrt hat, ist, dass es ja durchaus die Beziehung Verlag "verlegt" Buch gibt. Nur kann man die nicht direkt in die Verlagstabelle übernehmen, weil ein Verlag, ja mehrere Bücher verlegt...
Danke !
|
|
|
|