规范化产品设计器数据库

时间:2016-08-25 16:34:43

标签: database database-design relational-database

我希望创建一个用于跟踪目的的数据库。出于这个问题的目的,我已经抽象了一点,并将其转换为产品设计跟踪数据库。 我试图尽可能地使其标准化和高效。 基本上我希望能够跟踪员工以及他们参与的设计。我想要运行的查询并不是特别复杂。我希望能够查询有多少员工参与特定模型的设计,员工设计的模型和产品,设计产品的员工数量等等。产品将每年或每半年重新设计。

我担心的是我如何管理模特和员工之间的多对多关系。在提供的示例中,我在Model和Employee Table之间有一个Design表。这基本上是所有Employees设计师的转储,它们解决了多对多关系(我理解这有点不好),并使查询设计相对简单。我还假设我可以通过Emp_ID或Model_ID对其进行索引,以提高效率。

但是我担心这张桌子会随着时间的推移变得有点笨拙。在目前的角色中,我可以使这个数据库非常低效,并且可能不会注意到性能的任何降低。但是,我希望能够使这个相对可扩展,因为我想让这个易于管理(无论我管理它还是别人接管),我希望随着时间的推移添加功能(CRM-像功能一样)。

我以为我可以为每个员工创建一个表,并通过将它们放在一个单独的empID_design表中来跟踪设计项目,但这看起来也非常笨拙。基本上我考虑如何做到这一点的所有其他方式最终创建了大量的表而不是插入一行。

另一件事是我希望能够跟踪项目经理。在目前的形式中,我认为在Design表中跟踪它是有道理的。我不认为项目经理会改变设计中期,但是如果他们这样做的话,是否有一种优雅的方式来跟踪它?

我们非常感谢您提供的任何帮助或建议。我对数据库设计和ERD设计有点生疏,所以如果你注意到一些没有意义的东西,那么我很可能犯了一个错误,而不是我想到的花哨的细微设计。

基本了解每个表可能代表的内容:

公司:Black and Decker

产品:旋转​​工具

型号:D-5230

设计者:George Santos,Kevin Smith,John Rodes

项目经理:Kevin Smith

提前谢谢!

ERD图:http://i.stack.imgur.com/flo4l.png

1 个答案:

答案 0 :(得分:1)

听起来像模型和员工之间的交集表应该是一个角色表,其中每一行都有:

  • 员工ID
  • 型号ID
  • 角色ID:设计师,项目经理,首席设计师等

通过这种方式,员工甚至可以在项目中拥有多个角色。