Łukasz P.

Łukasz P. Student, Akademia
Ekonomiczna im.
Oskara Langego we
Wrocł...

Temat: Warunek dla kolumny - prośba o pomoc

Witam wszystkich,
Od jakiegoś czasu projektuje bazę danych MySQL i nie wie m w jaki sposób rozwiązać następujący problem:

Posiadam 4 tabele:
osoby(id_osoby, imie, nazwisko),
instytucja(id_ins, nazwa),
przyn_ins(Id_przyn_ins, id_osoby, id_ins, data_od, data_do, stanowisko),
deklaracja(id_dekl, id_osoby, id_ins, data).

Założeniem jest, że jedna osoba może przynależeć do różnych instytucji (wiele do wielu) dlatego zrobiłem tabele łączącą. Chodzi mi o taką możliwość zdefiniowania pola id_ins w tabeli deklaracja aby niemożliwe było wprowadzenie identyfikatora instytucji (klucza obcego) do jakiej osoba nie należy (nie występuje związek osoby z instytucją w tabeli przyn_ins). Jest możliwość zabezpieczenia tego? Proszę o jakieś rady
Bartosz Ratajczyk

Bartosz Ratajczyk MS SQL Developer

Temat: Warunek dla kolumny - prośba o pomoc

Zajrzyj do http://dev.mysql.com/doc/refman/5.0/en/innodb-foreign-...
Warunek - tylko dla tabel typu InnoDb

konto usunięte

Temat: Warunek dla kolumny - prośba o pomoc

na pewno rozwiązaniem byłby trigger, bo nie można założyć klucza obcego na nieistniejący rekord
Łukasz P.

Łukasz P. Student, Akademia
Ekonomiczna im.
Oskara Langego we
Wrocł...

Temat: Warunek dla kolumny - prośba o pomoc

nie do końca chyba wyraziłem się jasno, nie chodzi mi o definicje klucza obcego w tabeli deklaracja. Chodzi mi o rozwiązanie takiej kwestii: osoba A pracuje w firmie B i firmie C i takie dane są w tabeli łączącej. Chodzi mi o to, że wypełniając tabele deklaracja w polu klucza obcego możliwe do wpisania były jedynie identyfikatory firm B i C (tych w których pracuje a nie wszystkich firm, które są w tabeli instytucje) Czyli żeby możliwe było wpisanie w jednym rekordzie: Osoba A (identyfikator osoby) (do wyboru firma B i C i żadna inna wartość). Czyli dwie kombinacje w rekordzie A B oraz A C a każda inna kombinacja kluczy w danym rekordzie byłaby zablokowana przez coś (tylko nie wiem jak). Chodzi mi o mechanizm wymuszający zapewnienie integralności danych żeby osoba nie mogła mieć wypisanej deklaracji z instytucją z jaką nie ma żadnego związku. Myślałem o triggerze ale nie wiem w jakim momencie miałby działać: before insert w tabeli deklaracja i żeby sprawdził czy te związki istnieją i jak tak to dopuszczał tylko te wartości klucza obcego - w dobrym kierunku kombinuje jest to możliwe?



Wyślij zaproszenie do