maddinuser Geschrieben 27. Juli 2009 Geschrieben 27. Juli 2009 Hallo, habe ein paar Fragen zu einer Klausur. Ich schreibe demnächst eine Nachprüfung, ist also sehr wichtig. Ich hänge einfach ein Bild an. Ich verstehe einfach nicht, warum D-Dorf gelöscht wird, A-Dorf jedoch nicht, obwohl der gleiche Befehl gemacht wird. Die Tabellen wurden mit referenzieller Integrität angelegt ! Zusätzlich wäre eine lösung der anderen Felder wirklich toll !! Danke schonmal http://img36.imageshack.us/img36/7338/unbenanntodz.jpg Zitieren
flashpixx Geschrieben 27. Juli 2009 Geschrieben 27. Juli 2009 Bitte beschreib einmal den kompletten Zusammenhang. Wie hängen die beiden Tabellen zusammen? Ich nehme einmal Kunde => Ort als (1:N oder CN?) an. In welcher Zeile bzw Spalte möchtest Du wissen wie das Ergebnis ist? Soll ich den Originaltext oder den handgeschrieben verwenden. Der gedruckte Text ist zwar syntaktisch korrekt, aber er würde zum Teil gar keine Datensätze löschen, weil passende Datensätze nicht existieren. Zusätzlich ist es wichtig wie die Integrität gesetzt ist bzw wie das Contraint zwischen den beiden Tabellen aussieht Phil Zitieren
maddinuser Geschrieben 27. Juli 2009 Autor Geschrieben 27. Juli 2009 (bearbeitet) Auf viele Fragen kann ich dir gar kiene Antwort geben. Ich musste die Aufgabe ja auch so lösen ^^ Immer, wenn etwas durchgestrichen ist und per Hand verbessert ist, bitte das lesen ! Einzige Info zu den Tabellen: Sie wurden mit referenzieller Integrität angelegt. Ich denke mal die PLZ ist in der Tabelle mit der kID der Fremdschlüssel. Wenn du eine weisst, bitte ich um die Lösung aller Felder Bearbeitet 27. Juli 2009 von maddinuser Zitieren
flashpixx Geschrieben 27. Juli 2009 Geschrieben 27. Juli 2009 (bearbeitet) Auf viele Fragen kann ich dir gar kiene Antwort geben. Ich musste die Aufgabe ja auch so lösen ^^ Wie soll man dann eine Aufgabe lösen, wenn die Aufgabenstellung nicht klar ist? Einzige Info zu den Tabellen: Sie wurden mit referenzieller Integrität angelegt. Ich denke mal die PLZ ist in der Tabelle mit der kID der Fremdschlüssel. "Ich denke" usw, damit kann ich nichts anfangen. Am Bsp Cascade: Wenn ich das Contraint als Cascade deklariert habe und lösche auf der Kundentabelle einen Datensatz, dann wird der referenzierte PLZ Datensatz ebenfalls gelöscht. evtl hilft das hier weiter Einführung in SQL: Fremdschlüssel-Beziehungen ? Wikibooks, Sammlung freier Lehr-, Sach- und Fachbücher Wenn ich die Aufgabe so verstehe und voraussetze, dass PLZ Fremdschlüssel auf Kunde ist und in der Tabelle links (Zeilen) die Contraints angegeben und oben (Spalten) die auszuführenden Aktionen, dann würde für den ersten Fall (on delete cascade + delete from kunden where id =1) die Lösung: löscht den Kundendatensatz mit der ID 1 und den dazu referenzierte Orte Datensatz mit PLZ 47111 Der Eintrag (on delete cascade + delete from orte where plz = 47111) ist meiner Ansicht nach korrekt, denn das delete wirkt sich zunächst nur auf die Orte Tabelle aus. Wenn und das ist jetzt die Interpretation Deiner Aufgabe, eine referentielle Integrität auch zwischen Orte und Kunde besteht, dann werden auch die Kundendatensätze mit der PLZ 47111 entfernt. Ich kann bei einem DBMS immer sagen, wie sich die Integrität auswirkt, wenn ich diese in beide Richtungen haben will, dann muss ich das auch explizit angeben, sonst wird als Defaulteinstellung immer nur in eine Richtung abgebildet. Ich modelliere würde so modellieren: Kunde => Orte = Restrict, Orte => Kunde = Restrict / Cascade Denn ich darf einen Ort erst dann löschen, wenn ich alle Kunden gelöscht habe, denn sonst hängt evtl die PLZ eines Kunden in der Luft. Ob man wenn man den Ort löscht auch alle Kunden löschen sollte, ist abhängig von der Problemstellung, hier würde sich auch ein set null anbieten, dafür muss aber bekannt sein, wie die Struktur der Tabellen ist Phil Bearbeitet 27. Juli 2009 von flashpixx Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.