Tabele odnośników (lub tabele kodów , jak nazywają je niektóre osoby) są zwykle zbiorem możliwych wartości, które można podać dla określonej kolumny.
Załóżmy na przykład, że mamy tablicę przeglądową o nazwie party
(przeznaczoną do przechowywania informacji o partiach politycznych), która ma dwie kolumny:
party_code_idn
, który przechowuje generowane przez system wartości liczbowe i (pozbawiony znaczenia domeny biznesowej ) działa jako surogat dla prawdziwego klucza.party_code
, jest prawdziwym lub „naturalnym” kluczem tabeli, ponieważ utrzymuje wartości mające konotacje z domeną biznesową .
Powiedzmy, że taka tabela zachowuje następujące dane:
+----------------+------------+
| party_code_idn | party_code |
+----------------+------------+
| 1 | Republican |
| 2 | Democratic |
+----------------+------------+
party_code
Kolumna, która utrzymuje „republikański” i „demokratyczny”, będąc prawdziwym kluczem stołu, jest skonfigurowana z ograniczeniem wyjątkowy, ale opcjonalnie dodany wartości party_code_idn
i określił go jako PK tabeli (choć logicznie rzecz biorąc , party_code
może działać jako KLUCZ PODSTAWOWY [PK]).
Pytanie
Jakie są najlepsze praktyki wskazywania wartości wyszukiwania z tabel transakcji ? Czy powinienem ustanowić odniesienia do klucza OBCEGO (FK) albo (a) bezpośrednio do wartości naturalnej i znaczącej, albo (b) w celu zastąpienia wartości?
Opcja (a) , na przykład
+---------------+------------+---------+
| candidate_idn | party_code | city |
+---------------+------------+---------+
| 1 | Democratic | Alaska |
| 2 | Republican | Memphis |
+---------------+------------+---------+
ma następujące właściwości 1 :
- Czytelny dla użytkownika końcowego (+)
- Łatwy do importu-eksportu między systemami (+)
- Trudno zmienić wartość, ponieważ wymaga modyfikacji we wszystkich tabelach odsyłających (-)
- Dodanie nowej wartości nie jest kosztowne (=)
Myślę, że jest prawie jak „ przekazywanie przez wartość ”, aby wyciągnąć analogię z wywołania funkcji w żargonie programowania aplikacji.
Opcja (b) , na przykład
+---------------+----------------+---------+
| candidate_idn | party_code_idn | city |
+---------------+----------------+---------+
| 1 | 1 | Alaska |
| 2 | 2 | Memphis |
+---------------+----------------+---------+
ma właściwości poniżej:
- Nieczytelne dla użytkownika końcowego (-)
- Trudne do importu-eksportu ponieważ musimy go usunąć z odniesienia (-)
- Łatwa do zmiany wartości, ponieważ przechowujemy tylko referencje w tabelach transakcji (+)
- Dodanie nowej wartości nie jest kosztowne (=)
Jest bardzo podobny do „ pass by reference ”, jeśli porównać do wywołania funkcji w języku programowania aplikacji.
Import-eksport można również wykonać w inny sposób, np. Po prostu ponownie wypełniając tabelę przeglądową, a następnie ponownie wypełniając kolumnę zastępczą. Mam nadzieję, że dobrze to rozumiem. Właśnie to usłyszałem jako możliwość.
1. Należy pamiętać, że +
, -
i =
wskazują na korzyści z tych właściwości.
Pytanie
Co ważne: czy istnieje różnica między wyszukiwaniem (lub kodem) tabelą ) a referencją FK, jeśli zamierzamy zastosować to drugie podejście? Myślę, że działają tak samo.