8

Mam tabele "autor" i "książka", połączone w has_many: przez tabelę "autor_book"Rails has_many: through -> Czy powinienem zachować kolumnę klucza głównego?

O ile mogę powiedzieć, nie ma celu dla: id pole klucza podstawowego na stole "author_book" ... ale zanim zaangażowałem się w ten pomysł, chciałem tylko potwierdzić. Czy istnieje jakikolwiek powód, aby utrzymywać kolumnę "id" na has_many: through table?

góry dzięki ...

+0

Musisz upewnić się, dodać 2 indeksów dla tych stosunków: add_index nazwa_tabeli [: author_id,: book_id] add_index nazwa_tabeli [: book_id,: author_id] To sprawia, że ​​masz możliwość, aby przejść każdy sposób przez relację bez konieczności skanowania tabeli. Na podstawie nazw tych tabel w przykładzie można również dodać ": unique => true", aby zatrzymać duplikaty –

Odpowiedz

8

Keep it. Później znajdziesz unikalny identyfikator, który spłaci się w sposób, który nie jest początkowo oczywisty.
przeciwieństwie do innych zasad rozwoju agile, to lepiej, aby elementy jakości danych tak skierowana góry.

3

Jeśli kiedykolwiek coś unikalnego do relacji autor-book, musisz się id aby ustawić go w tej tabeli za pomocą modelu AuthorBook. W tym przypadku nie wygląda to na prawdopodobny scenariusz i możesz dodać go później, jeśli zajdzie taka potrzeba.

Powiązane problemy