数据库设计心得-软4什么都做不队

数据库设计心得

项目名称:基于知识图谱的课程考核系统

成员:高玉榕 张龙飞 梁海文 陈依诺 苟珊珊 丑怡丹

使用工具

我们使用了powerdesigner工具来进行数据库的建模

数据库:mysql 8.0

设计过程

1.需求分析

根据我们之前完成的需求文档,我们把需求需要的表分为4个模块:用户信息模块、课程模块、习题模块、审核模块,对不同模块的细分,能让我们更好的完成数据库设计。

2.概念模型CDM

直接使用powderdesigner的CDM模型设计。

概念模型就是要确定我们数据库的实体、属性、类型,以及实体之间的关系。1对1、1对多和多对多这三种关系在概念模型阶段就要确立,否则会造成很多问题。

3.物理模型PDM

使用powerdesigner可以根据CDM直接转换得到PDM,物理模型就有了我们数据库的表、字段、字段类型和约束关系 。

4.搭建数据库

使用powerdesigner可以根据PDM导出SQL脚本,方便我们的数据库的建立。

过程中的问题:

1.需求分析的不完整

在需求分析时,例如我们的课程模块,课程中的班级是教学班而不是行政班级;在习题模块:我们只有试卷结果表,而没有试卷表,这些都是因为我们对于一个项目需求的流程的不熟悉造成的。

2.概念模型时实体关系不明确

在创建概念模型时,需要把各个实体之间的关系明确,这样在导出PDM后,可以方便许多。

但是我们对于某些实体之间的关系不明确,这样导致了转换成PDM后,PDM中多出了许多关系表和字段;这些多出的都是因为我们的实体关系没有划分好,powerdesigner为了保证正确性,而多加的东西。

3. PDM的约束问题

构建主键和外键时,外键的约束名许多都是重复的,这样不但导致了表单中的索引重复,还导致了外键约束重复,无法建表。

主键的选择:例如我们的用户表里的用户编号,课程表的课程编号,这些我们一开始都选择使用varchar类型,通过后台设计编号代码来保证唯一性。后来我们直接使用了自增主键作为编号,虽然自增主键不应该有实际的意义,但是没有但是,我们就是用了。

外键的引用:连接外键时需要考虑,在删除主键时,引用的外键是否也需要被删除。

4.表和字段

表的名称和字段名都要满足规范,字段名使用小写字母,多个单词之间使用下划线“_”来分开,不应该超过三个以上的单词,要让名称有意义。

字段的类型,老师发的数据库设计规范里要考虑字段的大小和意义,能用char就不用varchar,大文本的text和图像blob要谨慎使用。

字段是否为空,为空后是否要设置一个默认值也要考虑。因为为空的字段里放一个NULL会影响数据库查询效率。

总结

我们系统的数据库的各个表之间的联系是非常紧密的,每个表之间几乎都存在外键约束,在初次建表时,PDM中出现了冗余的表和字段。

对于每个表的主键也是仅根据书本上的定义来选择,导致主键对于用户的意义过大,使它带有除了惟一标识一行以外的意义,不便于数据库以后的操作和管理。

字段类型,需要考虑到数据的大小,用尽量少的空间完成数据的储存, 因为一个系统的数据是庞大的,不能浪费数据库的空间。

posted @ 2022-11-04 19:38  _白玉  阅读(16)  评论(0)    收藏  举报