[FB] Problemy z kluczem obcym

0

No więc okazało się w pewnym momencie, że gdy założę klucze obce na mojej bazie, zaoszczędzi mi to ogromną ilość roboty podczas pewnych operacji.
Natomiast stało się to, czego się obawiałem. A mianowicie straciłem całą kontrolę nad bazą, jaką miałem.

I teraz np mam taką sytuację - są 2 tabele: BANKI(ID, ...) i SALONY(ID, ID_BANKU, ...)

Załóżmy, że czasami potrzebuję zainsertować rekord do tabeli salony z ID_BANKU = -1.
Wtedy wyskakuje mi violation on foreign key(bo nie ma takiego id w tabeli BANKI).

Podobne operacje mam "porozrzucane" po całym programie.
Teraz moje pytanie, czy mogę zrobić coś, żebym mógł insertować(updateować) takie rekordy nie tracąc powiązań?

0

Założyć bank z id -1 dla salonów nie mających banku, a w programie, np. w słowniku pokazywać banki tylko od 1. Sposób brzydki, ale jedyny.

0

wstawić za id_banku null

0
rafalw napisał(a)

Założyć bank z id -1 dla salonów nie mających banku, a w programie, np. w słowniku pokazywać banki tylko od 1. Sposób brzydki, ale jedyny.

Też o tym myślałem, nawet nie sprawdziłem, ale czy ID kluczy głównych mogą być liczbami ujemnymi?

Poza tym jest jeszcze jeden problem, przez który nie mogę tak postąpić, jak napisał Misiek, czy też tak. Mam jeszcze jedną tabelę, która w kluczu obcym może przyjmować ujemne wartości(-1, -2, -3...itd). Rozróżniam tak "klientów anonimowych".

To powinno tak zostać, dodatkowo z powodu utrzymania integracji ze wcześniejszą wersją bazy(tak, żeby import danych z wcześniejszej wersji był możliwy i nic się nie popsuło)

Gdyby była możliwość zmiany triggera, który odpowiada za te powiązania....

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