数据库 请教简单 ‘请求批准’ 应用数据库的设计

jwu · 2013年11月14日 · 最后由 everett 回复于 2013年11月14日 · 2749 次阅读

我现在在通过自己从头写一个简单的‘请求批准’ - Request For Approval webapp 来练手 Rails,在数据库设计这块琢磨不出最佳方案特来诚求大家的指点。

app 的业务逻辑不复杂:

  • 每位员工都有他/她的直属上级
  • 一个上级有多个下级,每个下级只有一个直线上级
  • 每位员工都能够发起请求,由他/她的主管对其进行批准或拒绝

我草拟了两套方案:

  • 方案一将员工分成了 User 和 Superuser

    • 这个方案比较直接,但貌似有重叠情况(A 君即是 Superuer 管理数位 User,但同时也是 User,有一位他的上级)
  • 方案二将员工都视为 User,但有不同的 role

    • 避免了重叠,但没有体现出 superuser has_many users, user belongs_to superuser 的关系

rails 是可以 has_many belongs_to 自己的 只要

belongs_to :superior , class_name: :User, foreign_key: 'superior_id'
has_many   :users, foreign_key: 'superior_id'

记得把你的 superior 改成 superior_id

这个感觉就是需要一个树就完了,很多插件可以做的,比如这个:https://github.com/stefankroes/ancestry

#1 楼 @ZombieCoder 谢谢 Zombie,这我还真不知道,我去找点资料学习下 :D

#2 楼 @zlx_star 谢谢 zlx,我也去看看

应该把审批的业务,拉出来,放进 workflow engine 处理 比如 https://github.com/geekq/workflow

position 做成树,做权限和隶属。给 user 分配一个或若干个 position。

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