数据库设计心得博客


(0)数据库简介

对于智能问答数据库管理系统,我们用到了关系型数据库MySOL和图数据库neo4j,这两个数据库的数据也有着相互关联的关系——neo4j中的每一个实体和MySOL数据库中的一个实例相互对应,而且双方的增删改查也是同步的。

下面是我们的Neo4j数据库可视化之后的示例图。每一个圆圈里面是实体及其属性,连接两个实体的带箭头实线记录实体之间的关系。由于在我们的项目中有根据小程序用户提问给出答案的需求,即根据关键词和关系找出其他的关键词;而neo4j数据库的一项优势在于它存储了原生的图数据,可以使用图结构的自然伸展特性来直接进行图的遍历算法设计,即从一个节点开始,根据其连接的关系,可以快速和方便地找出它的邻近节点。这种查找数据的方法并不受数据量的大小所影响,因为邻近查询始终查找的是有限的局部数据,不会对整个数据库进行搜索。所以,我们根据自己的需求合理地运用了Neo4j这样查询高效的特性。

    而我们设计好MySQL数据库,导入数据之后,便可以将数据导入Neo4j数据库。所以下面聊一聊MySQL数据库的设计。

(1)MySQL数据库设计过程

1、初稿

最初我们的数据库包含了7个表,分别是和后端相关的后台管理系统日志表,和网页端数据库管理相关的管理员表、超级管理员表,和移动端微信小程序相关的微信用户数据表、用户禁用表、用户反馈表、聊天记录表,模型长下面这个样子:

但是在组员一起讨论检查的时候,根据需求增加了与微信小程序相关的用户收藏表,在微信用户数据表中增加了注册时间和用户头像两个新的字段。

2、终稿

在学长学姐看了我们的初稿之后,给出了一些修改建议:在用户状态表中,记录登入登出时间没有必要,可以改为记录用户进行各个操作、请求接口与响应数据的时间;而且需要将管理员和后台管理系统日志管理起来;需要增加实体集和实体关系表,需要和neo4j数据库中实体之间有关联相互对应。在修改之后,下面是我们最终的数据库。

(2)体会

在这次的数据库设计中,我们利用课程中学到的数据库知识和技术,根据需求的变化,解决本项目对信息处理的要求。经过这次的实践,我们既巩固了对数据库相关基本知识的理解,又掌握数据库设计的基本方法,更是进一步提高了综合运用所学知识的能力。

同时我们深刻感受到数据库的设计需要严谨的逻辑、要多考虑实际的具体情况,比如实体集表和实体关系表,就是考虑到MySQL和neo4j之间的相互关联与对应的关系。总之,这次设计的过程中出现了很多问题,在学长学姐和老师的指导下改正了,学习的收获很多。

相关