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

数据库设计心得

时间:2023-11-10 22:25:51浏览次数:47  
标签:记录 数据库 小组 用户 设计 权限 心得

数据库设计心得

前言

我们小组的项目较为特殊,我们小组是基于Miniob的SQL请求并发处理的子系统,意思是在原有Miniob这个DBMS上面完善其功能,并且实现能够对SQL请求的并发处理。由于本身项目就是一个数据库管理系统,想要根据这个数据库管理系统再设计新的表不太合适。但我们小组仍然竭尽全力设计出了几个表。
以下表的实现,并非外部数据库,而是通过我们自己实现的DBMS系统来进行表的创建与管理,因此有一种自己管理自己的感觉。


明确需求,开始设计

数据库设计首先是要明确需求。我们小组的项目的主要功能是实现完善一个DBMS,例如如何创表,如何创建索引,如何插入数据等等。这一方面无法设计使用表来管理。在权限管理部分,我们的思路是用户通过IP、端口、用户名、密码登录系统,并且只能对相应有权限的表进行对应权限的操作。这部分就可以使用表来进行管理。于是就诞生了用户表和权限表。
image
image
后来为了增强系统的安全性与正确性,需要对用户的操作进行记录,于是诞生了用户操作追踪表以及系统日志表,这两个表就用来供后台人员进行数据库的维护。
image
image
最后考虑到用户能够提交使用体验、反馈信息,于是新增反馈通道,就有了用户反馈表。
image


接受意见,整理思考

在数据库审查的小班讨论中,老师提到了我们在用户权限表中的设计不合理:即权限字段用char不好,应该改成int类型,给出了理由是方便看,减少理解难度。在下课之后,我们小组经过思考、讨论后,得出的结论是老师给的建议没有我们设计的更方便。

  • 使用int类型来区分权限种类的话,如果一个用户对一张表有多个权限的话,用一个record是无法表示的,需要使用多个record来记录一个表的多条权限。而采取原先的设计使用一个bit表示对应的权限的话,只需要将权限或“|”起来就可以在一条记录中记录多个权限。这种方式在用户数量多,表数量多,权限数量多的情况下能够极大的减少内存占用,并且能够提高权限的查找速率。因此这里不采用老师的意见。

检查遗漏,删去冗余

在初次设计表的时候,我们对用户操作追踪表设计了一个table字段,用来记录用户输入sql语句对应的表名,在检查过程中发现,用户如果使用了多表查询,则在一个record的字段中无法记录这个操作,同时考虑到字段opt中已经记录了整个sql语句,这里的sql语句中已经能够包含所有信息,因此删去了table字段。

标签:记录,数据库,小组,用户,设计,权限,心得
From: https://www.cnblogs.com/xwan/p/17823983.html

相关文章

  • [数仓设计与建模] 数仓的分层
    以下各层按照从底部到顶部排列,从原始数据到最终应用1OperationDataStore原始数据层存放最原始的数据,结构与数据源结构一致,属于准备区基于从业务系统同步过来的数据结构可以保存所有历史数据,应选择高压缩格式,如gzip命名规则应为ods_tableName_inc/full2aDataWarehous......
  • 学习随笔(设计模式:简单工厂模式)
    内容:今天学习了设计模式中的简单工厂模式。收获:1.将所有相同类似的对象抽象,然后获得一个基类2.再根据该基类封装成不同的派生类3.当创建对象时,该对象可能是基类的任意一个派生类对象,那么到底是哪一个派生类呢?此时就可以通过工厂模式,用一个单独的类来做这个创造实......
  • CRM设计扫盲
    引言:什么是CRMCRM是客户关系管理(CustomerRelationshipManagement)的缩写,是一种管理企业与客户之间关系的策略和工具。CRM系统可以帮助企业收集、整理和分析客户信息,协调销售流程,提高客户满意度和忠诚度。CRM系统通常包括客户信息管理、销售管道管理、任务管理和报告和分析等模块......
  • Python MySQL 数据库查询:选择数据、使用筛选条件、防止 SQL 注入
    从表格中选择数据要从MySQL中的表格中选择数据,请使用"SELECT"语句:示例选择"customers"表格中的所有记录,并显示结果:importmysql.connectormydb=mysql.connector.connect(host="localhost",user="yourusername",password="yourpassword",datab......
  • 团队项目数据库设计心得
    数据库设计心得一、项目简介该项目是在一个miniob(mini数据库)库的基础上,让参数选手实现数据库的非常基础的功能,功能分为入门(预选赛),中级(决赛),高阶(黑客松)3个阶段。入门门槛较低,适合所有参赛选手。面向的对象主要是在校学生,数据库爱好者,或者对基础技术有一定兴趣的......
  • 基于大模型的日程管理通知系统——数据库设计心得
    项目:基于大模型的日程管理通知系统指导老师:李友焕组名:PMA班级:软件21011.  前言上学期数据库系统的课程,让我们了解了数据库的基本操作和设计原则。我们认识到良好的数据库设计在工程项目中是至关重要的。它直接影响到项目的成功与否,对系统的性能、安全性、可维护性和用户体......
  • Python MySQL 数据库查询:选择数据、使用筛选条件、防止 SQL 注入
    从表格中选择数据要从MySQL中的表格中选择数据,请使用"SELECT"语句:示例选择"customers"表格中的所有记录,并显示结果:importmysql.connectormydb=mysql.connector.connect(host="localhost",user="yourusername",password="yourpassword",datab......
  • 初唐五杰-数据库设计心得
    软件2105-初唐五杰-数据库设计心得指导老师:肖雄仁项目:管道直饮水自动控制云平台团队名:初唐五杰成员:杨虎强、马子豪、刘一凡、谢昶皓、陈家睦在本次数据库的设计中,我们小组所采取的设计步骤如下:需求分析小组项目为设计一个直饮水机管理云平台。重要的系统需求如下:......
  • 数据库设计报告
    组员:雷茜,程煜栋,胡友缘,彭子芹,宋君帆数据库设计执行摘要Kubernetes工作流管理系统概述本报告详细描述了Kubernetes工作流管理系统的数据库设计,该系统旨在提供高效、可扩展的工作流管理解决方案。该系统能够支持复杂的工作流程,包括任务调度、执行和监控,以及与Kubernetes集群......
  • 临高启明-数据库设计心得
     在做软件工程导论的项目的过程中,我们学习了如何通过分析需求来构建数据库实体对象以及powerdesigner的使用。最终通过powerdesigner完成了数据库概念模型、物理模型的设计,并导出了相应的建表SQL语句。需求分析:A)    设计过程中首先从项目需求分析文档出发,考量了项目实......