2009-08-26 16 views
0

映画、書籍、ゲーム、その他のメディアに関するさまざまな情報を保存する必要があります。出版社からDVDボックスのディスク枚数に始まります。最初は抽象的なItemモデルについて考えていましたが、Book、Movie、Gameという子供たちがいます。しかし、それはすべてハードコーディングされ、非常にスケーラビリティではないと私は思います。新しいアイテムタイプを追加する必要がある場合はどうすればよいですか?djangoモデルデザインの質問

私はここで仮想フィールドについてお読みになりました。 Django - designing models with virtual fields? 私の注目を集めました。しかしDBは重く、検索可能ではないようですが、間違っていますか?

このような場合にはどのような方法が最適ですか?

答えて

1

具体的なアイテムのスーパークラス(タイトル、copyright_date、パブリッシャーなど共通のフィールドがある可能性が高いので)、サブタイプごとにサブクラスを追加したいと思っています〜number_of_jointsフィールドのActionFigure)に、multi-table inheritanceを使用します。

DjangoのORMは他のテーブルに参加しないので、Itemモデルを照会するだけであれば速くなります(item.subclassnameを参照してItemオブジェクトを返します)

インデックス機能を使用している場合、インデックス作成の頻度が低いため、効率はそれほど重要ではありません。