我们现在在进行数据库字典表设计时,有二种方式,其一是传统的方式,每个字典表都有ID、Name两字段。第二种方式是将所有字典表的数据放在同一张表中,结构如下:
TypeTable(typeID,typeName)【主表,用来记录字典表表名信息】;DataTable(typeID,DataId,DataName)【从表,记录所有字典表数据信息】
如性别、婚姻状态,在TypeTable中是两条记录,{02,性别},{06,婚姻状态};而在DataTable中各有三条记录{02,0,女 / 02,1,男 / 02,9,其它},{06,0,未婚 / 06,1,已婚 / 06,9,离异}
另有一张病人列表patient(patientID,SexID,MarryStatusID…)
现在需要查询病人信息,sql语句如下:
Select b.DataName as SexName,c.DataName as MarryStatusName
from patient a left join DataTable b on b.DataId=a.SexID and b.typeID=’02’
left join DataTable c on c.DataId=a.MarryStatusId and b.typeID=’06’
在数据库中执行该Sql语句,由于DataTable约1000条左右的数据量,相对第一种方式必将对数据库有一定的影响。
(当然在实际业务中可能类似的字典表约达5-10个,patient的数据量约500w条)
但不知道在一个系统中所有字典表获取数据都采用这种方式对数据库性能到底影响到什么程度,约降低百分之几的性能?会有其它隐患没?
|
|