请教一个数据库中表的设计问题

时间:2021-07-10 10:17:58
我现在在做毕业设计,写的是化验室检验记录的管理系统,其中有一个模块是录入质量标准。对于不同的原料,其项目名称和质量标准格式大不相同。比如一个检验项目在有的原料中叫酸值,在有的原料中叫PH值,但都质量标准的格式都一样,都要求PH值在某个范围内;也有的项目在不同的原料中虽然同叫酸值,但质量标准的格式却不一样:有的要求用碱滴定的体积数不能超过多少,有的却要求PH值在某个范围内。对于两个不同的原料,它们的检验项目也绝对不一样的。如果非要把所有的原料质量标准都并入一个表,那这个表就要有很多的字段,而且对于某个具体的记录(原辅料)会有很多字段为空值。如果一种原料用一张表的话太浪费了,因为一张表只有一条记录。不知道这个问题用数据库实现可行不可行?如果可行,该怎么设计,如果不可行,有没有什么别的方法可以代替
举个例子:
品名 硫酸庆大霉素 硫酸阿托品 安乃近
PH值 不做 不做 应5.0-7.0
酸度 应4.0-6.0 每1ml硫酸阿托品消耗的碱不得过12ml 不做
硫酸盐 不做 应<=0.005% 应<=0.002%
氯化物 不做 应<=0.001% 不做
红外鉴别 不做 应与红外图谱集XXX号图谱一致 不做

12 个解决方案

#1


看看能不能这样:
品名               检验项目名              质量标准
硫酸庆大霉素       酸度                    应4.0-6.0
硫酸阿托品         酸度                    每1ml硫酸阿托品消耗的碱不得过12ml
硫酸阿托品         硫酸盐                  应<=0.005%
硫酸阿托品         氯化物                  应<=0.001%
硫酸阿托品         红外鉴别                应与红外图谱集XXX号图谱一致
安乃近             PH值                    应5.0-7.0
安乃近             硫酸盐                  应<=0.002%


#2


表1:
检验项目编号   检验项目名称     
1                酸度                      
2                硫酸盐                    
3                氯化物                    
4                红外鉴别
5                PH值

表2:
品名               检验项目名              质量标准                     维护人员 维护日期
硫酸庆大霉素       1                       应4.0-6.0
硫酸阿托品         1                       每1ml硫酸阿托品消耗的碱不得过12ml
硫酸阿托品         2                       应<=0.005%
硫酸阿托品         3                       应<=0.001%
硫酸阿托品         4                       应与红外图谱集XXX号图谱一致
安乃近             5                       应5.0-7.0
安乃近             2                       应<=0.002%

这样子分类子查询就速度快很多,英文总比中文检索速度来得快,如果可以最好表2也加上一个类别名称,因为如果类别的名称会前后改动,那起码我知道以前类别1叫酸度,后来更名叫酸性度,这样你去查询旧的纪录也可以知道原来叫酸度,后来叫酸性度,原来纪录保留旧的称呼,然后最大的好处就是如果你要秀报表的时候,要秀检验项目名的名称给用户看得时候,不用关联表1来秀处中文描述

#3


谢谢楼上两位的解答!我又有新的问题了:
质量标准这个字段数据类型太杂,有“应<=0.005%”;有“应4.0-6.0”;有“应与红外图谱集XXX号图谱一致”……,还有很多别的类型的,而且硫酸庆大霉素和硫酸阿托品都有个项目叫酸度,却是不同的表述形式,所以这个字段只能设成字符类的,但如果统统都设成字符类的话,不利于以后在录入检验记录时自动检测录入值是否在质量范围之内(不好量化)

#4


这个可以做到啊,你把质量标准 用一个张记录下来就行了啊!

id   质量标准
1     应<=0.005%
2     应4.0-6.0
3     应与红外图谱集XXX号图谱一致
4     应<=0.005%
5     应5.0-7.0
6     每1ml硫酸阿托品消耗的碱不得过12ml
....

那么你上面的表就有项目id 这个字段,

如:


品名               检验项目名              质量标准id
硫酸庆大霉素       酸度                    1
硫酸阿托品         酸度                    6
硫酸阿托品         硫酸盐                  4
硫酸阿托品         氯化物                  7
硫酸阿托品         红外鉴别                3
安乃近             PH值                    2
安乃近             硫酸盐                  5


查询时关联下这个表就行了!

#5


楼主要的结果综合 MorningTea 和 上面的就行了!

检验项目表:
检验项目编号   检验项目名称     
1                酸度                      
2                硫酸盐                    
3                氯化物                    
4                红外鉴别
5                PH值
....
质量标准表:
质量标准id    质量标准
1            应<=0.005%
2            应4.0-6.0
3            应与红外图谱集XXX号图谱一致
4            应<=0.005%
5            应5.0-7.0
6            每1ml硫酸阿托品消耗的碱不得过12ml


你的检验记录:

品名               检验项目编号            质量标准                     
硫酸庆大霉素       1                       1
硫酸阿托品         1                       6
硫酸阿托品         2                       4
硫酸阿托品         3                       7
硫酸阿托品         4                       3
安乃近             5                       2
安乃近             2                       5

查询:

  select a.品名,b.检验项目名称,c.质量标准 from 你的检验记录 a,检验项目表 b,质量标准表 c 

where a.检验项目编号=b.检验项目编号 and a.质量标准id=c.质量标准id

#6


谢谢各位,我想问如何让质量标准这个字段的内容量化(因为这个字段是字符串,而且在我的检验记录这个表里,检验结果这个字段也应该是字符串型的),变成一个可比较的量从而让电脑有自动判断的能力

品名           项目         质量标准           检验数据        检验结果
硫酸庆大霉素   鉴别1        应呈正反应         呈正反应        符合规定
硫酸庆大霉素   鉴别2        应不深于黄色3号    黄色2号         符合规定
硫酸庆大霉素   硫酸盐       应混浊             澄清            不符合规定
硫酸庆大霉素   酸度         应4.0-6.0          4.2             符合规定
硫酸阿托品     硫酸盐       应<=0.005%         <0.005%         符合规定
硫酸阿托品     氯化物       应<=0.001%         0.001%          符合规定
安乃近         PH值         应5.0-7.0          7.2             不符合规定
安乃近         硫酸盐       应<=0.002%         0.001%          符合规定

#7


好,问题提得不错,希望各位高手继续指点指点。

#8


有没有人知道

#9


各位帮帮忙

#10


看看能不能这样:
品名            检验项目名    质量标准    检验最小数值、检验最大数值
硫酸庆大霉素    酸度          应4.0-6.0       4.0        6.0
硫酸阿托品      硫酸盐        应<=0.005%      0.0        0.00005

#11


判断检验数据是否在检验的数据范围内,在则符合规定。

#12


如果是象下面这样的呢,看来只有字符串扫描了
品名           项目         质量标准           检验数据        检验结果
硫酸庆大霉素   鉴别1        应呈正反应         呈正反应        符合规定
硫酸庆大霉素   鉴别2        应不深于黄色3号    黄色2号         符合规定
硫酸庆大霉素   硫酸盐       应混浊             澄清            不符合规定

#1


看看能不能这样:
品名               检验项目名              质量标准
硫酸庆大霉素       酸度                    应4.0-6.0
硫酸阿托品         酸度                    每1ml硫酸阿托品消耗的碱不得过12ml
硫酸阿托品         硫酸盐                  应<=0.005%
硫酸阿托品         氯化物                  应<=0.001%
硫酸阿托品         红外鉴别                应与红外图谱集XXX号图谱一致
安乃近             PH值                    应5.0-7.0
安乃近             硫酸盐                  应<=0.002%


#2


表1:
检验项目编号   检验项目名称     
1                酸度                      
2                硫酸盐                    
3                氯化物                    
4                红外鉴别
5                PH值

表2:
品名               检验项目名              质量标准                     维护人员 维护日期
硫酸庆大霉素       1                       应4.0-6.0
硫酸阿托品         1                       每1ml硫酸阿托品消耗的碱不得过12ml
硫酸阿托品         2                       应<=0.005%
硫酸阿托品         3                       应<=0.001%
硫酸阿托品         4                       应与红外图谱集XXX号图谱一致
安乃近             5                       应5.0-7.0
安乃近             2                       应<=0.002%

这样子分类子查询就速度快很多,英文总比中文检索速度来得快,如果可以最好表2也加上一个类别名称,因为如果类别的名称会前后改动,那起码我知道以前类别1叫酸度,后来更名叫酸性度,这样你去查询旧的纪录也可以知道原来叫酸度,后来叫酸性度,原来纪录保留旧的称呼,然后最大的好处就是如果你要秀报表的时候,要秀检验项目名的名称给用户看得时候,不用关联表1来秀处中文描述

#3


谢谢楼上两位的解答!我又有新的问题了:
质量标准这个字段数据类型太杂,有“应<=0.005%”;有“应4.0-6.0”;有“应与红外图谱集XXX号图谱一致”……,还有很多别的类型的,而且硫酸庆大霉素和硫酸阿托品都有个项目叫酸度,却是不同的表述形式,所以这个字段只能设成字符类的,但如果统统都设成字符类的话,不利于以后在录入检验记录时自动检测录入值是否在质量范围之内(不好量化)

#4


这个可以做到啊,你把质量标准 用一个张记录下来就行了啊!

id   质量标准
1     应<=0.005%
2     应4.0-6.0
3     应与红外图谱集XXX号图谱一致
4     应<=0.005%
5     应5.0-7.0
6     每1ml硫酸阿托品消耗的碱不得过12ml
....

那么你上面的表就有项目id 这个字段,

如:


品名               检验项目名              质量标准id
硫酸庆大霉素       酸度                    1
硫酸阿托品         酸度                    6
硫酸阿托品         硫酸盐                  4
硫酸阿托品         氯化物                  7
硫酸阿托品         红外鉴别                3
安乃近             PH值                    2
安乃近             硫酸盐                  5


查询时关联下这个表就行了!

#5


楼主要的结果综合 MorningTea 和 上面的就行了!

检验项目表:
检验项目编号   检验项目名称     
1                酸度                      
2                硫酸盐                    
3                氯化物                    
4                红外鉴别
5                PH值
....
质量标准表:
质量标准id    质量标准
1            应<=0.005%
2            应4.0-6.0
3            应与红外图谱集XXX号图谱一致
4            应<=0.005%
5            应5.0-7.0
6            每1ml硫酸阿托品消耗的碱不得过12ml


你的检验记录:

品名               检验项目编号            质量标准                     
硫酸庆大霉素       1                       1
硫酸阿托品         1                       6
硫酸阿托品         2                       4
硫酸阿托品         3                       7
硫酸阿托品         4                       3
安乃近             5                       2
安乃近             2                       5

查询:

  select a.品名,b.检验项目名称,c.质量标准 from 你的检验记录 a,检验项目表 b,质量标准表 c 

where a.检验项目编号=b.检验项目编号 and a.质量标准id=c.质量标准id

#6


谢谢各位,我想问如何让质量标准这个字段的内容量化(因为这个字段是字符串,而且在我的检验记录这个表里,检验结果这个字段也应该是字符串型的),变成一个可比较的量从而让电脑有自动判断的能力

品名           项目         质量标准           检验数据        检验结果
硫酸庆大霉素   鉴别1        应呈正反应         呈正反应        符合规定
硫酸庆大霉素   鉴别2        应不深于黄色3号    黄色2号         符合规定
硫酸庆大霉素   硫酸盐       应混浊             澄清            不符合规定
硫酸庆大霉素   酸度         应4.0-6.0          4.2             符合规定
硫酸阿托品     硫酸盐       应<=0.005%         <0.005%         符合规定
硫酸阿托品     氯化物       应<=0.001%         0.001%          符合规定
安乃近         PH值         应5.0-7.0          7.2             不符合规定
安乃近         硫酸盐       应<=0.002%         0.001%          符合规定

#7


好,问题提得不错,希望各位高手继续指点指点。

#8


有没有人知道

#9


各位帮帮忙

#10


看看能不能这样:
品名            检验项目名    质量标准    检验最小数值、检验最大数值
硫酸庆大霉素    酸度          应4.0-6.0       4.0        6.0
硫酸阿托品      硫酸盐        应<=0.005%      0.0        0.00005

#11


判断检验数据是否在检验的数据范围内,在则符合规定。

#12


如果是象下面这样的呢,看来只有字符串扫描了
品名           项目         质量标准           检验数据        检验结果
硫酸庆大霉素   鉴别1        应呈正反应         呈正反应        符合规定
硫酸庆大霉素   鉴别2        应不深于黄色3号    黄色2号         符合规定
硫酸庆大霉素   硫酸盐       应混浊             澄清            不符合规定