【发布时间】:2014-08-07 20:49:35
【问题描述】:
我正在为工作创建一个 MySQL 员工数据库,我希望它存储员工的主管。
假设我有一个名为“employee”的表,其中包含“id”、“first_name”、“last_name”和“supv_id”字段,其中“id”是主键,“supv_id”是指外键和员工身份证。
目前,我将“supv_id”作为指向单独表“主管”的外键。该表仅由指向员工表的“id”和“empl_id”组成。但是,如果有一种方法可以简单地将 'employee' 中的 'supv_id' 指向 'employee.id',这将完全不需要我的 'supervisor' 表。这是一个例子:
+----+--------+-----------+---------+
| id | f_name | l_name | supv_id |
+----+--------+-----------+---------+
| 1 | Han | Solo | NULL | //Or 0?
| 2 | Luke | Skywalker | 1 |
+----+--------+-----------+---------+
简而言之,我希望 'suppv_id' 指向另一位员工。这有意义吗?我该怎么做呢?
谢谢!
编辑:固定表
【问题讨论】:
-
外键可以引用mysql中任何数据库(或其他dbs中的schema)中任何用户表(包括自身,包括复合键)中的任何唯一键或主键
-
NULL是正确的值,如果没有匹配。如果您尝试插入零 (0),则结果将违反外键,因为没有值为0的 id。 -
根据答案,这是描述关系数据库中层次结构的最简单解决方案,但是查询任意级别的节点变得困难。您可能想看看其他一些数据模型,并考虑在提交此模型之前您将如何访问数据。
-
@symcbean 你有点过头了!这一切对我来说还是很新鲜的。目前我正在研究模型和设计,最终我还将创建一个便于查询的界面。它仍处于早期阶段,因此如果您有任何建议,我愿意接受。谢谢!
-
@VMai 感谢您的确认 :)
标签: mysql database relational-database