2017-01-27 18 views
0

私はモデルを設定していますが、ManyToManyリレーションシップの使用を避けようとしています。 は、私は、このセットアップを持っている:Djangoでのリバースリレーションシップのパフォーマンスへの影響

  • モデル:人間
  • 一部の人間(小さな割合)は、他の人間とのM2M関係を持っている必要があります。この関係を「知っている」(is_known_byと呼ばれる逆の関係)と呼ぶことにしましょう。
  • ManyToManyFieldを人間に設定するのを避けるため、私はModel FamousHumansを作った。
  • FamousHumansは、人間の特別なクラスであり、彼らはまた、ここでは関係

を「知っている」表現するのManyToManyField(人間)を持っているOneToOneField(ヒト)に

  • をしている私の質問です:Djangoが作成されますので 私はすべての人間がFamousHumansと逆の "is_known_by"関係を持つと仮定しているので、まだM2Mの関係があります。セットアップに何らかのパフォーマンス上の利点はありますか?

    データセットはかなり大きく、少数の人間だけがM2M関係を必要とします。私の主な関心事はパフォーマンスです。

  • 答えて

    4

    これは不必要に複雑です。

    多対多リレーションシップのパフォーマンスオーバーヘッドはありません。これは、データベース内の中間テーブルによって表されます。人間のテーブルには実際のフィールドはありません。項目にm2mメンバーがない場合、データは保管されません。

    +0

    ありがとうございました。すべてを簡素化しようとする – rwms

    関連する問題