IT资产跟踪数据库 - 规范化问题

时间:2017-02-14 18:54:15

标签: ms-access database-normalization

这是我第一次在这里发帖,但绝对不是我第一次在这个网站上找到答案!

我正在为不断增长的零售连锁店创建一个IT资产跟踪数据库。我们已经评估了几种不同的服务,但它们都没有完全满足我们的所有需求 - 所以我们将采用自定义路线。最终,我们计划使用SQL数据库和Web前端,但是目前,Access是最快速的方式来启动和运行。

我们不仅要追踪商店中的资产,还要追踪员工使用的资产。这些是我目前的表(与此问题有关):

  • 资产(型号,序列号等)
  • 地点(商店列表)
  • 员工(所有员工名单)

在我最初的数据库设计中,我们只是跟踪商店资产。我有我的Assets表和我的Stores表,以及一个包含两者外键的AssetAssignment表。

如果我希望能够将资产分配给商店或员工,那么最好的方法是什么?我应该创建StoreAssignments表和EmployeeAssignments表吗?如果我这样做,那么在尝试运行所有资产的报告/查询时会不会更复杂?

我应该创建某种实体表,其中每个位置和员工都有一个EntityID。然后,我可以将资产分配给实体,而不是直接分配给员工或商店?这样的事情是正确的方式 - 还是完全相反的方向?

我多年来一直使用Access和SQL数据库,但从来没有太高级。我绝对不是DBA!

您可以提供任何建议,我们将不胜感激。我相信我会有更多问题需要遵循;)

1 个答案:

答案 0 :(得分:0)

有很多种方法可以解决这个问题,但是一个简单的方法可能就是创建一个新的Table实体来放置分配。

enter image description here

分配表是您为每个分配添加条目的地方,无论它是什么类型。

所以Asset Id是Asset表中的外键。 分配类型是识别是否分配给位置或员工的原因(可以是简单文本或数字) 然后,分配ID是位置或员工

中的外键

如果您一次只有一个资产分配到一个地方,那么分配表可以将资产ID作为密钥。

还有其他方法,可能会更好或更糟,但没有必要使它比你需要和更多的工程更复杂。一个好的解决方案就是能够满足您需求的解决方案。