在mysql中记录自引用

时间:2013-09-05 00:45:33

标签: mysql

我在mySql中有一个自引用表,这是一个由经理和员工组成的表。

CREATE TABLE `employee` (
    `employee_id` BIGINT(10) NOT NULL AUTO_INCREMENT,
    `firstname` VARCHAR(50) NULL DEFAULT NULL,
    `lastname` VARCHAR(50) NULL DEFAULT NULL,
    `manager_id` BIGINT(20) NULL DEFAULT NULL,
    PRIMARY KEY (`employee_id`),
CONSTRAINT `FK_MANAGER` FOREIGN KEY (`manager_id`) REFERENCES `employee` (`employee_id`)
)

我想知道记录是否引用自己是否符合概念。我解释得更好:一些员工与某个经理有关系,所以例如员工3,5,7与经理1有关系,但我想创建一个列表来显示与经理1和经理1相关的所有记录。所以我试图让经理1与自己有关系,所以经理1指的是经理1.

我没有错误,但想知道这是否是实现这种关系的正确方法,或者我将来是否会遇到问题。

由于

1 个答案:

答案 0 :(得分:0)

在我看来,这不是最佳解决方案,因为:

  • 它限制您在管理层次结构中只有2个级别(仅限经理和员工)您不能拥有经理 - >领导者 - >员工
  • 您无法轻松打印员工树
  • 我在大公司里练习,唯一没有人的人就是CEO

我自己会使用此查询

SELECT * FROM employee WHERE employee_id=1
UNION
SELECT * FROM employee WHERE manager_id=1