Müssen Sie beim Erstellen einer Tabelle auf Rails einen Fremdschlüssel erstellen?

8

Ich beginne jetzt auf Rails, ich habe im Forum nachgeschaut, aber ich habe nichts gefunden, was mein Problem lösen könnte.

Hier ist es, ich habe eine Kategorie-Tabelle, und es hat nur Namen für eine Spalte (es gibt keine Wiederholung in Kategorien), so dass ich möchte, dass der Name der Primärschlüssel ist, dann habe ich eine Produkttabelle mit Namen, main_photo, Beschreibung und ich möchte sagen, dass ein Produkt nur eine Kategorie hat, muss ich eine Spalte namens Kategorie als Fremdschlüssel in Produkten hinzufügen?

Eine Kategorie enthält viele Produkte.

Dann in Kategorie-Modellen, wie sage ich, dass der Name der Primärschlüssel ist, und wie kann ich die Entsprechung zwischen dem darunter liegenden Namen des Primärschlüssels in Kategorien und der Kategorie in Produkten tun?

    
Márcio Duarte 30.11.2011, 23:36
quelle

2 Antworten

15

Fremdschlüsseleinschränkungen in Active Record werden nicht oft verwendet, da die Ideologie hinter Active Record besagt, dass diese Art von Logik im Modell und nicht in der Datenbank enthalten sein sollte - die Datenbank ist nur ein dummer Speicher: Ссылка .

Der Rails-Weg besteht darin, eine ID-Spalte in allen Tabellen, einschließlich Ihrer Categories-Tabelle, und in Ihrer Products-Tabelle eine Spalte namens Category_ID zu haben. Beachten Sie, dass die Tabellennamen Pluralformen sind.

Dann definieren Sie in Ihrem Modell die Beziehungen zwischen den Entitäten Produkt und Kategorie. Lesen Sie den Artikel Ein Leitfaden zu Active Record Associations und er wird alle Ihre Fragen beantworten, insbesondere Abschnitte 2.1, 2.2 und 3.3.

    
link664 30.11.2011 23:57
quelle
6

Es gibt viele gültige Gründe, Fremdschlüssel in Ihrer Datenbank zu haben. Siehe Benötigt Rails Einschränkungen auf Datenbankebene?

>

Ich empfehle Foreigner , wenn Sie einfach Fremdschlüssel zu Ihrer Rails-App hinzufügen möchten.

    
tee 02.12.2011 05:39
quelle