我正在为一个新项目设计我的数据库模型,因为我来自 SQL 世界,所以我不确定哪种方法更好。
这是我的主要关系:
- 用户组织的事件。 (例如:约翰正在组织一场足球赛 游戏)
- 加入事件的用户。 (例如:安娜和罗布参加了约翰组织的足球比赛)
- 事件属于类别/ActivityType(约翰的游戏属于足球类别)
- 用户在完成事件后对其他用户进行评分(例如:John 对 Anna 的表现给予 5 星评分,对 Rob 给予 5 星评分 在足球比赛期间)。
伪代码应该是这样的:
用户
- _id
- 全名
- 电子邮件
- 密码
- loc ({ lon: X, lat: Y })
- 事件(事件数组)
- 平均比率
- 创建于
- 更新时间
评分
- _id
- 时间戳
- 事件(事件)
- rater_user(用户)
- rated_user(用户)
- 创建于
- 更新时间
事件类型
- _id
- 姓名
- 半径
事件
- _id
- 类型(事件类型)
- 组织者(用户)
- loc ({ lon: X, lat: Y })
- 地址
- 时间
- 最大参与者数
- 描述
- 参与者(用户数组)
- 请求(用户数组)
- 创建于
- 更新时间
我应该从这种规范化方法转向嵌入式数据模型吗?
最佳答案
这是我写的关于在 mongodb
中嵌入或引用的答案。强烈推荐。
嵌入更适合:
- Small subdocuments
- Data that does not change regularly
- When eventual consistency is acceptable
- Document that grow by a small amount
- Data that you'll often need to perform asecond query to fetch
- Fast reading speed
引用更适合
- Large subdocuments
- Volatile data
- When immediate consistency is necessary
- Document grow with a large amount
- Data that you often exclude from document
- Fast write speed
-摘自《Mongodb权威指南》
关于MongoDB:用户和事件的嵌入式或规范化数据模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26414844/