Zwykle, gdy masz tabelę z wielokolumnowym kluczem podstawowym, jest to wynik tabeli łączenia (wiele do wielu), która została podniesiona do rangi własnej jednostki (a zatem zasługuje na swój własny klucz podstawowy). Jest wielu, którzy twierdzą, że każda tabela dołączania POWINNA być jednostką domyślnie, ale jest to dyskusja na inny dzień.
Spójrzmy na hipotetyczną relację wiele do wielu:
Student * --- * Klasa
(uczeń może być w wielu klasach, klasa może mieć wielu uczniów).
Pomiędzy tymi dwiema tabelami pojawi się tabela połączeń o nazwie StudentClass (lub ClassStudent, w zależności od tego, jak ją napiszesz). Czasami chcesz śledzić rzeczy, na przykład kiedy uczeń był w klasie. Więc dodasz go do tabeli StudentClass. W tym momencie StudentClass stał się unikalnym bytem ... i należy mu nadać nazwę, aby go rozpoznać, np. Rejestracja.
Student 1 --- * Zapisy * --- 1 klasa
(uczeń może mieć wiele zapisów, każde zapisanie jest na jedną klasę (lub odwrotnie, klasa może mieć wiele zapisów, każde zapisanie jest na jednego ucznia).
Teraz możesz zapytać, na przykład, ilu uczniów zapisano na zajęcia Chemia 101 w ubiegłym roku? Lub w jakich zajęciach uczestniczył student John Doe, uczęszczając na Uniwersytet Acme? Było to możliwe bez oddzielnego klucza podstawowego, ale kiedy masz klucz podstawowy do rejestracji, łatwiej byłoby zapytać o te zapisy (według identyfikatora), ilu uczniów otrzymało ocenę pozytywną?
Ustalenie, czy jednostka zasługuje na PK, sprowadza się do tego, ile zapytań (lub manipulacji) wykonasz dla tej jednostki. Załóżmy na przykład, że chcesz dołączyć zadania wykonane dla ucznia w klasie. Logiczne miejsce, w którym można dołączyć ten byt (Przypisanie), byłoby w encji rejestracji. Nadanie rejestracji własnego klucza podstawowego uprościłoby zapytania dotyczące przypisania.