首页 > 数据库 >数据库设计心得

数据库设计心得

时间:2022-11-04 13:35:05浏览次数:56  
标签:范式 数据库 书院 条目 字段 设计 心得 我们

一.团队介绍

团队名称:绝不摆烂队
团队成员:邹欣怡(PM)杨秀珍 陈雪萍 赵鋆 洪冰儿
团队项目:岳麓书院知识管理系统
项目指导老师:彭鹏

二.项目简介

我国文化源远流长,其中书院数量更是数不胜数,纸质书籍查找难度大,可阅读性不强使得书院资料整理的数字化成为趋势。随着当今技术的进步,人们对实现书院信息数字化查询的需求日渐增长。
本项目研究的目的是为了解决书院内人工标注书院信息难度大的问题,为岳麓书院人员以及其他用户提供数字化整理查询书院信息的系统平台。

三.ER图

image

四.逻辑结构设计

image

五.数据库设计之初出现的问题

1.字段冗余

在数据库设计之初,我们在每张表里都加上了create_time,update_time,create_user,update_user,is_deleted字段,结果在数据库评审的时候,老师说我们这些字段冗余,有的表确实应该存在,比如我们的修改记录表t_change_item需要指导修改的具体时间,其他比如书院表t_academy就没有必要加上这五个字段。所以我们又做了调整,仅在几个表中加上了需要的字段。

2.不符合范式

在书院表中,我们原本思考在每个书院后添加一个地点字段province,方便后续查询。我们的项目指导老师彭鹏说这不符合第三范式,因为我们的固定条目字段有书院的地点,然后学姐提议可以加一个视图来进行查询。

3.加入书院固定条目表

对于书院地点,我表示如果修改了提取出来的书院条目,那么导航栏这些不都会相应改变吗。彭鹏老师提议加入一个书院固定条目表,就是后来的t_fixed_item,在前台对这个表的内容不进行修改,但是对于后来新增的条目可以进行修改。这样子就可以保证书院地点的不变性,不过也存在提取出来的内容有错误却无法修改的可能性。

六.数据库设计心得

1.按模块划分

我们的项目在数据库方面不是特别复杂,按照模块划分为了书院和论坛两个模块。其中书院模块是我们的核心功能,主要有书院表,书院固定条目表,书院条目表和修改表,业务功能是进行书院条目的增删改查,书院语录的展示等。论坛模块是附加功能,主要是在我们的系统中给浏览者一个沟通交流的空间,大家可以在里面自由发言,分享自己的书院见闻等。

2.数据库设计遵循设计原则

首先是数据库表的命名,字段的命名,这些都有一定的规则需要遵循,比如我们在我们的代码里采用了驼峰映射,数据库的字段名xx_yy就可以根实体的属性xxYY对应起来,所以设计时一定要遵循设计原则。
其次是数据库范式的遵循。上面提到过,我们的书院表没有遵守第三范式,可能起初看起来觉得没有问题,但是后续肯定会发生意料之外的错误,所以为了避免此类错误,一开始设计的时候就应该遵循范式。

3.外键约束

数据库的外键约束强制我们不能随意对数据库的表进行操作,而且在删除某个字段的时候,必须先要删除有外键指向这个字段主键的那些其他表的字段才可以删除。在我们写注销用户时,看似对一个表操作,其实对很多表都进行了操作,格外需要注意。

4.勤于和老师沟通

我们的指导老师给予了我们很大的帮助,比如第三范式没有遵循、书院语录应该采用text的格式、加入书院固定条目表等。勤于和老师沟通能够在自己的发现盲区发现问题,提高开发效率。

标签:范式,数据库,书院,条目,字段,设计,心得,我们
From: https://www.cnblogs.com/hnuzxy/p/16857448.html

相关文章

  • 【学习心得】老男孩Linux课程学习分享,听听我的故事!
    我是老男孩教育Linux班的毕业学员,说一说我的学习感受。首先是费用方面,其实关于费用我没有什么想要说的,但很多小伙伴肯定都关注这点,所以简单分享一下。费用的话,其实......
  • 云数据库 GaussDB(for Influx) 解密第十一期:让智能电网中时序数据处理更高效
    摘要:GaussDB(forInflux)是一款基于计算存储分离架构,完全兼容InfluxDB生态的云原生时序数据库。本文分享自华为云社区《云数据库GaussDB(forInflux)解密第十一期:让智能......
  • mysql数据库慢SQL优化
    mysql数据库慢SQL优化优化来源:阿里云云数据库RDS慢sql或者CAT监控系统中的TransactionSQLorURL根据平均时间反馈来排查,决定是否增加索引,或者调整业务逻辑代码。1.......
  • 在matlab中使用模糊编辑器实现模糊控制器的设计详解
    目录一、理论基础二、核心程序三、测试结果一、理论基础所谓模糊控制技术是指通过模糊集合和模糊逻辑等原理,并且和经典的控制理论相结合,并通过模拟人类的思考方式,对一......
  • python django在线零食商城系统的设计与实现
    ......
  • C++设计一个类:不能被继承
    C++如何设计一个不能被继承的类?我们首先想到,不能被继承,那把构造函数和析构函数设计成私有的不就行了,这样的话子类不能访问父类的构造函数和析构函数,也就无法继承了。然而这......
  • Java(screw)生成数据库表结构
    数据库支持MySQLMariaDBTIDBOracleSqlServerPostgreSQLCacheDB(2016)文档生成支持htmlwordmarkdown方式一:代码生成<dependency><groupId>cn......
  • 数据库统一纳管平台
          为了应对越来越多的数据库类型以及不断变化的数据分析与数据处理需求,实现统一的数据库管理平台已不再是“可有可无”,而是“必不可少”。您需要借助TreeSo......
  • gimp脚本.scm一些心得记录
    gimp的脚本scm一些心得记录GIMP2.10图像处理脚本推荐GIMP使用脚本使得图像处理的功能更加强大,对于一些常见操作可以通过脚本快速实现。GIMP也出来2.10版本了,比前面的2.8......
  • 数据库设计心得——by你说的都队
     项目介绍我们的项目是基于跨层优化的视频传输系统,在dash架构的基础上实现视频的流畅播放,构建一个供用户交流的视频分享平台。设计思路我们小组根据前期的需求文档和......