我是数据库设计的新手,如果我以错误的方式处理问题,我很好奇。
因此,我创建了一个简单的应用程序,需要持久化Employee实体。某些员工可能是管理员,其中包含在其下运行的员工列表。在数据库设计中创建此场景的最佳实践是什么?
目前我有两张桌子。一个名为employee的表,其中包含ID,名称等的列。我有一个定义经理 - 员工关系的第二个表。该表包含一列MANAGER_ID和一列EMPLOYEE_ID。为了弄清楚经理所拥有的员工,我必须加入这个关系表,并获取该特定manager_id的每个唯一employee_id。这是一个很好的方法吗?
如果没有,你能解释它为什么不好,以及更好设计的一个例子吗?
答案 0 :(得分:2)
假设您正在谈论关系数据库,这似乎是完全合理的。雇主/雇员关系数据库示例非常常见,互联网搜索不需要太长时间来验证您的设计。
如果你是数据库设计的新手,你可能会做的比让自己成为一本关于这个主题的体面书更糟糕,例如"关系数据库设计手册"由Fleming / von Halle提供,这是一个非常古老但基础知识的良好基础,这是令人惊讶的大量程序员不知道的。这只是一本关于这个主题的好书 - 还有很多其他的。
答案 1 :(得分:1)
另一种方法是使用自联接,即。 employee表中的每一行都有一个额外的列manager_id。然后在查询时执行自联接
在此处查看示例(针对您的具体情况):
https://blog.udemy.com/sql-self-join/
不确定一种方法与另一种方法相比是否有任何好处。