首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >数据库设计:实现worker->上级关系

问数据库设计:实现worker->上级关系
EN

Stack Overflow用户
提问于 2009-09-20 19:03:48
回答 6查看 347关注 0票数 0

我目前正在为一家酒店开发一个网站。我将要实现的一件事是工人->上级关系。在MySQL中执行此操作的最佳方法是什么?

我的意思是:厨师的上级是主厨,主厨的上级是值班经理,值班经理的上级是总经理。在employee表中,我可以将ID设为superior字段,但这样我只能获得一个上级/上级角色;更重要的是,我将无法检索经理在特定酒店管理的所有员工的列表。

我需要这方面的建议。

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2009-09-20 19:12:49

嗯,使用一个简单的邻接图(supervisor_id指向employees表),您当然可以做您想做的事情,但它的效率不会很高,也不会扩展到大量的人。

您可能需要实现一个nested set model。这使您可以非常容易地抓住向组织中某个任意人员报告的每个人。

如果您是早期开发人员,可以考虑使用Doctrine ORM系统,它为模型提供了嵌套集行为,因此您不需要实现自己的模型。

编辑: Richard Knop有一篇关于nested sets with php example code的文章,你可能会发现它比Celko的100%-sql示例更有帮助。

票数 1
EN

Stack Overflow用户

发布于 2009-09-20 19:10:29

您可以通过在您的选项卡上执行以下操作来获取经理管理的所有员工的列表:

代码语言:javascript
复制
SELECT * FROM employees WHERE `superior`='id goes here'

但是,如果你想创建多个上级,只需创建一个新表,其中列如下所示

代码语言:javascript
复制
superior, person

或者,如果您想要像树一样显示它,只需在查询循环中执行

票数 0
EN

Stack Overflow用户

发布于 2009-09-20 19:15:17

也许你最好创建一个带有角色/功能的附加表或列表,并为每个功能分配级别,因此4级将是3级等的直接老板。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1451741

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档