View Full Version : [Frage] ER Diagramm --> Relationenschema
Im Prinzip mach ich das recht intuitiv; wenn 1:n Beziehung is, dann den Schlüssel vom n als Fremdschlüssel beim 1er usw.
Ich check aber nicht, wann etwas wirklich ein Fremdschlüssel ist, und wann man es nur in eine Relation aufnimmt und es aber kein Schlüssel ist. Z.b. bei der Angabe vom 1sten Bsp (wo wir dann SQL anfragen schreiben sollten) die Relation Entgegennahme: CNr ist schlüssel, BNr, und SVNr stehen nur so dabei. Oder die Relation Kunde: Level steht nur so dabei (ohne Schlüssel) ....
2tes Problem: wann kann man jetzt relationen NICHT einsparen (ich mein jetzt bei den relationships) ... wenn eine seite auch 0er akzeptiert? oder wenn es eine 0:n beziehung ist? ist es dann egal ob 0...n oder 1...n? ich blick da nicht vollständig durch...
wär nett wenn irgendjemand, der glaubt sich da sehr gut auszukennen, eine kurze zusammenfassung von dem ganzen zeug widregeben könnte oder konkret auf meine fragen antworten könnet.
thx, eua sensei ;)
finyfunny
08-06-2003, 12:32
@ 2tes problem .... du kannst genau dann eine relation einsparen wenn wo ne [1,1 ]beziehung vorkommt... sobald wo eine [0,1] oder [0,n] beziehung ist musst du die relationship als eigene relation nehmen.
dass hat bei mir bis jetzt immer gestimmt
lg finyfunny
Wenn du Null verwenden kannst, dann kannst du auch [0,1] Relationen verschmelzen. Du nimmst wie bei einer [1,1] Relation den Primärschlüssel der anderen Relation und definierst diesen in der [0,1] Relation als Fremdschlüssel. Der einzige Unterschied ist, dass im 0-Fall als Fremdschlüssel der Wert Null gesetzt wird.
Wenn du Null verwenden kannst, dann kannst du auch [0,1] Relationen verschmelzen. Du nimmst wie bei einer [1,1] Relation den Primärschlüssel der anderen Relation und definierst diesen in der [0,1] Relation als Fremdschlüssel. Der einzige Unterschied ist, dass im 0-Fall als Fremdschlüssel der Wert Null gesetzt wird.
Also wenn da steht "Die Datenbank akzeptiert keine Null-Werte" dann gehts nicht, oder?
Also wenn da steht "Die Datenbank akzeptiert keine Null-Werte" dann gehts nicht, oder?
Korrekt. Ich denke das, was der Tutor bei der Abgabe hören (oder bei der Prüfung lesen) will ist: Wenn die Datenbank keine Nullwerte akzeptiert, dann muss man die [0,1]-Relationen als eigene Tabellen mit dem Schlüssel der [0,1]-Seite definieren.
Weiters hat der Tutor bei meiner Abgabe gemeint, dass man ohne Nullwerte die terniären (oder noch höhergradigen) Relationen bei bestimmten [min,max]-Kombinationen in mehrere binäre Relationen aufsplitten muss. Aber dem gehe ich noch auf den Grund.
Hab ich das jetzt richtig verstanden: Nur wenn auf beiden Seiten einer Relation [1,1] steht, brauche ich keine eigene Tabelle? Wenn die Relationen "klingende" Namen haben und einen Sinn ergeben, ist das eh kein Problem, aber bei den Prüfungsangaben sind ja auch ER-Diagramme dabei, die keinen Sinn ergeben...
Zu dem was gemacht werden könnte, wenn lauter blöde Namen auftreten, hatte ich hier (http://hades.gothic.at/iforum/showpost.php?postid=61831&postcount=10) einen Vorschlag gemacht, vielleicht hilft das...
Hab ich das jetzt richtig verstanden: Nur wenn auf beiden Seiten einer Relation [1,1] steht, brauche ich keine eigene Tabelle? Wenn die Relationen "klingende" Namen haben und einen Sinn ergeben, ist das eh kein Problem, aber bei den Prüfungsangaben sind ja auch ER-Diagramme dabei, die keinen Sinn ergeben...
:ahhh: NEIN!!!
Nochmal im Überblick:
Zur Erklärung: mit [0/1,n] meine ich [0,n] ODER [0/1] ... ich wollt nur net alle Zeilen aufschreiben...
Also:
[1,1] ------ [1,1] ... einsparen (beide Relationen mit all ihren Attributen & Schlüsseln verschmelzen)
[1,1] ------ [0/1,n] ... einsparen (n-seiten Schlüssel kommt zu 1-seiten Tabelle dazu)
[0,1] ------ [1,1]/[1,n]/[0/n] ... nicht einsparen (Datenbank akzeptiert keine Null-Werte)
[0/1,n] ------ [0/1,n] ... nicht einsparen (das ist eine m:n Beziehung - eigene Relation mit Schlüsseln von jeder Seite)
Hoffe, ich hab keinen Fall vergessen, falls doch bitte aufmerksam machen! cu
p.s.: ich denke es passt hier alles, falls jemand doch einen Fehler findet: bitte ausbessern
DANKE!!!
Entweder hab ich das in der VO verschlafen oder sie habens nicht so durchgemacht, jetzt sollte es auf jeden Fall klar sein.
Nocheinmal Danke, Harti
[0,1] ------ [1,1]/[1,n]/[0/n] ... nicht einsparen (Datenbank akzeptiert keine Null-Werte)
Wenn da in der Prüfung sowas wie "achten sie darauf, dass datenbank keine nullwerte akzeptiert" steht, dann ist das was du geschrieben hast richtig. Wenn aber nicht explizit angegeben ist, dass datenbank keine nullwerte akzeptiert, muss man auch diese beziehung _nicht_ umwandeln - n-seiten Schlüssel kommt zu 1-seiten Tabelle als Fremdschlüssel dazu.
Wenn da in der Prüfung sowas wie "achten sie darauf, dass datenbank keine nullwerte akzeptiert" steht, dann ist das was du geschrieben hast richtig. Wenn aber nicht explizit angegeben ist, dass datenbank keine nullwerte akzeptiert, muss man auch diese beziehung _nicht_ umwandeln - n-seiten Schlüssel kommt zu 1-seiten Tabelle als Fremdschlüssel dazu.
Als Fremdschlüssel kanns schon mal sicher nicht dazu kommen, da ein Schlüssel an sich schon mal die eigenschaft hat, nicht mit null gefüllt werden zu können. Wenn, dann also als Fremdattribut.
Bin mit meiner Beschreibung denk ich aber auf der sicheren Seite... auch wenn nix von "keine null-werte" dasteht...
Wenn in der Angabe nix über Nullwerte steht, dann kann man ja in der Lösung dazuschreiben, dass man von einer Datenbank ausgeht, die Nullwerte akzeptiert. :ausheck:
meiner meinung nach kann aber ein schlüssel trotzdem keine nullwerte beinhalten!
na wurscht... ich machs jedenfalls so, als ob die datenbank keine nullwerte akzeptiert.
Fremdschüssel kann wohl null sein. Daher, wenn man [0, 1] --- [0,n] Beziehung hat und die Datenbank nullwerte akzeptiert, kann man diese Beziehung mit der 1-seite verschmelzen.
Ich sehe aber (http://hades.gothic.at/iforum/showthread.php?threadid=9273), dass du das eh verstanden hast... :zwinker:
meiner meinung nach kann aber ein schlüssel trotzdem keine nullwerte beinhalten!
Wenn der Fremdschlüssel in der [0,1] Relation nur als Attribut auftaucht, dann darf dieser auch null sein. Aber wenn der Fremdschlüssel im Schlüssel der Relation auftaucht, muss er ungleich null sein. Dann ist es aber auch keine [0,1] Relation mehr.
ich hab mir für dieses Bsp anhand eines Skriptums einer deutschen Uni und den alten Prüfungsbeispielen folgende "Regeln" zusammengeschrieben..
ist aber alles andere als vollständig.. nur ist der rest eher trivial :D
alpi 8)
PS: pls use at your own risk or let it be :P
leviathan
13-06-2003, 00:36
thx, scheint auf den ersten blick richtig zu sein. Ist gut das du es gemacht hast.
lg leviathan
habs anhand meiner eigenen zusammenfassung (die leider aus zeitmangel nur auf papier exisitiert und die ich daher net veröffentlichen konnte) verglichen und es passt alle. 3 und 5 tabelle könnte man zwecks übersichtlichkeit noch zusammenfassen.
außerdem sei noch angemerkt:
entity1 -----> entity2
(IST-Beziehung): entity1 erbt schlüssel von entity2 als schlüssel
und, ganz gefinkelt, kam auf einem PO-Bsp. vor:
entity1 -----> entity2
|_________________|
|__[1,1]_____[1,n]__|
also eine IST beziehung und eine 1:n beziehung zwischen zwei entitys:
entity1 bekommt 2x den schlüssel von entity2:
entity1(entity2.schl, schl, ...)
Fragt mich nicht weshalb; ich hätt auch gesagt, dass es den schl. zwar zweimal bekommt, aber nur 1x als schlüssel.
so stehts jedenfalls in der musterlösung und damit sollte man schon argumentieren können, denke ich.
oder weiß jemand aus sicherer quelle, dass es anders geht?
cu
thx hab die 2 jetzt zusammengefasst.. kA wie ich das übersehen hab :)
alpi 8)
vBulletin® v3.7.1, Copyright ©2000-2009, Jelsoft Enterprises Ltd.