团队项目——数据库设计心得——红鲤鱼与绿鲤鱼与驴
1.慢阻肺护理项目数据库设计过程
我们基于需求分析文档对各个功能模块所需要的数据信息进行构建相应的表,在创建表的过程中遵守“按类分表存储”的原则;我们从用户信息(包括患者、医生、家属)、设备信息、文章信息、健康评估信息等多个模块抽取出各个不同的类,根据他们之间的一对多、多对多、多对一等不同的联系创建关系表,并在powerdesigner上创建cdm、pdm并生成数字字典,随后编写数据库文档。

图1: 用户关系E-R图
2.慢阻肺护理项目数据库设计难点
(1)对于powerdesigner工具的使用我们一开始并不是很熟悉,创建两表之间的一对多关系后生成pdm我们发现会有奇怪的重复字段出现,之后我们发现在A——>B一对多关系中,如果不设置依赖关系,A的主键会传递到B中做为外键;如果设置依赖关系A的主键会传递到B中做为外键和主键;
(2)设置表的那些字段做为主键是一个关键性问题,一开始我们将多个字段甚至是其他表传入的即使关键又是主键的表大量做为主键,使得查找性能降低,关系复杂,存储数据需要大量非空字段,数据完整性要求高,最后在老师助教的指导下,为每一个表创建一个唯一标识的id做为唯一的主键,其他的字段只作为外键;
(3)每个字段的数据类型需要重点关注,在后续的开发过程中,每一个字段的数据类型都对代码的要不同的实现要求,所以数据的类型、小数点精确的位数、数据的长度都需要在设计时考虑到后续的开发过程中相联系;
(4)表与表之间的关系要理解,表与表之间是多对多还是一对多还是一对一的关系,这都要求我们完全理解整个项目的各个过程,并且要为后续的数据库的延展性留出足够的空间,因此在设计表与表之间的关系时要考虑到会否后续的更新会导致关系的改变,要思考后续的延展性问题;

图2:一对多无依赖关系的,主键传递为外键
(5)数据库设计中的数据冗余等问题要时刻关注,从需求文档中分析出的种种功能模块都以局部的形式表达数据库需求,而单纯的为了满足功能模块需求设计出的表只是业务表,存在大量数据冗余问题,甚至还会存在更新异常,数据不一致等问题,这就要求我们必须从局部到整体,以全局的角度看待数据库的设计;
3.慢阻肺护理项目数据库设计注意点
1.由于表的数量较多,创建了近30张表,在一个画布上显得错乱复杂,所以建议分视图进行布局;
2.对备注经量详细,有益于后续开发维护,但不是简单对字段进行翻译,而是要注明该字段的用途,取值的具体含义,数值的编码格式等等;
3.对字段的命名要求,严禁使用数据库中的关键字做为字段名,例如date、time、key等等,加上前缀进行区分,当不同表中出现同名字段时,虽然不会报错,最好加上表名做为前缀进行区分,便于后续开发的可读性;
4.对于每一个表都要加上通用字段,修改时间、修改者、创建时间、创建者、删除标志,删除者等等;

图3:通用字段的设置
4.慢阻肺护理项目数据库设计心得
1.作为数据库设计人员,必须具有分析和推理能力,能从局部想象出全局,从一般联想到特殊情形,设计出的数据库要面面俱到,这样设计出的数据库才具有全覆盖性,才能满足种种业务需求;
2.要明确数据库设计中的三个问题:覆盖性问题,即确定一个单位有哪些数据项;划分问题,即确定哪些字段构成一个表;关系问题,即确定表之间有什么关系;明确以上三个问题,那么在数据库的设计中就会胸有成竹,因此在数据库设计之前必须要对以上三个问题有一个明确的答案;
3.严格按照数据按类分表存储的原则去设计关系型数据库,不同类的数据不能混合存储在一个表中。以这个原则去设计数据库,可以避免许多数据库设计中的常见问题,例如数据冗余、更新异常问题,给数据库设计带来很大的便利;

浙公网安备 33010602011771号