我目前正在为一家酒店开发一个网站。我将要实现的一件事是工人->上级关系。在MySQL中执行此操作的最佳方法是什么?
我的意思是:厨师的上级是主厨,主厨的上级是值班经理,值班经理的上级是总经理。在employee表中,我可以将ID设为superior字段,但这样我只能获得一个上级/上级角色;更重要的是,我将无法检索经理在特定酒店管理的所有员工的列表。
我需要这方面的建议。
发布于 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示例更有帮助。
发布于 2009-09-20 19:10:29
您可以通过在您的选项卡上执行以下操作来获取经理管理的所有员工的列表:
SELECT * FROM employees WHERE `superior`='id goes here'但是,如果你想创建多个上级,只需创建一个新表,其中列如下所示
superior, person或者,如果您想要像树一样显示它,只需在查询循环中执行
发布于 2009-09-20 19:15:17
也许你最好创建一个带有角色/功能的附加表或列表,并为每个功能分配级别,因此4级将是3级等的直接老板。
https://stackoverflow.com/questions/1451741
复制相似问题