需要对一个化验室信息系统数据库设计,因为新手,不太懂,求教大家:
需求如下:
一个样品,需经过多组检测,每组检测不同的项目;
不同种类的样品,部分组别检测的项目相同,部分组别检测的项目不相同;
目前设计方案两种如下:
方案一:
样品基本信息表 组别1检测 组别2检测 组别3检测 组别4检测
--样品名称 ---项目1 ---项目31 ---项目51 ...
--样品种类 ---项目2 ---项目32 ---项目52
--采样时间 ---项目3 ---项目33 ---项目53
--等等 ..... ...... ....
---项目30 ---项目50 --项目60
这种设计,每组的检测项目是最大化的,有些样品可能只检测其中7,8种项目。(样品基本信息表
和组别*检测,用一个样品编号相关联)
方案二(样品基本信息表相同):
样品类别1 样品类别2 样品类别3 样品类别4
---项目1 ---项目1 ---项目1
---项目2 ---项目2 ---项目2
---项目3 ---项目3 ---项目3
--- ... ...
--项目40
这种设计,不同的样品类别会造成很多检测项目是相同的,是否太过冗余了。
求教:相对来说哪种方案合适点,或者有更好的设计方案,便于存储查询和今后的扩展(比如多增
加一个检测项目)?
按照一个样品只属一个样品种类,一个种类的样品检测项目固定
样品表:
样品编码号 样品种类 采样时间
组表:
组编号 组名
项目:
项目编号 项目名
样品检测项目:
样品种类 项目编号
检测表:
样品编号 组号 项目编号 检测值
有些表只是用来方便管理,可以没有,检测表必须很长,因为检测表是为检测值设定的,所以行数等于样品数*检测组数*项目数。
选定你需要的列做索引,可以增加查询速度,但会增加开销。
如果是我,我会把检测表的样品编号该为检测编号,检测编号的值设为样品编号、组编号和项目编号的组合,比如样品编号是333,组编号4,项目编号为2,就是33342,可以把这一列当做索引,不会重复,还可以少了第二和第三列,但问题是别人不知道我坐标时是这样想的,就会造成查询困难,胡乱编号。