讨论:对于两个都有上万行的两个表,两个表中存在关联,你是建立视图还是让数据冗余来显示?

时间:2021-10-11 05:35:20
比如:MateiralInfo表是个材料基本信息表,有下列基本字段
OID(主键)、MaterialName(物资名称)、Spec(规格型号)、Unit(计量单位)、Texture(材质)

我有另外一个表MaterialPlan,是个材料申请(领用材料时申请)的表,表中就肯定要涉及到材料的基本信息。下面就有两种解决方案
第一:把物资的主键(及:OID)取到MaterialPlan表中,在数据显示时就联合MateiralInfo表显示物资的信息;
第二:把物资的基本信息(及:OID、MaterialName、Spec、Unit、Texture)都取到MaterialPlan表中,在显示时就直接MaterialPlan表中读取数据。当然这样就存在三个问题,
  1)、材料申请时添加数据相对较多;
  2)、数据冗余比较大
  3)、更新物资基本信息时要多些操作

对于小数据量的情况下,肯定首选第一个解决方案,只存物资的OID到MaterialPlan表,但是对于大数据量情况下(系统经过长时间使用),比如MateiralInfo表有几万条甚至更多,MaterialPlan表也有几万条甚至更多是数据,那么又应该取舍那一点了?是从数据冗余考虑还是从速度上考虑了?想听听大家的意见.

7 个解决方案

#1


忘了说了,系统是B/S结构的

#2


B/S结构,你的那种方法都会影响性能,最好用C/S结构的

#3


才几w条记录
数据量也不大阿

我选择
第一:把物资的主键(及:OID)取到MaterialPlan表中,在数据显示时就联合MateiralInfo表显示物资的信息;

#4


其实数据库表设计的合理一点,适当建些索引

即时数据量是几十万,上百万,我觉得也没什么问题

#5


我还是赞成第一种解决方案,其他的解决方案不适合以后的扩充,容易造成数据库数据错误或者不健全,而且你使用的是Oracle数据库和小型机,我想性能应该不会有太大,问题,而且申请材料时稍微慢点应该不会有太大影响,而万一数据错误,几万条你就惨啦

#6


用的是oracle数据库

#7


我建议采用第一种解决方案,建立相关索引和视图,如果采用ORACLE,别说几万条,上佰万条问题都不大.

#1


忘了说了,系统是B/S结构的

#2


B/S结构,你的那种方法都会影响性能,最好用C/S结构的

#3


才几w条记录
数据量也不大阿

我选择
第一:把物资的主键(及:OID)取到MaterialPlan表中,在数据显示时就联合MateiralInfo表显示物资的信息;

#4


其实数据库表设计的合理一点,适当建些索引

即时数据量是几十万,上百万,我觉得也没什么问题

#5


我还是赞成第一种解决方案,其他的解决方案不适合以后的扩充,容易造成数据库数据错误或者不健全,而且你使用的是Oracle数据库和小型机,我想性能应该不会有太大,问题,而且申请材料时稍微慢点应该不会有太大影响,而万一数据错误,几万条你就惨啦

#6


用的是oracle数据库

#7


我建议采用第一种解决方案,建立相关索引和视图,如果采用ORACLE,别说几万条,上佰万条问题都不大.