MiniSho / SJTU-SE223-Project

上海交通大学 SE223 数据库原理与技术

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

SE223 数据库原理与技术 2020年春

课程项目迭代一要求

1)完成数据库设计,包括概念模型、逻辑模型(基于关系型数据库),生成脚本,在数据库设计的过程中请考虑到查询性能、冗余性等问题,尽量做到Good Design,设计并编写该系统需求的SQL语句。

2)以下项目需求只提供了大致的描述,系统的具体机制可自行设计,这些设计应体现在procedure、function、trigger等中。

3)建议使用PowerDesigner数据库建模工具。

设计一个门诊医疗预约系统,涉及就诊病人、医生和管理员三种角色,每个角色可能有多个用户。

其中,医院会有不同的科室,每个科室又会有不同的门诊开放时间。

管理员可以按照时间段管理各个科室的各个医生门诊是否开放、更改医生所负责的科室、每个时间段预约的最大人数。

就诊病人能够查询某个时间段内各个科室内各个医生的预约信息,也能够在就诊后为就诊医生评分。

医生能够根据时间段查询该时间段的预约情况,并在某个病人完成就诊后更新预约状态。

课程项目迭代二要求

课程项目沿用上一阶段的项目背景,以提升查询性能为首要目标,你可以使用任何课内外的手段对数据库性能进行分析、测试并提升查询性能。你可以利用explain分析sql性能,利用powerdesigner等工具或自行编程生成足够的测试数据,利用mysqlslap等工具进行性能测试,并通过课上的学习的知识对项目中的业务查询进行优化,包括但不限于sql子查询优化、索引、分表等技术。

要求给出一份优化报告,包括优化前后的性能差别和实现区别,比如sql、表结构、以及每个sql语句或测试脚本的执行时间(注意:请适当增加一些数据量,使得优化前的查询时间至少在5秒以上,否则容易由于实验可能存在的误差而导致结果不可信)。

【加分项】部分内容课程中不一定涉及到,但如果你进行了相关调研、实验并报告可以获得额外加分,包括但不限于以下几点:

① 对数据库存储引擎进行调研实验;

② 修改数据库参数,如查询缓存等;

③ 不仅对查询性能,还对写入性能进行优化;

④ 分析业务需求,设计几种 hybrid workload(多种业务功能在同一benchmark中占不同比例),分析讨论不同workload下该如何进行针对性的优化并进行实验。

⑤ 其他同学们在课外了解的优化方法。

【提交内容】( 将以下内容整理并打包形成压缩文件提交)

① 展示PPT,说明性能分析过程、测试过程、优化方法以及优化前后性能对比,如使用了第三方工具,也请在PPT内说明;

② 优化前的建表SQL和业务SQL;

③ 优化后的建表SQL和业务SQL;

④ 测试使用的数据、脚本(如果是自行编程生成的测试数据,也可以将源代码一同打包提交);

⑤ 优化报告,要求至少包含以下内容:

(1) 业务背景简述;

(2) 优化目标(workload)描述;

(3) 性能分析与测试过程以及相关测试结果;

(4) 优化方法描述以及优化前后性能的对比。

About

上海交通大学 SE223 数据库原理与技术


Languages

Language:SQLPL 63.6%Language:Python 28.2%Language:TSQL 8.2%