2016-04-08 5 views
0

Hier ist das Problem: Ich habe 2 Tabellen, DEPARTMENT (Primärschlüssel: dname) und DEPARTMENT_LOCATION (Primärschlüssel: Stadt, Straße, Gebäude, Ebene), eine andere Tabelle zu vertreten die Beziehung zwischen diesen 2 namens DEPT_AT_LOC (Primärschlüssel: dname, Stadt, Straße, Gebäude, Ebene)Setzen Sie null auf einen Fremdschlüssel, der Teil des Primärschlüssels ist

Offensichtlich ist der Primärschlüssel von DEPT_AT_LOC die Kombination von Fremdschlüsseln und nach Definition des Primärschlüssels sind sie NICHT NULL. Mein Dozent verlangt jedoch, dass ON DELETE eines Abteilungsnamens in der Tabelle DEPARTMENT der Fremdschlüssel dname in DEPT_AT_LOC auf NULL gesetzt sein muss ???

Kann mir jemand dabei helfen? Ich habe dem Vortragenden eine E-Mail geschickt, um zu fragen, aber er bestand darauf, dass es einen Weg gibt, das zu tun, etwas zu sagen, das sich auf Kandidatenschlüssel bezieht.

Antwort

1

Geben Sie eine Spalte mit dem Namen "id" (der Kandidatenschlüssel) in DEPT_AT_LOC ein und machen Sie diese Spalte zum Primärschlüssel. Dann können Sie dname auf DEP_AT_LOC setzen, um bei DELETE gelöscht zu werden.

Ihre Datenbank stellt nicht mehr sicher, dass Sie keine doppelten DEPARTMENT -> DEPARTMENT_LOCATION-Verbindungsdatensätze in DEP_AT_LOC haben. Sie müssten diese Überprüfung auf Ihre Anwendungsebene verschieben.

Nebenbei, warum enthält DEPT_AT_LOC bereits Spalten (Stadt, Straße, Gebäude, Ebene) in DEPARTMENT_LOCATION?

Verwandte Themen