0

我想得到一些关于做一些 MongoDB 数据设计的反馈。我以前从未真正使用过它,所以如果我的设计看起来很疯狂,请告诉我。

我对用户和用户执行的活动有一个概念。用户和他们执行的活动都需要有一个地址,并且他们执行的活动是该用户独有的。由于活动永远不会重叠,因此地址也不应该重叠。

我的初始数据结构如下所示:

User : {
  # User data,
  address : {
    # address data
  },
  address : {
    # address data,
    home : true
  },
  activity : {
    # activity data,
    _address_id: #referenced address within user
  },
  activity : {
    # activity data,
    _address_id: #referenced address within user
  },
}

假设该活动可以在家中进行。

有一个更好的方法吗?我应该在活动和用户中嵌入地址吗?我应该从用户模型中完全删除它吗?

这一切都在使用 Mongoid 的 Rails 应用程序中结合在一起。

4

1 回答 1

1

您的数据结构非常好——面向文档的数据库就是这样使用的。您不应该在每个活动中重复地址,因为您最终会浪费空间。

User : {
  # User data,
  address_<id> : {
    # address data
  },
  address_<id> : {
    # address data,
    home : true
  },

  activity : {
    # activity data,
    _address_id: #referenced address within user
  },
  activity : {
    # activity data,
    _address_id: #referenced address within user
  },
}

您需要注意两件事:
1. 不要为单个活动检索整个文档
2. 确保文档不超过最大大小(或重新编译)

于 2013-01-22T17:28:05.967 回答