Zależności między dwoma tabelami SQL Serwer

0

Witajcie.

Mam dwa okienka w projekcie. Na jednym okienku wprowadzam imie, nazwisko i przedmiot nauczyciela, na drugim wybieram wychowawcę do klasy. Na każdym z okien jest możliwość usunięcia z bazy.

Chcę zrobić jakiś warunek aby uniemożliwić sytuację taką , że nauczyciela wyrzucamy, a widnieje on jako wychowawca. Czy można to zrobić z poziomu sql? np jakąś funkcją? a potem ją tylko wywołać w C#?

Tabele w SQL serwerze:

Nauczyciel

  • id
  • imie
  • nazwisko
  • przedmiot

Klasa

  • id
  • nauczyciel_id
  • nazwa
2

FK w bazie.

0

Można to zrobić foreign key tak jak to kolega wyżej napisał lecz musisz pamiętać o dobrym stworzeniu FK bo jak usuniesz wychowawcę żeby nie usunęło nauczyciela, ale możesz sobie również stworzyć funkcję do usuwania nauczycieli w której sprawdzasz w drugiej tabeli czy jest wychowawcą.

0

Próbuje ustawić te FK.

Naskrobałem coś takiego.

update klasa set nauczyciel_id = null where nauczyciel_id not in (select id from nauczyciel)

alter table klasa
add constraint nauczyciel_fk foreign key (nauczyciel_id) references nauczyciel(id) 

Jednak wyrzuca błąd ;/

There are no primary or candidate keys in the referenced table 'nauczyciel' that match the referencing column list in the foreign key 'nauczyciel_fk'.

0

Jakiś czas programik leżał w szufladzie. Z racji urlopu postanowiłem się znów z nim pobawić. Jednak zauważyłem, że coś jest nie tak z tym kluczem obcym. Mianowicie. Nie mogę usunąć żadnego nauczyciela. Bez różnicy czy pełni on rolę wychowawcy czy też nie...

Niżej zamieszczam zdjęcię błędu, który wysypuje program ;/

daed7a5fb2211.jpg

dodanie obrazka do załączników posta - @furious programming

1 użytkowników online, w tym zalogowanych: 0, gości: 1