1

在我的模型设计中,场地和门票之间没有直接的关联。Venues 与 Deals 是一对多的关系,而 Deals 与门票是一对多的关系。

场地 -> 优惠 -> 门票

这可能是一个愚蠢的问题,但我想要一个 Tickets.findByVenueId() 操作。查询并确保这一切都发生在服务器端的最有效方法是什么?我是否需要在 Ticket 模型中对 VenueId 进行某种引用?

我在节点上使用 MongooseJS。

4

1 回答 1

1

我肯定会在每张票中有一个 VenueId。这是能够按场地查询门票的唯一“理智”方式。

虽然这可以被认为是非规范化,但有时您必须在 NoSQL 数据库中执行此操作,在这种情况下,无论如何它都不是“麻烦”的非规范化,因为该字段不应该有任何更新(门票不会改变场地发行后),因此无需担心过时的副本和数据完整性。

根据您的需要,您甚至可以在票证中包含其他场地数据(例如城市名称或场地容量),以方便更复杂的查询。显然,这使您远离“规范化”数据库,因此仅在需要时应用。我要画的第一条大线是在需要更新这些复制的字段时,因为这可能会涉及很多。

于 2013-04-15T01:47:07.063 回答