私のモデルでは、私はConcert
クラスとVenue
クラスを持っています。各会場には複数のコンサートがあります。私は会場のオブジェクトの主キーを含む...シンプルなぜmodels.ForeignKeyが有利ですか?
venue = models.IntegerField(max_length = 10)
で会場にコンサートクラスをリンクされています。同僚は代わりにvenue = models.ForeignKey(Venue)
を使用するよう提案しました。これも同じですが、私はConcert.objects.filter(venue=4)
の会場のIDをForeignKey
:Venue_instance.Concert_set.all()
と同じように使って、会場のすべてのコンサートをパースすることができたので、それは価値があるのだろうかと思います。私は自分の方法を使っても問題は一度もありませんでした。
IntegerField
とobjects.filter()
を使用すると、ForeignKey
と同じくらい多くの「ManyToOne」関係があるので、私はどこが間違っているか知りたいと思います。 ForeignKeys
はなぜ有利なのですか?彼らはより速いのですか?より良いデータベース設計ですか?クリーナーコード?
私はそれが完全性と関係があると思います。 'venue'を' Venue'テーブルに存在しない値に設定できますか? 1つまたは他のデザインを使用してそのテーブルのキーを更新または削除するとどうなりますか? –
私はそれを検討するべきだと思います。これはあなたが考えることができる唯一の問題ですか?それは私を心配するものではありません。 –
スイッチを作るだけです。初心者にとっては、現在のアプローチでは、プライマリキースキームが偶然に変更された場合、あなたは嫌な思いをします。 – Marcin