数据库设计服务修复跟踪

时间:2013-08-06 12:09:00

标签: database-design

关于为现有客户设计与维修机器相关的数据模型,这是一个最佳实践和优化问题。

场景: 一名员工或其中两名访问 客户以在一台或多台计算机上执行维修(或其他类型)服务。我还想指定将汽车开到客户手中的员工。 我还想了解哪个员工在哪台机器上工作。 目前,该公司使用一张服务卡来捕获每次访问的许多机器的维修服务。

我原以为每台机器每次访问都必须有自己独立的服务卡。这意味着访问可以包括许多服务,并且每个服务涉及一个且仅一个机器。每项服务可由一名或多名员工执行。但为了捕捉谁开车去参观:每次访问都是由一个或多个员工完成的。

我担心访问 - 员工 - 有关员工数据的服务之间存在冗余。

您的建议非常感谢。我相信有更多的方法可以做到这一点。

由于

2 个答案:

答案 0 :(得分:1)

您需要区分记录数据和存储数据。

从必须填写服务卡的人的角度来看,每次访问一张服务卡更有效。

关系数据库需要以normalized形式存储该数据。

在数据库方面,服务卡可以(应该)高度非规范化。

这是我对数据库架构的尝试。

Client
------
Client ID
Client Name
...

Employee
--------
Employee ID
Employee Name
...

Machine
-------
Machine ID
Machine Name
...

Service
-------
Service ID
Service Name
...

Client Visit
------------
Client Visit ID
Client ID
Visit Date or Visit Time stamp
...

Client Visit Employee
---------------------
Client Visit Employee ID
Client Visit ID
Employee ID
Driver Boolean

Client Visit Service
--------------------
Client Visit Service ID
Client Visit ID
Employee ID
Machine ID
Service ID

答案 1 :(得分:0)

听起来像你可能有以下表格

Employee
- eid (pk)
- . . .

Machine
- mid (pk)
- . . .

ServiceCall
- sid (pk)
- driver_eid(fk to Employee.eid)
- . . .

ServiceCall_Machine_Employee_Map
- sid (fk to ServiceCall.sid)
- mid (fk to Machine.mid)
- eid (fk to Employee.eid)
- . . .
相关问题