Rails 如何最佳设计带顺序支持调整的数据库模型?

lyfi2003 · 2012年03月27日 · 最后由 lyfi2003 回复于 2012年03月27日 · 2637 次阅读

有如下需求:

一个项目 model, 例如叫 project 它会拥有很多资源, 我们叫 resource 然后,有以下要求,

  1. 资源是有顺序的
  2. 资源的顺序是可以调整的
  3. 资源随时可能从项目中移除

那么,如何设计数据库模型呢? 我个人有两个想法,但都不十分满意:

  1. 直接利用查询顺序,但调整的时候需要删除再添加,效率不高而且不优雅.
  2. 在 project 添加一个额外字段,记录顺序,但需要添加事务保持一致性,删除也较为麻烦,

不知各位有何高见?(数据库使用 mongodb)

可以用 acts as list 来维护增加的 position 字段。 如果要自己做也可以用 doubly linked list。 主要是看需求,CRUD 哪个操作多?列表数量有多少? 这些都影响采用哪种设计。

不过不要过早的优化,acts as list 挺好的。

#1 楼 @pongyo 多谢你的建议. 十分同意, 过早优化会出现问题

需要 登录 后方可回复, 如果你还没有账号请 注册新账号