1

私のモデル設計では、会場とチケットの間に直接的な相関関係はありません。Venues は Deals に対して 1 対多の関係であり、Deals は Tickets に対して 1 対多の関係です。

会場 -> セール -> チケット

これはおそらくばかげた質問ですが、Tickets.findByVenueId() 操作が必要です。それを照会し、すべてがサーバー側で行われるようにする最も効率的な方法は何ですか? Ticket モデルで VenueId への何らかの参照が必要ですか?

NodeでMongooseJSを使用しています。

4

1 に答える 1

1

私は間違いなく各チケットに VenueId を持っています。これが、会場ごとにチケットを照会できる唯一の「正気の」方法です。

これは非正規化と見なすことができますが、NoSQL データベースでこれを行う必要がある場合があります。この場合、そのフィールドが更新されることは決してないため、とにかく「厄介な」非正規化ではありません (チケットは会場を変更しません)。発行後)、古いコピーやデータの整合性に関する懸念はありません。

必要に応じて、より複雑なクエリを容易にするために、他の会場データ (都市名や会場の収容人数など) をチケットに含めることさえできます。明らかに、これは「正規化された」データベースからさらに遠ざかるため、必要な場合にのみ適用してください。私が描く最初の大きな線は、これらのコピーされたフィールドを更新する必要がある時点です。これは非常に複雑になる可能性があるためです。

于 2013-04-15T01:47:07.063 に答える