Nelist-4573qu

 

基于大模型的日程管理通知系统——数据库设计心得

项目:基于大模型的日程管理通知系统

指导老师:李友焕

组名:PMA

班级:软件2101

1.   前言

上学期数据库系统的课程,让我们了解了数据库的基本操作和设计原则。我们认识到良好的数据库设计在工程项目中是至关重要的。它直接影响到项目的成功与否,对系统的性能、安全性、可维护性和用户体验都有深远的影响。在项目初期就注重数据库设计是确保整个项目成功的关键一步。纸上得来终觉浅,在此次项目的实际数据库设计中,我们愈发感受到数据库设计不是一个轻松的任务,它是一个需要深思熟虑和仔细执行的复杂过程。以下便是我们小组数据库设计的总结与心得。

 

2.   背景

随着ChatGPT的横空出世, 大语言模型在各方面的应用越来越受人们的注意. 其中,事务抽取作为一个传统且重要的自然语言处理问题, 自然也可以尝试使用精调过后的语言模型而不是传统的语义分析来抽取自然语言中有价值的部分. 而日程管理作为生活中经常要用到的功能, 目前的主流日程App均需手动输入后再保存, 相当不方便. 本系统基于大语言强大的语言理解功能, 为用户提供方便快捷的日程管理体验.

相比之前的日程管理App, 本系统能识别多种输入且能从自然语言中自动提取出日程信息的部分.

 

3.   数据库设计思路

本项目旨在将大模型和日程管理结合,通过训练模型使服务器能够处理包含日程的输入,并将日程分析结果直接添加到日程。

对于这样一个系统,必然存在用户和日程,所以数据库至少包含用户和日程实体;

同时,由于不同日程的提醒完全不一样(比如某日的提前12小时,精确到某小时的提前15分钟等),于是需要提供一个提醒类型的设置。

对于日程而言,除了基本的开始时间和结束时间,以及内容以外,对于重复类日程,可能需要记录多个日程,于是为了满足数据库要求,需要额外有一个日期表,和日程一对多关系,完成日程的建立(对于是否满足日程规则,则在业务规则里)

由于要对输入信息做筛选,进行进一步的训练,项目需要记录日程的原输入,然后进行记录。

对于用户满意的日程,用户可以选择提交,这样的数据会绕过开发人员的审查,直接进入训练集,所以需要额外的预训练表。

由于存在分享日程的原因,用户可以选择绑定原来的日程,所以当绑定的时候,不会生成输入数据的副本。同时,分享的日程也自然不允许被提交到预训练表。

而对于分享日程,只需要存储日程,分享码,分享过期时间和是否绑定即可。用户在输入分享码之后会生成分享的副本。

 

4.   逻辑模型设计

在本系统中,数据库的设计采用PowerDesigner进行,并且采用面向对象的设计方法,首先进行对象实体的设计,最后将对象持久化到数据库中,所有的表和表之间的关联(ER图)都采用标准的PowerDesigner设计工具进行,这样能够将整个系统的设计和数据库设计有机的结合起来。

4.1 实体设计

1)       实体名称:用户

属性:用户邮箱、用户名、密码、用户偏好

约束:外键: 提醒设置

 

2)       实体名称:日程

属性:日程id、日程状态、日程开始时间、日程结束时间、是否启用提醒、时间类型、日程类型

约束:外键: 用户邮箱, 日期, 提醒设置id, 输入数据id

 

3)       实体名称:分享日程

属性:分享日程id、日程id、分享码、分享日程过期时间

约束:外键: 日程id

 

4)       实体名称: 提醒设置

属性:提醒设置id、提前时间、是否重复、重复间隔

约束:外键: 用户id

 

5)       实体名称: 日期

属性:日期id、日期数量

约束:外键: 日程id

 

6)       实体名称: 输入数据

属性:输入数据id、所使用的模型、提交时间、输入数据类型、输入数据

约束:外键: 日程id

 

7)       实体名称: 训练数据

属性:训练数据id

约束:外键: 输入数据id

 

4.2全局ER图

 

 

 

 

5.    问题与总结

1.在我们上学期学习的课程中,我们掌握了数据库范式、关系模型等基本概念,并学习使用 SQL 进行数据库操作。然而,实际的项目数据库设计涉及更多因素,需要综合考虑业务需求、数据关系、性能优化、安全性等多个方面。

 

2.在我们的项目中,我们发现一个良好的数据库设计需要对业务逻辑有深刻的理解。只有深入了解业务流程和数据之间的关系,才能设计出符合实际需求的数据库结构。就像我们的数据库,表是与我们的日程系统紧密相连的,日程的复杂性,格式、复用等等诸多情况都是一开始没有考虑或者说考虑不仔细的,只有深入我们的业务流程,敏锐地捕捉到用户的需求,才能设计出较为完善的数据库。

 

3.数据库设计不仅仅是关系型数据库表的设计,还包括了对数据完整性、一致性和安全性的保障。我们深刻理解了如何利用主键、外键等数据库工具来确保数据的完整性。我们的设计中,就将原来数据库的一些存在冗余项的属性拆分成另外一些表,这不仅是为了满足业务要求,也是为了简化数据库,确保系统在长期运行中的可靠性。

 

4.在实际项目中,我们还注意到了与团队协作的重要性。一个优秀的数据库设计需要整个团队的密切交流。通过有效的沟通和协作,能够更好地理解各方需求,从而设计出更符合整体项目目标的数据库结构。数据库中的许多属性,都是我们小组中经过讨论确定的,一个人的设计难免有些遗漏,发挥大家的智慧,不仅能避免一些错误,还能使我们的数据库更加的全面和完善。

 

5.数据库设计是软件工程项目中的关键环节,需要结合理论知识和实际经验,综合考虑多个方面的因素。通过这次实际项目的经历,我们更加深刻地认识到了数据库设计的重要性,以及在项目初期就对其进行充分重视的必要性。这不仅有助于确保项目的顺利实施,还能够为项目的未来发展奠定坚实的基础。

posted on 2023-11-10 21:48  4573去  阅读(171)  评论(0编辑  收藏  举报

导航