团队项目数据库设计心得

发布时间 2023-11-10 21:49:03作者: 一只小灰狼

数据库设计心得

一、项目简介

该项目是在一个miniob(mini数据库)库的基础上, 让参数选手实现数据库的非常基础的功能, 功能分为入门(预选赛), 中级(决赛), 高阶(黑客松) 3个阶段。 入门门槛较低, 适合所有参赛选手。 面向的对象主要是在校学生,数据库爱好者, 或者对基础技术有一定兴趣的爱好者, 并且考题对诸多模块做了简化,比如不考虑并发操作, 事务比较简单。 目标是让不熟悉数据库设计和实现的同学能够快速的了解与深入学习数据库内核,期望通过miniob相关训练之后,能够对各个数据库内核模块的功能与它们之间的关联有所了解,并能够在使用时,设计出高效的SQL, 并帮助降低学习OceanBase 内核的学习门槛。

二、系统的功能描述

要想设计好数据库,首先,我们应明确项目的需求,明确功能需求
1. 数据表管理:允许用户创建、编辑和删除数据表,包括定义字段、数据类型和约束条件等。
2. 数据记录管理:提供对数据表中的数据记录进行增加、修改和删除操作,包括对字段进行数据验证和约束条件的检查。
3. 数据查询:允许用户执行各种类型的查询操作,如简单查询、复杂查询、条件查询等,以满足用户的数据检索需求。
4. 数据导入和导出:支持数据的导入和导出功能,允许用户将数据从外部文件或其他数据库导入到MiniOB数据库中,以及将MiniOB数据库中的数据导出为文件或其他数据库格式。
5. 用户权限管理:提供用户管理和权限设置功能,包括用户的添加、编辑、删除,以及角色和权限的分配和管理。
6. 数据备份和恢复:支持数据库的定期备份和数据恢复功能,以保证数据的安全性和可靠性。
7. 界面友好性:设计简洁直观的用户界面,使用户能够轻松地进行操作和导航,提供良好的用户体验。

三、确定实体

通过对搜索引擎各方面的分析,我们可以知道搜索引擎中的实体包括:日志表、用户表,数据表,角色表,字段表,角色页面表、页面表。各实体包含的数据项分别如下:

1)用户:用户id、id、用户名、角色id、角色、密码、创建者创建时间备注

2)日志表:日志id、用户id、用户、操作类型、表名创建时间

3)数据表id、表名、索引字、索引字段、创建者创建时间

4)字段表数据库字段id、属性名属性类型长度

5)角色表角色id、角色页面表id、角色名角色数量

6)角色页面表:角色页面表id、角色id、页面id。

7)页面表:页面id、页面名、页面路径。

 

四、最终设计结果

这个是我们做出来的物理模型:

 

 

 

 

五、心得

 

这次的数据库设计,小组同学内部积极讨论,积极提出意见,改进数据库。在数据库设计中,我们要考虑全面,先设计概念模型,然后生成物理模型。在设计过程中要注意:

若两个实体之间存在多对多的关系,则应消除这种关系。消除的办法是,在两者之间增加第三个实体。这样,原来一个多对多的关系,现在变为两个一对多的关系。要将原来两个实体的属性合理地分配到三个实体中去。这里的第三个实体,实质上是一个较复杂的关系,它对应一张基本表。一般来讲,数据库设计工具不能识别多对多的关系,但能处理多对多的关系。