Istnieją różne szkoły myślenia na ten temat. Jedna szkoła preferuje włączenie klucza podstawowego i nazwanie tabeli łączenia o wiele ważniejszej niż tylko dwie połączone tabele. Rozumowanie jest takie, że chociaż tabela może zacząć wyglądać jak zwykła tablica łącząca, może stać się własną tabelą ze znaczącymi danymi.
Przykładem jest wiele-do-wielu między czasopismami i subskrybentami. Naprawdę ten link jest subskrypcją z własnymi atrybutami, takimi jak data wygaśnięcia, status płatności itp.
Jednak czasami wydaje mi się, że tabela łączenia jest tylko tabelą łączenia. Wiele do wielu relacji z kategoriami jest tego dobrym przykładem.
W tym przypadku oddzielny klucz podstawowy 1 pola nie jest konieczny. Mógłbyś mieć przypisany klucz, który nie zaszkodziłby niczemu, i ułatwiłby usuwanie określonych zapisów. Może to być dobre jako ogólna praktyka, więc jeśli tabela później przekształci się w znaczącą tabelę z własnymi znaczącymi danymi (jako subskrypcje), będzie miała już automatycznie przypisany klucz podstawowy.
Możesz umieścić unikalny indeks na obu polach, aby uniknąć duplikatów. Zapobiegnie to nawet duplikatom, jeśli masz osobny klucz automatycznego przypisywania. Możesz użyć obu pól jako klucza podstawowego (który jest również unikalnym indeksem).
Tak więc, jedna szkoła myślenia może trzymać się z kluczami całkowitymi automatycznie przypisanymi kluczami podstawowymi i unika złożonych kluczy podstawowych. Nie jest to jedyny sposób, aby to zrobić, a może nie najlepszy, ale nie doprowadzi cię to źle, do problemu, w którym naprawdę żałujesz.
Ale z czegoś takiego, jak to, co robisz, prawdopodobnie będzie dobrze z tylko dwoma polami. Wciąż zalecałbym albo uczynienie dwóch pól złożonym kluczem podstawowym, albo przynajmniej umieszczenie unikalnego indeksu na dwóch polach.
Zrobiłbym to samo. Dodanie trzeciej kolumny umożliwia utworzenie duplikatów rekordów. –
Czy w tym przypadku konieczne jest utworzenie złożonego klucza podstawowego? –
@ Harry.Naeem Jeśli nie, możesz łatwo skończyć z duplikatami rekordów w tabeli. Nie sądzę, że byś tego chciał. – Taryn