我正在为一个关于员工轮类的小项目编写 API Rest,但我陷入了如何设计模型的困境。我找到了一种设计方法,但我怀疑这是否是最好的方法。
我的收藏是:
- 用户:(员工)
- 职位:(员工职位)
- 轮类:(根据员工职位的开始 - 结束时间。)
- 记录:(轮类日期、类次和员工)
- Rota:(有关 Rota 的信息)
用户可以拥有多个职位。
轮类只有一个位置。
记录收集员工的变动情况以及有关轮值表的引用信息。
我将简化我的代码:
const User = Schema({
name: {type: String},
position: [{type: Schema.Types.ObjectID, ref 'Positions'}]
});
const positions = Schema({
name: {type: String}
});
const Shifts = Schema({
start_time: {type: Date},
end_time : {type: Date},
position: {type: Schema.Type.ObjectID, ref 'Positions'}
});
const Records = Schema({
start_date: {type: Date},
end_date : {type: Date},
shift: {type: Schema.Type.ObjectID, ref 'Shifts'},
employees:[{type: Schema.Type.ObjectID, ref 'Users'}]
});
您认为开发模式是否是一个好的设计?
有什么需要改进的吗?或者需要改变什么?
最佳答案
根据我的经验,MongoDB 中过多的引用会降低 MongoDB 的速度。当您使用关系数据库时,您的设计就很好。文档数据库的概念是它消除了大量连接。尝试将尽可能多的内容放入一个文档中。因为 MongoDB 文档具有结构,并且因为您可以在该结构内高效地查询,而且您不必像在 SQL 中那样规范化数据。
关于javascript - MongoDB中设计Shift schema的疑惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57598302/