Mam problem z ustaleniem, jak dokładnie ustalić granice, kiedy i gdzie należy używać tabel odnośników w bazie danych. Większość źródeł, na które patrzyłem, mówi, że nigdy nie mogę mieć ich zbyt wiele, ale w pewnym momencie wygląda na to, że baza danych zostałaby podzielona na tak wiele części, że chociaż może być wydajna, nie jest już zarządzalna. Oto ogólny przykład tego, nad czym pracuję:
Powiedzmy, że mam tabelę o nazwie Pracownicy:
ID LName FName Gender Position
1 Doe John Male Manager
2 Doe Jane Female Sales
3 Smith John Male Sales
Udawaj przez chwilę, że dane są bardziej złożone i zawierają setki wierszy. Najbardziej oczywistą rzeczą, którą widzę, którą można przenieść do tabeli odnośników, jest Pozycja. Mógłbym utworzyć tabelę o nazwie Pozycje i przykleić klucze obce z tabeli Pozycje do tabeli Pracownicy w kolumnie Pozycja.
ID Position
1 Manager
2 Sales
Ale jak daleko mogę nadal dzielić informacje na mniejsze tabele wyszukiwania, zanim stanie się to niemożliwe do zarządzania? Mógłbym utworzyć tabelę Płeć i mieć 1 odpowiadającą Mężczyzna i 2 odpowiadającą Kobiecie w osobnej tabeli odnośników. Mógłbym nawet umieścić LName i FNames w tabelach. Wszystkie wpisy „John” są zastępowane kluczem obcym 1, który wskazuje na tabelę FName, która mówi, że identyfikator 1 odpowiada Johnowi. Jeśli jednak zejdziesz w dół do tej króliczej nory zbyt daleko, stół Twoich pracowników zostanie zredukowany do bałaganu obcych kluczy:
ID LName FName Gender Position
1 1 1 1 1
2 1 2 2 2
3 2 1 1 2
Chociaż może to być lub nie być bardziej wydajne dla serwera do przetworzenia, jest to z pewnością nieczytelne dla normalnej osoby, która może próbować go utrzymać i utrudnia programistom aplikacji próbującym uzyskać do niego dostęp. Więc moje prawdziwe pytanie brzmi: jak daleko jest za daleko? Czy są gdzieś „najlepsze praktyki” dla tego rodzaju rzeczy lub dobry zestaw wytycznych? Nie mogę znaleźć w Internecie żadnych informacji, które naprawdę zawiodłyby dobry, użyteczny zestaw wskazówek dotyczących tego konkretnego problemu, który mam. Projektowanie bazy danych to dla mnie stary styl, ale DOBRY projekt bazy danych jest bardzo nowy, więc zbyt techniczne odpowiedzi mogą być nad moją głową. Każda pomoc będzie mile widziana!