【发布时间】:2012-11-26 08:18:27
【问题描述】:
我正在为我的公司开发一个 Intranet 应用程序。公司结构复杂,业务条线多、部门多、事业部多、单位多、集团多。我必须照顾所有这些事情。有些员工在部门级别工作,有些员工在单位级别工作,等等。现在的问题在于数据库设计。我对如何设计数据库感到困惑。一开始,我决定如下设计:
Employees: Username, Name, Title, OrgCode
Departments: OrgCode, Name
Divisions: OrgCode, Name
Units: OrgCode, Name
但是问题正如我之前所说,有些员工在部门下工作,那么如何在所有这些表之间建立关系。是否可以将员工表中的 OrgCode 作为 Departments、Divisions 和 Units 表中的 OrgCode 的外键?
你能推荐我如何设计它吗?
更新: @wizzardz 做了一个不错的数据库设计。我现在需要的是有一个适合这个数据库设计的数据示例 这是我在数据库中使用的一组数据: 让我们假设我们有 Employee 具有以下信息: 用户名:JohnA 姓名:约翰 职称:工程师 组织代码:AA
假设我们有部门 AA,我将如何将这些数据分配到数据库设计中?
【问题讨论】:
-
有几个部门?
-
将OrgCode存储在employees表中意味着每个员工一次只能属于一个部门;一些员工可能属于多个部门,而且您没有存储任何人员从一个部门转移到另一个部门的历史记录。
-
该员工只能在一个部门工作。但他可以从那个部门转到另一个部门。那么哪种设计更好呢?
标签: sql database-design