日期:2014-05-17  浏览次数:20549 次

关于一个数据表设计的问题
场景

现在有操作员A , B ,C 等 操作几台机器 T1, T2, T3
机器每次只能一个操作员操作. 每次操作的操作员是临时指定的
操作员 一次只能操作一台机器, 
操作员可以操作机器组中的任何一台机器
机器 在运行过程中会记录下一些数据.

现在我需要 查询一下的数据

报表1.  机器T1(或者T2,T3)在某一个时间范围内产生的数据
报表2.  操作员A(或者B,或者C) 曾经操作的机器 在操作员A(或者B,或者C)操作期间产生的数据
报表3.  操作员A(或者B,或者C) 操作 机器T1(或者T2,T3) 期间产生的数据
报表4.  操作员A(或者B,或者C) 在某一个时间范围内 曾经操作的机器 在操作员A(或者B,或者C)操作期间产生的数据

请问 怎样设计表?

------解决方案--------------------
未结贴15……
而且问的好像都是最简单的东西……

一、人员表
——基本的人员信息

二、机器数据表
——字段:ID,机器名,机器编号,开始时间,结束时间,操作人员,操作人员工号,(其他操作数据)
——你的查询问题1234不就是最基本的查询么

三、就目前这些信息来看,感觉重点不在于“查询功能”

四、暂时没想透的细节:
1、对于单个机器,如何获取操作员的信息并限制只能一个人使用?
——登录/注销模式似乎不适用,用户不一定会主动注销掉,这样就得不到结束时间。(不要结束时间的话无法限制某个人同一时间只能操作一台机器)
——也许可以通过实际工作流程来解决,比如使用扫描枪定义动作:先做一次注销动作(不管有没有人登录),然后再登录。刷卡式的也可以。
2、对于单个操作员,如何限制某个操作员一个时间段内只能使用1台机器?
——如果操作员登录机器T1后,数据库中会有开始时间
——实际工作中操作员已经完成工作,离开机器T1,但是忘记注销掉。数据库没有结束时间,就一直判断操作员还在操作。
——或者结合一下实际工作,在程序方面做一些隐性的注销动作,比如:在机器T2上刷卡时,判断一下上一次操作是否完成,没完成的自动给他完成掉;或者下班刷卡时,将此人的工作全部结束掉。这个要看实际工作情况来做了,而且还不一定可以达到理想要求。
------解决方案--------------------
一、人员表
 ——基本的人员信息

 二、机器数据表 
      字段:ID,机器名,机器编号,开始时间,结束时间,操作人员,操作人员工号
 三、操作表
       
     字段:id,机器数据表ID,操作内容
------解决方案--------------------
帮顶,别沉
------解决方案--------------------
引用:
补充说明一下  上文中"机器产生的数据" 在数据库中 不是一次操作一个记录, 而是一次操作 会产生很多条数据
Quote: 引用:

一、人员表
 ——基本的人员信息

 二、机器数据表 
      字段:ID,机器名,机器编号,开始时间,结束时间,操作人员,操作人员工号
 三、操作表
       
     字段:id,机器数据表ID,操作内容


所以我单独设计了一张专门存你记录的表。
我的思路是:一个操作人员操作某一台机器产生n多条记录。
不知道lz会不会设计ER图,你可以先设计一下,然后见表的事情水到渠成
------解决方案--------------------
引用:
1. 不是查询谁操作过哪些机器,而是查询操作这些机器过程中 机器产生的数据
2.对于单个机器,如何获取操作员的信息并限制只能一个人使用?
   这个是在操作机器前 进行打卡之类的操作实现.如果本台机器的上一个操作员没有打卡结束, 那么自动帮他结束. 如果在操作这台机器之前,在其他机器上有操作并且没有打卡结束,那么自动帮他结束. (因为人是不能分身, 在操作机器T1的时候, 不可能还去操作机器T2的).(操作前不打卡,那非程序能控制的了 ,不在考虑范围内)
3.对于单个操作员,如何限制某个操作员一个时间段内只能使用1台机器?  
同上

Quote: 引用:

未结贴15……
而且问的好像都是最简单的东西……

一、人员表
——基本的人员信息

二、机器数据表
——字段:ID,机器名,机器编号,开始时间,结束时间,操作人员,操作人员工号,(其他操作数据)
——你的查询问题1234不就是最基本的查询么

三、就目前这些信息来看,感觉重点不在于“查询功能”

四、暂时没想透的细节:
1、对于单个机器,如何获取操作员的信息并限制只能一个人使用?
——登录/注销模式似乎不适用,用户不一定会主动注销掉,这样就得不到结束时间。(不要结束时间的话无法限制某个人同一时间只能操作一台机器)
——也许可以通过实际工作流程来解决,比如使用扫描枪定义动作:先做一次注销动作(不管有没有人登录),然后再登录。刷卡式的也可以。