【发布时间】:2017-08-25 23:03:19
【问题描述】:
我有一个旧的数据库设计,我认为我可以简化并使其更加规范化。我希望对此有一些想法。以下是数据库的“规则”:
-
该组织由三个层次结构组成:
一个。局 - 是最高级别
湾。办公室 - 每个局可以有多个办公室
C。部门 - 每个办公室可以有多个部门 -
我们有在所有三个层级工作的员工。例如:
一个。我们有局级人员。他们不属于办公室或部门。监督所有办公室,但不属于他们
湾。我们有办公室级别的员工,他们不属于特定部门,但监督所有部门
C。属于一个部门的部门级别的人 -
我们也有项目。一个项目可以有不同的层次:
一个。局级项目
湾。跨越多个办公室的项目
C。一个部门的项目 每个项目都需要由至少一名员工管理,具有特定角色(项目经理)的员工表将由具有其他角色甚至多个角色的个人组成。
目前,我有以下架构(为简洁起见,已被删减):
使用这个架构,我发现了以下问题:
在此模型中,所有项目都与一个部门相关联。但是,实际上,并非所有项目都直接归属于一个部门。有些可能在办公室或局级。其他人可能跨多个办公室或局(但不跨多个局和办公室)。因此,我通过在每个组织层级中提供额外的选项来解决这个问题。例如。在分区表中,我可以选择 Office Wide 或 Bureau Wide。或者我可能有一个像办公室一/办公室二这样的选项。
我看到的另一个问题:每个角色表都有许多重复值。例如,如果我们查看 DivisionRole 表。几乎所有部门都有相同的作用。因此,我多次列出了 DivisionManager、divisonPM、divisionLead(每个部门一次)。有时,一个部门可能有一个独特的位置,但这很少见。 BureauRole 和 OfficeRole 表也是如此
因此,我正在寻找有关如何更好地规范化此数据库并解决上述情况的建议。有人有建议吗?
【问题讨论】:
-
it’s abridged for brevity... 那么实际架构有多大? -
大约 25 张桌子。大多数表是关于 ProjectsTable 的一对多的。例如,有一个名为 ProjectType 的表。每个项目都可以属于特定类型。
标签: database database-design relational-database normalization database-normalization