Deklarujemy ograniczenie SQL FK (FOREIGN KEY), aby powiedzieć, że wartość podrzędna dla listy kolumn zawsze pojawia się w innym miejscu jako wartość podrzędna dla listy kolumn, która tworzy SQL PK (PRIMARY KEY) lub UNIQUE NOT NULL. Zadeklaruj to, gdy nie jest to już sugerowane przez inne deklaracje. Musi odwoływać się do listy kolumn w zadeklarowanym SQL PK (PRIMARY KEY) lub UNIQUE NOT NULL. Musisz więc zadeklarować to w tabeli, do której się odwołuje, nawet jeśli jest to już sugerowane przez wartości NOT NULL i mniejsze zawarte PK lub UNIQUE NOT NULL.
Należy więc zauważyć, że SQL PK niekoniecznie jest PK w relacyjnym sensie bycia unikalnym, ale nie zawierającym mniejszego unikalnego zestawu kolumn, tj. będąc nadkluczem nie zawierającym mniejszego nadklucza, tj. będąc minimalnym/nieredukowalnym nadkluczem, tj. będąc CK ( klucz kandydata).
Tutaj może być konieczne zastąpienie buildingno
&roomno
FKs o jeden, (buildingno, roomno)
do Room
:
CONSTRAINT SESSION_FK12
FOREIGN KEY(BUILDINGNO,ROOMNO) REFERENCES ROOM(BUILDINGNO,ROOMNO)
To może być odpowiednie dla znaczeń twoich tabel – których w rzeczywistości nie podajesz, więc nie możemy wiedzieć, możemy tylko zgadywać. Np. jeśli buildingno
może również być zadeklarowane jako PK lub UNIQUE NOT NULL w pokoju, co gdy roomno IS NOT NULL
jest zgodny z i implikuje (buildingno, roomno)
może być zadeklarowany jako PK lub UNIQUE NOT NULL, może twoje FK jest właściwe ale twój Room
deklaracje są niewystarczające.
Gdy wartość podrzędna dla listy kolumn zawsze pojawia się w innym miejscu jako wartość podrzędna dla listy kolumn, która jest nazywana ograniczeniem IND (zależność włączenia). Nie ma możliwości zadeklarowania w SQL IND spoza FK; musimy egzekwować za pomocą wyzwalaczy. To również może być tym, czego potrzebujesz do swojego projektu.
Możesz zachować FK z buildingno
do Building
, ale wynika to z sugerowanego przeze mnie FK i FK w buildingno
w Room
odwoływanie się do Building
.
odwołuje się do części złożonego klucza podstawowego