Witam.
Mam problem z zamodelowaniem relacyjnej bazy danych. Powiedzmy, że mamy tabele:
Countries
Cities
Producers.
Producers mają pole city_id wskazujące na id miasta, w którym są umiejscowieni
Cities mają pole country_id wskazujące na id kraju, w którym leżą.
Jeśli chcemy się dowiedzieć w którym kraju leży producent abcd, to pobieramy z niego city_id, pobieramy miasto o takim id, z niego natomiast pobieramy country_id, pobieramy kraj o takim id. Myślę, że jest to tak intuicyjne podejście, że więcej nie trzeba tłumaczyć.
Natomiast co zrobić z sytuacją, gdy mam producentów nieprzypisanych do miasta (ponieważ np. nie jest w tej chwili znane), ale wiadomo w jakim kraju się znajduje?
Pierwsza myśl, to dodanie X miast o nazwie '???', gdzie X to ilość krajów i przypisywanie takich producentów tym właśnie 'miastom'. Rodzi to problemy w utrzymaniu spójności bazy danych.
Drugi pomysł to dodanie do tabeli Producers również 'country_id'. Tutaj też trzeba zapewnić spójność, a raczej walidację przy dodawaniu i edycji rekordów.
Bardzo proszę o opinie.
Nie jestem bazodanowcem, więc nie wiem czy istnieją standardowe rozwiązania tego typu problemów, jakie niosą ze sobą konsekwencje w implementacji, rozszerzaniu i utrzymaniu. Z góry dzięki za wszelką pomoc.