Appearance
课程项目安排:数据库案例设计与实现
本文汇总课程项目要求、期中评分细则和期末汇报/交付要求。
1. 项目定位
课程项目要求以小组为单位完成一个较完整的数据库相关系统,重点考察从需求分析、概念模型、关系数据库设计到系统实现、演示和文档交付的完整流程。
总体要求:
- 实现一个可运行、可演示、可说明的完整系统。
- 自拟题目需要保证业务合理、工作量适中;工作量过小可能影响得分,过大则容易无法按期完成。
- 每组原则上不超过 4 人。
- 可以参考现有项目的框架和实现方式,但严禁代码抄袭;使用框架、模板或第三方库时应说明来源和作用。
- 可以使用 Navicat、PowerDesigner 等工具辅助完成逻辑视图、物理视图、ER 图和表结构设计。
2. 技术要求
数据库
- 推荐使用关系型数据库,如 MySQL、SQL Server、PostgreSQL 等。
- 使用 H2 Database、SQLite3 等轻量级数据库时,需要说明选择理由。
- MiniSQL 题目例外:需要自行实现简化数据库系统,不能依赖 MySQL、SQLite、Redis 等现有 DBMS 平台。
开发技术
编程语言、前端库和数据库连接组件不限。常见选择包括:
- Python:Flask、Django、PyMySQL 等。
- Java:Spring、JDBC、MySQL Connector/J 等。
- Go:go-sql-driver/mysql 等。
- C++/Qt:Qt SQL Driver 等。
- PHP:mysqli 等。
- 前端可使用现有框架,也可使用 HTML/CSS/JavaScript、WinForm、桌面端 GUI 或命令行界面。
技术选型应服务于系统完成度,不能为了复杂而复杂。数据库设计、约束、查询、事务、安全和系统可用性比技术栈本身更重要。
3. 推荐阶段安排
选题与需求分析
- 明确系统服务对象、使用场景和核心业务流程。
- 列出系统实体、实体属性、主要关系和关键业务规则。
- 识别用户角色及其权限边界,例如管理员、普通用户、教师、学生、客户等。
- 初步确定功能范围,避免只做静态表单或纯展示页面。
概念模型与数据库设计
- 使用规范 ER 模型表达实体、属性、联系、联系基数和约束。
- 识别 1:1、1:n、n:m 等关系,必要时设计关系表。
- 将概念模型转换为关系模式,明确主键、外键、唯一约束、非空约束、检查约束等。
- 按题目要求满足 2NF、3NF 等范式;如有反范式设计,应说明性能或业务理由。
系统实现
- 完成数据库建库建表脚本、初始化数据和必要索引。
- 实现核心业务功能,至少覆盖增删改查、查询检索、业务流程和必要统计。
- 提供清晰的前端、桌面端、命令行或 API 入口,确保系统可演示、可测试。
- 对涉及个人信息、支付信息、SQL 执行、并发售票等场景,应考虑权限、输入校验、事务和安全防护。
期中展示
期中展示重点是说明项目是否“设计清楚”。汇报内容建议包括:
- 题目和业务背景。
- 系统需求分析。
- 实体、属性和实体间关系。
- ER 图或概念模型图。
- 关系数据库设计、表结构、主键、外键和完整性约束。
- 功能设计和模块划分。
- 已完成内容、待完成内容和风险点。
期末展示
期末展示重点是“系统演示”。PPT 不必重复完整需求分析,可简要说明期中之后的设计变更、功能补全、优化和测试情况;如果变化不大,可以把更多时间留给系统演示。
最终应提交:
- 项目文档:包含系统需求分析、数据库概念模型设计、数据库设计、功能设计、模块划分、系统实现等内容。
- 代码文件:包含源代码、数据库脚本、依赖说明和必要测试数据。
- 系统安装与使用说明:应能让他人依据说明完成安装、运行、使用和测试。
4. 期中评分导向
期中考察满分口径为 50 分,主要看设计是否合理、表达是否清楚。
| 模块 | 分值 | 关注点 |
|---|---|---|
| 系统需求分析 | 15 | 实体和属性是否完整;实体关系是否识别正确;主要业务流程和用户功能需求是否周到 |
| 数据库概念模型设计 | 15 | ER 模型是否规范;实体类型划分是否合理;属性完整性约束是否识别;关系种类和键选择是否合理 |
| 数据库设计 | 10 | 概念模型是否正确转换为关系模式;范式是否满足题目要求;主键、外键和完整性约束是否合理 |
| 文档和演示 | 10 | PPT 内容是否清晰正确;表达是否有逻辑;问答是否能准确回应非开放性问题 |
细化检查:
- 每缺失重要实体、重要关系或关键属性,都会影响需求分析得分。
- ER 图需要区分实体、属性、联系和基数,不能只画页面流程图。
- 数据库设计需要给出表结构、字段类型、主键、外键、唯一性、非空、检查约束等。
- 功能设计应覆盖用户真实操作,而不是只列数据库表。
5. 期末评分与交付导向
期末通常由系统汇报/演示和项目文档共同构成,具体权重以课程通知为准。通用关注点包括:
- 系统是否能顺利运行和演示。
- 期中后是否完成核心功能、修正设计问题、补充约束和测试。
- 数据库设计是否规范,是否能支撑业务流程。
- 功能实现是否完整,用户界面或交互入口是否可用。
- 文档是否详尽,是否包含设计说明、代码说明、接口/模块说明、安装使用说明。
- 问答是否能解释设计取舍、约束设置、表关系、查询实现和系统边界。
项目文档实例结构:
- 项目背景与目标。
- 需求分析:用户角色、业务流程、功能需求、数据需求。
- 数据库概念模型:实体、属性、关系、ER 图、约束说明。
- 数据库逻辑设计:关系模式、表结构、主键、外键、范式分析。
- 数据库物理设计:字段类型、索引、视图、触发器、存储过程、事务或并发控制设计。
- 系统功能设计:模块划分、页面/API/命令设计、主要流程。
- 系统实现:技术栈、目录结构、关键实现、数据库连接方式。
- 测试与演示数据:测试场景、边界条件、核心截图或命令结果。
- 安装与使用说明:环境、依赖、数据库初始化、启动方式、账号和操作流程。
- 分工、参考资料和附录。
6. 可选题目概览
第一类:数据库应用系统
| 题目 | 数据库设计重点 | 功能实现重点 |
|---|---|---|
| 文献管理系统 | 至少包含论文、会议/期刊、作者、单位、关键字;设计论文-作者、论文-关键字、作者-单位等多对多关系;满足 3NF | PDF 上传与解析;按作者、单位、关键字等检索;高级搜索;批量上传、导入、导出;用户界面 |
| 微信扫码点名系统 | 至少包含学生、课程、出勤记录;考虑学生-课程关系、教师角色和权限;至少满足 2NF | 微信扫码签到;扫码有效性判断;学生信息增删改查和批量导入导出;出勤统计与查询;后台设置 |
| 网络数据爬取管理系统 | 至少包含网站、网页、内容、图片、数据源信息;设计一对多和多对多关系;满足 3NF | 爬虫模块;文本和图片分类存储;数据增删改查;爬取策略配置;关键字、发布者、时间等高级检索;索引优化 |
| 学生成绩数据库 | 至少包含学生、院系、专业、课程、教师、成绩;处理院系、专业、课程、教师、学生选课与成绩关系;满足 3NF | 院系、专业、课程、教师、学生和成绩管理;选课与成绩录入;成绩统计分析;权限和个人信息保护 |
| 电影行业数据库 | 至少包含电影、演员、导演、出品公司、电影类别、角色、旁白;处理电影与类别、导演、演员的多对多关系 | 电影、导演、演员、出品公司管理;电影分类、角色和旁白维护;可扩展评论、评分、在线观看等功能 |
| 网上综合书店销售数据库 | 至少包含门店、供货商、商品、图书、客户、会员、销售记录、出版社;处理商品、图书、客户、销售之间的关系 | 门店、供货商、商品、图书、客户、会员和销售记录管理;销售汇总分析;客户和会员隐私保护 |
| 航空票务数据库 | 至少包含航班、机场、舱位定价、售票记录、城市;处理航班经停、机场城市、售票记录和容量约束 | 机场和城市管理;航班与舱位定价管理;购票系统;特价票;并发售票处理;乘客和支付信息安全 |
| SQL 课程在线测评系统 | 至少包含学生、教师、题目、答案、测试用例、考试、提交;处理考试-题目、学生-提交、题目-答案关系;满足 3NF | 用户管理;题库管理;SQL 自动判题;考试和竞赛;成绩排名;完成率统计;SQL 安全执行和超时防护 |
第二类:数据库管理系统
| 题目 | 核心目标 | 功能和评分关注点 |
|---|---|---|
| MiniSQL | 自行实现一个简化数据库系统,不依赖现有 DBMS;可以通过 CLI 或自定义 SQL 命令交互 | 创建/删除数据库;创建/删除表;至少支持数值和字符串;插入、查询、过滤、JOIN;可通过存储结构、缓存、B+ 树或哈希索引等优化加分;可与 MySQL 8 在相同数据和语句下比较效率 |
MiniSQL 需要覆盖的典型命令或等价功能:
sql
CREATE DATABASE 数据库名;
CREATE TABLE 表名 (
列1 数据类型,
列2 数据类型
);
INSERT INTO 表名 (列1, 列2) VALUES (值1, 值2);
SELECT 列1 FROM 表名;
SELECT 列1 FROM 表名 WHERE 列2 = 某值;
SELECT 表1.列1 FROM 表1 INNER JOIN 表2 ON 表1.列1 = 表2.列2;
DROP TABLE IF EXISTS table_name;
DROP DATABASE IF EXISTS database_name;MiniSQL 交付关注:
- 功能性数据库系统是主体。
- 文档需说明系统设计、存储结构、优化技术和用户指南。
- 演示需突出关键功能、优化方法和性能指标。
- 使用脚本型语言实现时,应特别说明性能评估口径、单线程查询限制和依赖库边界。
第三类:数据库 + AI
| 题目 | 核心目标 | 功能和交付关注点 |
|---|---|---|
| 关系数据库 Schema 自动生成 | 从示例数据、自然语言需求或业务逻辑中抽取实体、属性和关系,自动生成关系数据库 Schema | 自动推断主键、外键、唯一性等约束;至少满足 3NF;兼顾查询性能;支持 MySQL、PostgreSQL、SQLite 等不同 SQL 方言;文档需说明算法、优化、兼容性和用户指南 |
| SQL 语句自动生成 | 根据自然语言问题自动生成 SQL 语句,即 Text2SQL | 解析上下文、多表关系和隐含语义;处理嵌套查询、聚合、复杂条件;保证语法和语义正确性;文档需说明系统设计、优化技术和用户指南 |