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

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

时间:2022-11-04 19:44:10浏览次数:33  
标签:概念模型 数据库 外键 PDM 模块 不队 心得 主键

数据库设计心得

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

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

使用工具

我们使用了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中出现了冗余的表和字段。

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

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

标签:概念模型,数据库,外键,PDM,模块,不队,心得,主键
From: https://www.cnblogs.com/aiopr/p/16858918.html

相关文章

  • 数据库设计心得-4班-代码怎么敲都队
    团队介绍项目名称:基于深度学习的人体生理数据监测系统指导老师:荣辉桂小组名称:代码怎么敲都队小组成员:崔光博(PM)、安冠东、海日娜、刘文韬、冯秋怡数据库设计目标1.涵......
  • Oracle数据库知识总结
    一、Sql语句1.1查询语句order排序(其中含有null)查询雇员的奖金并做降序排序(关于nullsfirst/nullslast)​​​selectename,commfromemporderbycommdescnulls......
  • 高校招生录取系统--数据库设计心得
    数据库设计心得项目介绍高效招生录取系统,主要功能为招生信息的管理与处理,至少要包含两个部分:客户端的招生录取系统以及基于WEB的招生信息发布以及查询系统。团队介绍项......
  • 对于邻接表的认识和学习心得
    存图的方式有两种:一.邻接矩阵法(或关联矩阵)就是一个简单的整数型二维数组。二.邻接表法(重点讲解)它是一种顺序存储(结构体数组)和链式存储(链表)结合的存储方法,它......
  • 使用JdbcTemplate操作数据库(增删改查)。具体代码+讲解 【上篇】
    1、什么是JdbcTemplateSpring框架对JDBC进行封装,使用JdbcTemplate方便实现对数据库操作2、前提准备2.1在项目中引入对应的jar包官网下载jar包、然后加入的项目......
  • 数据库设计心得
    简单介绍我们组的项目是健康码系统,这个系统的特点就是功能繁杂,需要把各个功能都清楚明白的包括进去,而数据库设计本身就是一个需要严谨明晰的工作。这是基础的东西,如果不打......
  • mysql创建数据库经典题型
     【简答题】有一个XSKC数据库,数据库中包括两个表: 学生表Student由学号(Sno)、姓名(Sname)、性别(Ssex)、年龄(Sage)、所在院系(Sdept)五个属性组成,记为:Student(Sno,Sn......
  • 【数据库数据恢复】LINUX环境EXT3文件系统下ORACLE数据库误删除的数据恢复案例
    数据库数据恢复环境:LINUXEXT3文件系统,部署ORACLE数据库。​数据库故障&分析:管理员在建立测试库时选错了服务器,在ORACLE数据库平台上CREATE了一套新库,创建至10%左右时发现......
  • postgresql数据库数组(Integer)类型避坑
     前提:业务需要把时间戳(秒)数组,存到一个字段,存入后的数据结构:{1659283200,1661961600}entity类配置 @Data@TableName("a")publicclassDispSocBillextendsBaseEnti......
  • 数据库设计心得
    一.团队介绍团队名称:绝不摆烂队团队成员:邹欣怡(PM)杨秀珍陈雪萍赵鋆洪冰儿团队项目:岳麓书院知识管理系统项目指导老师:彭鹏二.项目简介我国文化源远流长,其中书院数量......