2017-02-14 67 views
0

这是我第一次在这里发布,但绝对不是我第一次在这个网站上找到答案!IT资产跟踪数据库 - 规范化问题

我正在为我们不断增长的零售链创建IT资产跟踪数据库。我们已经评估了几种不同的服务,但它们都不能满足我们所有的需求 - 所以我们要去定制路线。最终,我们计划使用SQL数据库和Web前端,但现在,Access是最快捷地启动和运行的一种方式。

我们正在追踪不仅是在我们的商店资产,但正在使用的员工也资产。这些是我目前(即涉及到这个问题)的表:

  • 资产(型号,序列号等)
  • 位置(店铺列表)
  • 员工(所有员工的列表)

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

如果我希望能够将资产分配到任何一个商店或雇员,这将是对去这样做的最佳方式?我应该创建一个StoreAssignments表和一个EmployeeAssignments表吗?如果我这样做,当试图运行所有资产的报告/查询时是否会变得更加复杂?

我应该建立某种形式的实体表,其中每个位置和员工都有ENTITYID。那么我可以将资产分配给实体,而不是直接分配给员工或商店?是这样的正确的方式 - 或完全相反的方向吗?

我已经玩了很多年的Access和SQL数据库,但从来没有太高级。我绝对不是DBA!

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

+1

您正在增长的零售连锁店是否正在使用MS Access来使用一位经验不足的开发人员重新发明轮子?为什么?这是因为他们不重视资产追踪,而且这是一个非常低的优先级?然后它并不重要,你的设计是什么,呃: -/ – TessellatingHeckler

+0

我想我会使用分配表与3个领域 - 资产,店铺分配和员工分配。那么你可以使用这个外部连接到其他3个表(资产,商店,雇员)来获得所有必要的信息。 –

+0

@DonGeorge这听起来不错,但为什么不分配类型,人员或商店是有效的条目。 – Fionnuala

回答

0

那么有多种方式来解决问题,但一个简单的可能就是要创造一个您将分配一个新表的实体。

enter image description here

分配表是你添加的每一个分配的条目,不管它是什么类型。

So Asset Id是资产表中的外键。 分配类型是部分原因,以确定它是否被分配到一个地点或员工(这可能是简单的文本或数字) 分配ID会从任何职位或员工

如果你只会有外键一次将一个资产分配到一个地方,那么分配表可以将资产ID作为关键字。

还有其他的方法,这可能是好还是坏,但没有一点使它比你需要和在工程更复杂。一个好的解决方案只是一个可以工作并满足您需求的解决方

+0

这很有意义。你如何看待@DonGeorge上面所说的? “如果我可以避免这种情况,我宁愿在一个字段中没有两种不同类型的数据,所以即使类型字段区分它们,我也不会将商店ID和员工ID都放在同一字段中。”在一天结束时,我几乎是唯一访问数据库的人。就像你说的那样,只要它有效,那才是真正重要的。我只是尽我所能学习并遵循最佳做法。 – bps

+1

要确定什么是最适合您的方法,为什么不考虑提取数据的问题以及哪些问题最适合您。这也取决于你在何处,何时以及如何加入数据。你可以在数据库端或应用端做更多的工作。每个方面都有优点和缺点。在应用程序端执行它的优点是,如果稍后更改数据库,则可能意味着更新它的工作量会减少(当然取决于您的数据库)。 –

+1

这非常有意义。在进行更多有关构造数据的工作之前,我将更多地关注如何计划提取数据。感谢您的建议! – bps