0

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

场景:一名或其中 2 名员工拜访客户,在一台或多台机器上进行维修(或其他类型)服务。我还想指定开车给客户的员工。我还想捕捉哪个员工在哪台机器上工作。目前,该公司使用一张服务卡来记录每次访问的多台机器的维修服务。

我在想每台机器每次访问都必须有自己单独的服务卡。这意味着一次访问可以包括许多服务,并且每个服务都与一台且仅一台机器相关。每项服务可由一名或多名员工执行。但为了捕捉谁开着车去拜访:每次拜访都是由 1 名或多名员工进行的。

恐怕在访问 - 员工 - 服务之间存在关于员工数据的冗余。

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

谢谢

4

2 回答 2

1

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

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

关系数据库需要以规范化的形式存储该数据。

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

这是我对数据库模式的尝试。

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
于 2013-08-06T13:02:36.670 回答
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)
- . . .
于 2013-08-06T13:01:49.357 回答