This repository was archived by the owner on Oct 21, 2025. It is now read-only.

Repository files navigation

Flask Basic - 数据库项目实践

项目概述

本项目是一个基于 Flask 框架的问答系统,实现了用户注册、登录、发布问题、回答问题等核心功能。项目采用 MySQL 数据库,包含完整的数据库设计、存储过程、触发器等高级特性。

📚 项目文档

核心文档

快速导航

文档描述适用人群
require.md系统需求分析、功能模块设计产品经理、开发者
sql.md数据库表结构、存储过程、触发器数据库开发者、DBA
config.md环境配置、部署指南运维工程师、开发者

项目特色

  • ✅ Flask 基础功能学习与实践
  • ✅ 完整的用户认证系统(注册、登录、邮箱验证)
  • ✅ 问答系统核心功能
  • ✅ 数据库高级特性应用
  • ✅ 用户行为审计与日志记录
  • ✅ 点赞功能与统计
  • ✅ 数据库触发器实现自动化日志功能

系统需求分析

功能需求

  1. 用户管理模块

    • 用户注册(邮箱验证码验证)
    • 用户登录/退出
    • 用户信息管理
  2. 问答模块

    • 发布问题
    • 回答问题
    • 问题点赞功能
    • 问题列表展示
  3. 审计模块

    • 用户登录日志记录
    • 回答操作审计日志
    • 系统行为追踪

非功能需求

  • 数据一致性保障
  • 操作审计追踪
  • 系统安全性
  • 数据库性能优化

系统概念模型设计(E-R图)

核心实体

  • 用户(User):用户基本信息
  • 问题(Question):用户发布的问题
  • 回答(Answer):对问题的回答
  • 邮箱验证码(EmailCaptcha):注册验证码
  • 问题点赞(QuestionLikes):点赞关系

审计实体

  • 用户登录日志(UserLoginLog):登录行为记录
  • 回答审计日志(AnswerAuditLog):回答操作记录

数据库表设计

核心业务表

表名描述主要字段
user用户表id, username, password, email, join_time, last_login_time
question问题表id, title, content, create_time, author_id, likes_count
answer回答表id, content, create_time, question_id, author_id
email_captcha邮箱验证码表id, email, captcha, used, create_time
question_likes问题点赞表id, question_id, user_id, create_time

审计日志表

表名描述主要字段
user_login_log用户登录日志log_id, user_id, login_time, ip_address
answer_audit_log回答审计日志log_id, answer_id, operation_type, old_content, new_content

📋 详细信息: 完整的数据库设计和范式分析请参考 数据库设计文档

存储过程

1. 批量失效过期验证码

CALL sp_deactivate_old_unused_captchas(7); -- 失效7天前的验证码

2. 获取用户活跃度统计

CALL sp_get_user_activity_summary(2); -- 获取用户ID为2的活跃度统计

触发器功能

1. 自动化日志记录

  • 回答操作日志:自动记录回答的增删改操作
  • 用户登录日志:自动记录用户登录行为

2. 业务逻辑触发

  • 问题更新时间:有新回答时自动更新问题的最后修改时间
  • 点赞数统计:点赞/取消点赞时自动更新问题点赞数

3. 数据一致性保障

  • 确保点赞数与实际点赞记录一致
  • 保证审计日志的完整性

项目结构

flask-basic/
├── README.md # 项目说明文档
├── require.md # 需求分析文档
├── sql.md # 数据库设计文档
├── config.md # 配置文件说明
├── flask_basic.sql # 数据库结构与数据
├── .gitignore # Git忽略文件配置
├── requirements.txt # Python依赖包(需要)
├── app.py # Flask应用主文件(需要)
├── models/ # 数据模型(需要)
├── templates/ # HTML模板(需要)
├── static/ # 静态文件(需要)
└── migrations/ # 数据库迁移文件

技术栈

  • 后端框架:Flask
  • 数据库:MySQL 8.0
  • ORM:Flask-SQLAlchemy
  • 数据库迁移:Flask-Migrate
  • 密码加密:Werkzeug Security
  • 邮件发送:Flask-Mail

安装与运行

1. 环境准备

# 创建虚拟环境
python -m venv venv
# 激活虚拟环境
venv\Scripts\activate # Windowssource venv/bin/activate # Linux/Mac# 安装依赖
pip install -r requirements.txt

2. 数据库配置

# 导入数据库结构
mysql -u root -p < flask_basic.sql

⚙️ 配置指南: 详细的配置步骤请参考 配置文件说明

3. 运行应用

python app.py

数据库特性亮点

1. 完整的审计系统

  • 所有回答操作都有完整的审计日志
  • 用户登录行为全程追踪
  • 支持数据恢复和问题追溯

2. 自动化触发器

  • 业务逻辑自动化处理
  • 数据一致性自动保障
  • 减少应用层代码复杂度

3. 存储过程优化

  • 批量数据处理效率高
  • 复杂查询逻辑封装
  • 数据库层面的业务逻辑

4. 规范的表设计

  • 符合数据库设计规范
  • 完整的外键约束
  • 合理的索引设计

未来扩展

  • 添加用户权限管理
  • 实现问题分类功能
  • 添加搜索功能
  • 实现消息通知系统
  • 添加文件上传功能
  • 实现API接口

项目总结

本项目完整地展示了:

  • Flask Web开发的核心概念
  • MySQL数据库的高级特性应用
  • 存储过程和触发器的实际使用
  • 系统审计和日志记录的最佳实践
  • 数据库设计的规范性和扩展性

这是一个很好的数据库项目实践案例,涵盖了从系统分析、概念模型设计到具体实现的完整流程。


📖 更多详细信息请查看相关文档

About

数据库课程项目

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content
This repository was archived by the owner on Oct 21, 2025. It is now read-only.

Repository files navigation

Flask Basic - 数据库项目实践

项目概述

本项目是一个基于 Flask 框架的问答系统,实现了用户注册、登录、发布问题、回答问题等核心功能。项目采用 MySQL 数据库,包含完整的数据库设计、存储过程、触发器等高级特性。

📚 项目文档

核心文档

快速导航

文档描述适用人群
require.md系统需求分析、功能模块设计产品经理、开发者
sql.md数据库表结构、存储过程、触发器数据库开发者、DBA
config.md环境配置、部署指南运维工程师、开发者

项目特色

  • ✅ Flask 基础功能学习与实践
  • ✅ 完整的用户认证系统(注册、登录、邮箱验证)
  • ✅ 问答系统核心功能
  • ✅ 数据库高级特性应用
  • ✅ 用户行为审计与日志记录
  • ✅ 点赞功能与统计
  • ✅ 数据库触发器实现自动化日志功能

系统需求分析

功能需求

  1. 用户管理模块

    • 用户注册(邮箱验证码验证)
    • 用户登录/退出
    • 用户信息管理
  2. 问答模块

    • 发布问题
    • 回答问题
    • 问题点赞功能
    • 问题列表展示
  3. 审计模块

    • 用户登录日志记录
    • 回答操作审计日志
    • 系统行为追踪

非功能需求

  • 数据一致性保障
  • 操作审计追踪
  • 系统安全性
  • 数据库性能优化

系统概念模型设计(E-R图)

核心实体

  • 用户(User):用户基本信息
  • 问题(Question):用户发布的问题
  • 回答(Answer):对问题的回答
  • 邮箱验证码(EmailCaptcha):注册验证码
  • 问题点赞(QuestionLikes):点赞关系

审计实体

  • 用户登录日志(UserLoginLog):登录行为记录
  • 回答审计日志(AnswerAuditLog):回答操作记录

数据库表设计

核心业务表

表名描述主要字段
user用户表id, username, password, email, join_time, last_login_time
question问题表id, title, content, create_time, author_id, likes_count
answer回答表id, content, create_time, question_id, author_id
email_captcha邮箱验证码表id, email, captcha, used, create_time
question_likes问题点赞表id, question_id, user_id, create_time

审计日志表

表名描述主要字段
user_login_log用户登录日志log_id, user_id, login_time, ip_address
answer_audit_log回答审计日志log_id, answer_id, operation_type, old_content, new_content

📋 详细信息: 完整的数据库设计和范式分析请参考 数据库设计文档

存储过程

1. 批量失效过期验证码

CALL sp_deactivate_old_unused_captchas(7); -- 失效7天前的验证码

2. 获取用户活跃度统计

CALL sp_get_user_activity_summary(2); -- 获取用户ID为2的活跃度统计

触发器功能

1. 自动化日志记录

  • 回答操作日志:自动记录回答的增删改操作
  • 用户登录日志:自动记录用户登录行为

2. 业务逻辑触发

  • 问题更新时间:有新回答时自动更新问题的最后修改时间
  • 点赞数统计:点赞/取消点赞时自动更新问题点赞数

3. 数据一致性保障

  • 确保点赞数与实际点赞记录一致
  • 保证审计日志的完整性

项目结构

flask-basic/
├── README.md # 项目说明文档
├── require.md # 需求分析文档
├── sql.md # 数据库设计文档
├── config.md # 配置文件说明
├── flask_basic.sql # 数据库结构与数据
├── .gitignore # Git忽略文件配置
├── requirements.txt # Python依赖包(需要)
├── app.py # Flask应用主文件(需要)
├── models/ # 数据模型(需要)
├── templates/ # HTML模板(需要)
├── static/ # 静态文件(需要)
└── migrations/ # 数据库迁移文件

技术栈

  • 后端框架:Flask
  • 数据库:MySQL 8.0
  • ORM:Flask-SQLAlchemy
  • 数据库迁移:Flask-Migrate
  • 密码加密:Werkzeug Security
  • 邮件发送:Flask-Mail

安装与运行

1. 环境准备

# 创建虚拟环境
python -m venv venv
# 激活虚拟环境
venv\Scripts\activate # Windowssource venv/bin/activate # Linux/Mac# 安装依赖
pip install -r requirements.txt

2. 数据库配置

# 导入数据库结构
mysql -u root -p < flask_basic.sql

⚙️ 配置指南: 详细的配置步骤请参考 配置文件说明

3. 运行应用

python app.py

数据库特性亮点

1. 完整的审计系统

  • 所有回答操作都有完整的审计日志
  • 用户登录行为全程追踪
  • 支持数据恢复和问题追溯

2. 自动化触发器

  • 业务逻辑自动化处理
  • 数据一致性自动保障
  • 减少应用层代码复杂度

3. 存储过程优化

  • 批量数据处理效率高
  • 复杂查询逻辑封装
  • 数据库层面的业务逻辑

4. 规范的表设计

  • 符合数据库设计规范
  • 完整的外键约束
  • 合理的索引设计

未来扩展

  • 添加用户权限管理
  • 实现问题分类功能
  • 添加搜索功能
  • 实现消息通知系统
  • 添加文件上传功能
  • 实现API接口

项目总结

本项目完整地展示了:

  • Flask Web开发的核心概念
  • MySQL数据库的高级特性应用
  • 存储过程和触发器的实际使用
  • 系统审计和日志记录的最佳实践
  • 数据库设计的规范性和扩展性

这是一个很好的数据库项目实践案例,涵盖了从系统分析、概念模型设计到具体实现的完整流程。


📖 更多详细信息请查看相关文档

About

数据库课程项目

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
This repository was archived by the owner on Oct 21, 2025. It is now read-only.

Repository files navigation

Flask Basic - 数据库项目实践

项目概述

本项目是一个基于 Flask 框架的问答系统,实现了用户注册、登录、发布问题、回答问题等核心功能。项目采用 MySQL 数据库,包含完整的数据库设计、存储过程、触发器等高级特性。

📚 项目文档

核心文档

快速导航

文档描述适用人群
require.md系统需求分析、功能模块设计产品经理、开发者
sql.md数据库表结构、存储过程、触发器数据库开发者、DBA
config.md环境配置、部署指南运维工程师、开发者

项目特色

  • ✅ Flask 基础功能学习与实践
  • ✅ 完整的用户认证系统(注册、登录、邮箱验证)
  • ✅ 问答系统核心功能
  • ✅ 数据库高级特性应用
  • ✅ 用户行为审计与日志记录
  • ✅ 点赞功能与统计
  • ✅ 数据库触发器实现自动化日志功能

系统需求分析

功能需求

  1. 用户管理模块

    • 用户注册(邮箱验证码验证)
    • 用户登录/退出
    • 用户信息管理
  2. 问答模块

    • 发布问题
    • 回答问题
    • 问题点赞功能
    • 问题列表展示
  3. 审计模块

    • 用户登录日志记录
    • 回答操作审计日志
    • 系统行为追踪

非功能需求

  • 数据一致性保障
  • 操作审计追踪
  • 系统安全性
  • 数据库性能优化

系统概念模型设计(E-R图)

核心实体

  • 用户(User):用户基本信息
  • 问题(Question):用户发布的问题
  • 回答(Answer):对问题的回答
  • 邮箱验证码(EmailCaptcha):注册验证码
  • 问题点赞(QuestionLikes):点赞关系

审计实体

  • 用户登录日志(UserLoginLog):登录行为记录
  • 回答审计日志(AnswerAuditLog):回答操作记录

数据库表设计

核心业务表

表名描述主要字段
user用户表id, username, password, email, join_time, last_login_time
question问题表id, title, content, create_time, author_id, likes_count
answer回答表id, content, create_time, question_id, author_id
email_captcha邮箱验证码表id, email, captcha, used, create_time
question_likes问题点赞表id, question_id, user_id, create_time

审计日志表

表名描述主要字段
user_login_log用户登录日志log_id, user_id, login_time, ip_address
answer_audit_log回答审计日志log_id, answer_id, operation_type, old_content, new_content

📋 详细信息: 完整的数据库设计和范式分析请参考 数据库设计文档

存储过程

1. 批量失效过期验证码

CALL sp_deactivate_old_unused_captchas(7); -- 失效7天前的验证码

2. 获取用户活跃度统计

CALL sp_get_user_activity_summary(2); -- 获取用户ID为2的活跃度统计

触发器功能

1. 自动化日志记录

  • 回答操作日志:自动记录回答的增删改操作
  • 用户登录日志:自动记录用户登录行为

2. 业务逻辑触发

  • 问题更新时间:有新回答时自动更新问题的最后修改时间
  • 点赞数统计:点赞/取消点赞时自动更新问题点赞数

3. 数据一致性保障

  • 确保点赞数与实际点赞记录一致
  • 保证审计日志的完整性

项目结构

flask-basic/
├── README.md # 项目说明文档
├── require.md # 需求分析文档
├── sql.md # 数据库设计文档
├── config.md # 配置文件说明
├── flask_basic.sql # 数据库结构与数据
├── .gitignore # Git忽略文件配置
├── requirements.txt # Python依赖包(需要)
├── app.py # Flask应用主文件(需要)
├── models/ # 数据模型(需要)
├── templates/ # HTML模板(需要)
├── static/ # 静态文件(需要)
└── migrations/ # 数据库迁移文件

技术栈

  • 后端框架:Flask
  • 数据库:MySQL 8.0
  • ORM:Flask-SQLAlchemy
  • 数据库迁移:Flask-Migrate
  • 密码加密:Werkzeug Security
  • 邮件发送:Flask-Mail

安装与运行

1. 环境准备

# 创建虚拟环境
python -m venv venv
# 激活虚拟环境
venv\Scripts\activate # Windowssource venv/bin/activate # Linux/Mac# 安装依赖
pip install -r requirements.txt

2. 数据库配置

# 导入数据库结构
mysql -u root -p < flask_basic.sql

⚙️ 配置指南: 详细的配置步骤请参考 配置文件说明

3. 运行应用

python app.py

数据库特性亮点

1. 完整的审计系统

  • 所有回答操作都有完整的审计日志
  • 用户登录行为全程追踪
  • 支持数据恢复和问题追溯

2. 自动化触发器

  • 业务逻辑自动化处理
  • 数据一致性自动保障
  • 减少应用层代码复杂度

3. 存储过程优化

  • 批量数据处理效率高
  • 复杂查询逻辑封装
  • 数据库层面的业务逻辑

4. 规范的表设计

  • 符合数据库设计规范
  • 完整的外键约束
  • 合理的索引设计

未来扩展

  • 添加用户权限管理
  • 实现问题分类功能
  • 添加搜索功能
  • 实现消息通知系统
  • 添加文件上传功能
  • 实现API接口

项目总结

本项目完整地展示了:

  • Flask Web开发的核心概念
  • MySQL数据库的高级特性应用
  • 存储过程和触发器的实际使用
  • 系统审计和日志记录的最佳实践
  • 数据库设计的规范性和扩展性

这是一个很好的数据库项目实践案例,涵盖了从系统分析、概念模型设计到具体实现的完整流程。


📖 更多详细信息请查看相关文档

About

数据库课程项目

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
This repository was archived by the owner on Oct 21, 2025. It is now read-only.

Repository files navigation

Flask Basic - 数据库项目实践

项目概述

本项目是一个基于 Flask 框架的问答系统,实现了用户注册、登录、发布问题、回答问题等核心功能。项目采用 MySQL 数据库,包含完整的数据库设计、存储过程、触发器等高级特性。

📚 项目文档

核心文档

快速导航

文档描述适用人群
require.md系统需求分析、功能模块设计产品经理、开发者
sql.md数据库表结构、存储过程、触发器数据库开发者、DBA
config.md环境配置、部署指南运维工程师、开发者

项目特色

  • ✅ Flask 基础功能学习与实践
  • ✅ 完整的用户认证系统(注册、登录、邮箱验证)
  • ✅ 问答系统核心功能
  • ✅ 数据库高级特性应用
  • ✅ 用户行为审计与日志记录
  • ✅ 点赞功能与统计
  • ✅ 数据库触发器实现自动化日志功能

系统需求分析

功能需求

  1. 用户管理模块

    • 用户注册(邮箱验证码验证)
    • 用户登录/退出
    • 用户信息管理
  2. 问答模块

    • 发布问题
    • 回答问题
    • 问题点赞功能
    • 问题列表展示
  3. 审计模块

    • 用户登录日志记录
    • 回答操作审计日志
    • 系统行为追踪

非功能需求

  • 数据一致性保障
  • 操作审计追踪
  • 系统安全性
  • 数据库性能优化

系统概念模型设计(E-R图)

核心实体

  • 用户(User):用户基本信息
  • 问题(Question):用户发布的问题
  • 回答(Answer):对问题的回答
  • 邮箱验证码(EmailCaptcha):注册验证码
  • 问题点赞(QuestionLikes):点赞关系

审计实体

  • 用户登录日志(UserLoginLog):登录行为记录
  • 回答审计日志(AnswerAuditLog):回答操作记录

数据库表设计

核心业务表

表名描述主要字段
user用户表id, username, password, email, join_time, last_login_time
question问题表id, title, content, create_time, author_id, likes_count
answer回答表id, content, create_time, question_id, author_id
email_captcha邮箱验证码表id, email, captcha, used, create_time
question_likes问题点赞表id, question_id, user_id, create_time

审计日志表

表名描述主要字段
user_login_log用户登录日志log_id, user_id, login_time, ip_address
answer_audit_log回答审计日志log_id, answer_id, operation_type, old_content, new_content

📋 详细信息: 完整的数据库设计和范式分析请参考 数据库设计文档

存储过程

1. 批量失效过期验证码

CALL sp_deactivate_old_unused_captchas(7); -- 失效7天前的验证码

2. 获取用户活跃度统计

CALL sp_get_user_activity_summary(2); -- 获取用户ID为2的活跃度统计

触发器功能

1. 自动化日志记录

  • 回答操作日志:自动记录回答的增删改操作
  • 用户登录日志:自动记录用户登录行为

2. 业务逻辑触发

  • 问题更新时间:有新回答时自动更新问题的最后修改时间
  • 点赞数统计:点赞/取消点赞时自动更新问题点赞数

3. 数据一致性保障

  • 确保点赞数与实际点赞记录一致
  • 保证审计日志的完整性

项目结构

flask-basic/
├── README.md # 项目说明文档
├── require.md # 需求分析文档
├── sql.md # 数据库设计文档
├── config.md # 配置文件说明
├── flask_basic.sql # 数据库结构与数据
├── .gitignore # Git忽略文件配置
├── requirements.txt # Python依赖包(需要)
├── app.py # Flask应用主文件(需要)
├── models/ # 数据模型(需要)
├── templates/ # HTML模板(需要)
├── static/ # 静态文件(需要)
└── migrations/ # 数据库迁移文件

技术栈

  • 后端框架:Flask
  • 数据库:MySQL 8.0
  • ORM:Flask-SQLAlchemy
  • 数据库迁移:Flask-Migrate
  • 密码加密:Werkzeug Security
  • 邮件发送:Flask-Mail

安装与运行

1. 环境准备

# 创建虚拟环境
python -m venv venv
# 激活虚拟环境
venv\Scripts\activate # Windowssource venv/bin/activate # Linux/Mac# 安装依赖
pip install -r requirements.txt

2. 数据库配置

# 导入数据库结构
mysql -u root -p < flask_basic.sql

⚙️ 配置指南: 详细的配置步骤请参考 配置文件说明

3. 运行应用

python app.py

数据库特性亮点

1. 完整的审计系统

  • 所有回答操作都有完整的审计日志
  • 用户登录行为全程追踪
  • 支持数据恢复和问题追溯

2. 自动化触发器

  • 业务逻辑自动化处理
  • 数据一致性自动保障
  • 减少应用层代码复杂度

3. 存储过程优化

  • 批量数据处理效率高
  • 复杂查询逻辑封装
  • 数据库层面的业务逻辑

4. 规范的表设计

  • 符合数据库设计规范
  • 完整的外键约束
  • 合理的索引设计

未来扩展

  • 添加用户权限管理
  • 实现问题分类功能
  • 添加搜索功能
  • 实现消息通知系统
  • 添加文件上传功能
  • 实现API接口

项目总结

本项目完整地展示了:

  • Flask Web开发的核心概念
  • MySQL数据库的高级特性应用
  • 存储过程和触发器的实际使用
  • 系统审计和日志记录的最佳实践
  • 数据库设计的规范性和扩展性

这是一个很好的数据库项目实践案例,涵盖了从系统分析、概念模型设计到具体实现的完整流程。


📖 更多详细信息请查看相关文档

About

数据库课程项目

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content
This repository was archived by the owner on Oct 21, 2025. It is now read-only.

Repository files navigation

Flask Basic - 数据库项目实践

项目概述

本项目是一个基于 Flask 框架的问答系统,实现了用户注册、登录、发布问题、回答问题等核心功能。项目采用 MySQL 数据库,包含完整的数据库设计、存储过程、触发器等高级特性。

📚 项目文档

核心文档

快速导航

文档描述适用人群
require.md系统需求分析、功能模块设计产品经理、开发者
sql.md数据库表结构、存储过程、触发器数据库开发者、DBA
config.md环境配置、部署指南运维工程师、开发者

项目特色

  • ✅ Flask 基础功能学习与实践
  • ✅ 完整的用户认证系统(注册、登录、邮箱验证)
  • ✅ 问答系统核心功能
  • ✅ 数据库高级特性应用
  • ✅ 用户行为审计与日志记录
  • ✅ 点赞功能与统计
  • ✅ 数据库触发器实现自动化日志功能

系统需求分析

功能需求

  1. 用户管理模块

    • 用户注册(邮箱验证码验证)
    • 用户登录/退出
    • 用户信息管理
  2. 问答模块

    • 发布问题
    • 回答问题
    • 问题点赞功能
    • 问题列表展示
  3. 审计模块

    • 用户登录日志记录
    • 回答操作审计日志
    • 系统行为追踪

非功能需求

  • 数据一致性保障
  • 操作审计追踪
  • 系统安全性
  • 数据库性能优化

系统概念模型设计(E-R图)

核心实体

  • 用户(User):用户基本信息
  • 问题(Question):用户发布的问题
  • 回答(Answer):对问题的回答
  • 邮箱验证码(EmailCaptcha):注册验证码
  • 问题点赞(QuestionLikes):点赞关系

审计实体

  • 用户登录日志(UserLoginLog):登录行为记录
  • 回答审计日志(AnswerAuditLog):回答操作记录

数据库表设计

核心业务表

表名描述主要字段
user用户表id, username, password, email, join_time, last_login_time
question问题表id, title, content, create_time, author_id, likes_count
answer回答表id, content, create_time, question_id, author_id
email_captcha邮箱验证码表id, email, captcha, used, create_time
question_likes问题点赞表id, question_id, user_id, create_time

审计日志表

表名描述主要字段
user_login_log用户登录日志log_id, user_id, login_time, ip_address
answer_audit_log回答审计日志log_id, answer_id, operation_type, old_content, new_content

📋 详细信息: 完整的数据库设计和范式分析请参考 数据库设计文档

存储过程

1. 批量失效过期验证码

CALL sp_deactivate_old_unused_captchas(7); -- 失效7天前的验证码

2. 获取用户活跃度统计

CALL sp_get_user_activity_summary(2); -- 获取用户ID为2的活跃度统计

触发器功能

1. 自动化日志记录

  • 回答操作日志:自动记录回答的增删改操作
  • 用户登录日志:自动记录用户登录行为

2. 业务逻辑触发

  • 问题更新时间:有新回答时自动更新问题的最后修改时间
  • 点赞数统计:点赞/取消点赞时自动更新问题点赞数

3. 数据一致性保障

  • 确保点赞数与实际点赞记录一致
  • 保证审计日志的完整性

项目结构

flask-basic/
├── README.md # 项目说明文档
├── require.md # 需求分析文档
├── sql.md # 数据库设计文档
├── config.md # 配置文件说明
├── flask_basic.sql # 数据库结构与数据
├── .gitignore # Git忽略文件配置
├── requirements.txt # Python依赖包(需要)
├── app.py # Flask应用主文件(需要)
├── models/ # 数据模型(需要)
├── templates/ # HTML模板(需要)
├── static/ # 静态文件(需要)
└── migrations/ # 数据库迁移文件

技术栈

  • 后端框架:Flask
  • 数据库:MySQL 8.0
  • ORM:Flask-SQLAlchemy
  • 数据库迁移:Flask-Migrate
  • 密码加密:Werkzeug Security
  • 邮件发送:Flask-Mail

安装与运行

1. 环境准备

# 创建虚拟环境
python -m venv venv
# 激活虚拟环境
venv\Scripts\activate # Windowssource venv/bin/activate # Linux/Mac# 安装依赖
pip install -r requirements.txt

2. 数据库配置

# 导入数据库结构
mysql -u root -p < flask_basic.sql

⚙️ 配置指南: 详细的配置步骤请参考 配置文件说明

3. 运行应用

python app.py

数据库特性亮点

1. 完整的审计系统

  • 所有回答操作都有完整的审计日志
  • 用户登录行为全程追踪
  • 支持数据恢复和问题追溯

2. 自动化触发器

  • 业务逻辑自动化处理
  • 数据一致性自动保障
  • 减少应用层代码复杂度

3. 存储过程优化

  • 批量数据处理效率高
  • 复杂查询逻辑封装
  • 数据库层面的业务逻辑

4. 规范的表设计

  • 符合数据库设计规范
  • 完整的外键约束
  • 合理的索引设计

未来扩展

  • 添加用户权限管理
  • 实现问题分类功能
  • 添加搜索功能
  • 实现消息通知系统
  • 添加文件上传功能
  • 实现API接口

项目总结

本项目完整地展示了:

  • Flask Web开发的核心概念
  • MySQL数据库的高级特性应用
  • 存储过程和触发器的实际使用
  • 系统审计和日志记录的最佳实践
  • 数据库设计的规范性和扩展性

这是一个很好的数据库项目实践案例,涵盖了从系统分析、概念模型设计到具体实现的完整流程。


📖 更多详细信息请查看相关文档

About

数据库课程项目

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
This repository was archived by the owner on Oct 21, 2025. It is now read-only.

Repository files navigation

Flask Basic - 数据库项目实践

项目概述

本项目是一个基于 Flask 框架的问答系统,实现了用户注册、登录、发布问题、回答问题等核心功能。项目采用 MySQL 数据库,包含完整的数据库设计、存储过程、触发器等高级特性。

📚 项目文档

核心文档

快速导航

文档描述适用人群
require.md系统需求分析、功能模块设计产品经理、开发者
sql.md数据库表结构、存储过程、触发器数据库开发者、DBA
config.md环境配置、部署指南运维工程师、开发者

项目特色

  • ✅ Flask 基础功能学习与实践
  • ✅ 完整的用户认证系统(注册、登录、邮箱验证)
  • ✅ 问答系统核心功能
  • ✅ 数据库高级特性应用
  • ✅ 用户行为审计与日志记录
  • ✅ 点赞功能与统计
  • ✅ 数据库触发器实现自动化日志功能

系统需求分析

功能需求

  1. 用户管理模块

    • 用户注册(邮箱验证码验证)
    • 用户登录/退出
    • 用户信息管理
  2. 问答模块

    • 发布问题
    • 回答问题
    • 问题点赞功能
    • 问题列表展示
  3. 审计模块

    • 用户登录日志记录
    • 回答操作审计日志
    • 系统行为追踪

非功能需求

  • 数据一致性保障
  • 操作审计追踪
  • 系统安全性
  • 数据库性能优化

系统概念模型设计(E-R图)

核心实体

  • 用户(User):用户基本信息
  • 问题(Question):用户发布的问题
  • 回答(Answer):对问题的回答
  • 邮箱验证码(EmailCaptcha):注册验证码
  • 问题点赞(QuestionLikes):点赞关系

审计实体

  • 用户登录日志(UserLoginLog):登录行为记录
  • 回答审计日志(AnswerAuditLog):回答操作记录

数据库表设计

核心业务表

表名描述主要字段
user用户表id, username, password, email, join_time, last_login_time
question问题表id, title, content, create_time, author_id, likes_count
answer回答表id, content, create_time, question_id, author_id
email_captcha邮箱验证码表id, email, captcha, used, create_time
question_likes问题点赞表id, question_id, user_id, create_time

审计日志表

表名描述主要字段
user_login_log用户登录日志log_id, user_id, login_time, ip_address
answer_audit_log回答审计日志log_id, answer_id, operation_type, old_content, new_content

📋 详细信息: 完整的数据库设计和范式分析请参考 数据库设计文档

存储过程

1. 批量失效过期验证码

CALL sp_deactivate_old_unused_captchas(7); -- 失效7天前的验证码

2. 获取用户活跃度统计

CALL sp_get_user_activity_summary(2); -- 获取用户ID为2的活跃度统计

触发器功能

1. 自动化日志记录

  • 回答操作日志:自动记录回答的增删改操作
  • 用户登录日志:自动记录用户登录行为

2. 业务逻辑触发

  • 问题更新时间:有新回答时自动更新问题的最后修改时间
  • 点赞数统计:点赞/取消点赞时自动更新问题点赞数

3. 数据一致性保障

  • 确保点赞数与实际点赞记录一致
  • 保证审计日志的完整性

项目结构

flask-basic/
├── README.md # 项目说明文档
├── require.md # 需求分析文档
├── sql.md # 数据库设计文档
├── config.md # 配置文件说明
├── flask_basic.sql # 数据库结构与数据
├── .gitignore # Git忽略文件配置
├── requirements.txt # Python依赖包(需要)
├── app.py # Flask应用主文件(需要)
├── models/ # 数据模型(需要)
├── templates/ # HTML模板(需要)
├── static/ # 静态文件(需要)
└── migrations/ # 数据库迁移文件

技术栈

  • 后端框架:Flask
  • 数据库:MySQL 8.0
  • ORM:Flask-SQLAlchemy
  • 数据库迁移:Flask-Migrate
  • 密码加密:Werkzeug Security
  • 邮件发送:Flask-Mail

安装与运行

1. 环境准备

# 创建虚拟环境
python -m venv venv
# 激活虚拟环境
venv\Scripts\activate # Windowssource venv/bin/activate # Linux/Mac# 安装依赖
pip install -r requirements.txt

2. 数据库配置

# 导入数据库结构
mysql -u root -p < flask_basic.sql

⚙️ 配置指南: 详细的配置步骤请参考 配置文件说明

3. 运行应用

python app.py

数据库特性亮点

1. 完整的审计系统

  • 所有回答操作都有完整的审计日志
  • 用户登录行为全程追踪
  • 支持数据恢复和问题追溯

2. 自动化触发器

  • 业务逻辑自动化处理
  • 数据一致性自动保障
  • 减少应用层代码复杂度

3. 存储过程优化

  • 批量数据处理效率高
  • 复杂查询逻辑封装
  • 数据库层面的业务逻辑

4. 规范的表设计

  • 符合数据库设计规范
  • 完整的外键约束
  • 合理的索引设计

未来扩展

  • 添加用户权限管理
  • 实现问题分类功能
  • 添加搜索功能
  • 实现消息通知系统
  • 添加文件上传功能
  • 实现API接口

项目总结

本项目完整地展示了:

  • Flask Web开发的核心概念
  • MySQL数据库的高级特性应用
  • 存储过程和触发器的实际使用
  • 系统审计和日志记录的最佳实践
  • 数据库设计的规范性和扩展性

这是一个很好的数据库项目实践案例,涵盖了从系统分析、概念模型设计到具体实现的完整流程。


📖 更多详细信息请查看相关文档

About

数据库课程项目

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
This repository was archived by the owner on Oct 21, 2025. It is now read-only.

Repository files navigation

Flask Basic - 数据库项目实践

项目概述

本项目是一个基于 Flask 框架的问答系统,实现了用户注册、登录、发布问题、回答问题等核心功能。项目采用 MySQL 数据库,包含完整的数据库设计、存储过程、触发器等高级特性。

📚 项目文档

核心文档

快速导航

文档描述适用人群
require.md系统需求分析、功能模块设计产品经理、开发者
sql.md数据库表结构、存储过程、触发器数据库开发者、DBA
config.md环境配置、部署指南运维工程师、开发者

项目特色

  • ✅ Flask 基础功能学习与实践
  • ✅ 完整的用户认证系统(注册、登录、邮箱验证)
  • ✅ 问答系统核心功能
  • ✅ 数据库高级特性应用
  • ✅ 用户行为审计与日志记录
  • ✅ 点赞功能与统计
  • ✅ 数据库触发器实现自动化日志功能

系统需求分析

功能需求

  1. 用户管理模块

    • 用户注册(邮箱验证码验证)
    • 用户登录/退出
    • 用户信息管理
  2. 问答模块

    • 发布问题
    • 回答问题
    • 问题点赞功能
    • 问题列表展示
  3. 审计模块

    • 用户登录日志记录
    • 回答操作审计日志
    • 系统行为追踪

非功能需求

  • 数据一致性保障
  • 操作审计追踪
  • 系统安全性
  • 数据库性能优化

系统概念模型设计(E-R图)

核心实体

  • 用户(User):用户基本信息
  • 问题(Question):用户发布的问题
  • 回答(Answer):对问题的回答
  • 邮箱验证码(EmailCaptcha):注册验证码
  • 问题点赞(QuestionLikes):点赞关系

审计实体

  • 用户登录日志(UserLoginLog):登录行为记录
  • 回答审计日志(AnswerAuditLog):回答操作记录

数据库表设计

核心业务表

表名描述主要字段
user用户表id, username, password, email, join_time, last_login_time
question问题表id, title, content, create_time, author_id, likes_count
answer回答表id, content, create_time, question_id, author_id
email_captcha邮箱验证码表id, email, captcha, used, create_time
question_likes问题点赞表id, question_id, user_id, create_time

审计日志表

表名描述主要字段
user_login_log用户登录日志log_id, user_id, login_time, ip_address
answer_audit_log回答审计日志log_id, answer_id, operation_type, old_content, new_content

📋 详细信息: 完整的数据库设计和范式分析请参考 数据库设计文档

存储过程

1. 批量失效过期验证码

CALL sp_deactivate_old_unused_captchas(7); -- 失效7天前的验证码

2. 获取用户活跃度统计

CALL sp_get_user_activity_summary(2); -- 获取用户ID为2的活跃度统计

触发器功能

1. 自动化日志记录

  • 回答操作日志:自动记录回答的增删改操作
  • 用户登录日志:自动记录用户登录行为

2. 业务逻辑触发

  • 问题更新时间:有新回答时自动更新问题的最后修改时间
  • 点赞数统计:点赞/取消点赞时自动更新问题点赞数

3. 数据一致性保障

  • 确保点赞数与实际点赞记录一致
  • 保证审计日志的完整性

项目结构

flask-basic/
├── README.md # 项目说明文档
├── require.md # 需求分析文档
├── sql.md # 数据库设计文档
├── config.md # 配置文件说明
├── flask_basic.sql # 数据库结构与数据
├── .gitignore # Git忽略文件配置
├── requirements.txt # Python依赖包(需要)
├── app.py # Flask应用主文件(需要)
├── models/ # 数据模型(需要)
├── templates/ # HTML模板(需要)
├── static/ # 静态文件(需要)
└── migrations/ # 数据库迁移文件

技术栈

  • 后端框架:Flask
  • 数据库:MySQL 8.0
  • ORM:Flask-SQLAlchemy
  • 数据库迁移:Flask-Migrate
  • 密码加密:Werkzeug Security
  • 邮件发送:Flask-Mail

安装与运行

1. 环境准备

# 创建虚拟环境
python -m venv venv
# 激活虚拟环境
venv\Scripts\activate # Windowssource venv/bin/activate # Linux/Mac# 安装依赖
pip install -r requirements.txt

2. 数据库配置

# 导入数据库结构
mysql -u root -p < flask_basic.sql

⚙️ 配置指南: 详细的配置步骤请参考 配置文件说明

3. 运行应用

python app.py

数据库特性亮点

1. 完整的审计系统

  • 所有回答操作都有完整的审计日志
  • 用户登录行为全程追踪
  • 支持数据恢复和问题追溯

2. 自动化触发器

  • 业务逻辑自动化处理
  • 数据一致性自动保障
  • 减少应用层代码复杂度

3. 存储过程优化

  • 批量数据处理效率高
  • 复杂查询逻辑封装
  • 数据库层面的业务逻辑

4. 规范的表设计

  • 符合数据库设计规范
  • 完整的外键约束
  • 合理的索引设计

未来扩展

  • 添加用户权限管理
  • 实现问题分类功能
  • 添加搜索功能
  • 实现消息通知系统
  • 添加文件上传功能
  • 实现API接口

项目总结

本项目完整地展示了:

  • Flask Web开发的核心概念
  • MySQL数据库的高级特性应用
  • 存储过程和触发器的实际使用
  • 系统审计和日志记录的最佳实践
  • 数据库设计的规范性和扩展性

这是一个很好的数据库项目实践案例,涵盖了从系统分析、概念模型设计到具体实现的完整流程。


📖 更多详细信息请查看相关文档

About

数据库课程项目

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Universal Dark Mode - works on any site (function() { var enabled = true; function applyDarkMode() { if (!enabled) return; // Create style element if it doesn't exist var style = document.getElementById('universal-dark-mode-style'); if (!style) { style = document.createElement('style'); style.id = 'universal-dark-mode-style'; document.head.appendChild(style); } // Dark mode CSS - inverts colors but preserves images/video style.textContent = ' /* Invert everything except media */ html { filter: invert(1) hue-rotate(180deg) !important; background: #1a1a2e !important; } /* Restore images, videos, iframes, canvas */ img, video, iframe, canvas, svg, picture, [style*="background-image"] { filter: invert(1) hue-rotate(180deg) !important; } /* Preserve specific elements that should not be inverted */ .no-dark-mode, .no-dark-mode *, [data-theme="light"], [data-theme="light"], .ace_editor, .ace_editor *, .CodeMirror, .CodeMirror *, .monaco-editor, .monaco-editor *, .markdown-body pre, .markdown-body pre *, .highlight, .highlight *, pre code, pre code * { filter: none !important; } /* Fix common UI elements */ .modal, .popup, .dropdown-menu, .tooltip, .popover { filter: invert(1) hue-rotate(180deg) !important; background: #2d2d44 !important; border-color: #444 !important; } /* Scrollbars */ ::-webkit-scrollbar { background: #1a1a2e !important; } ::-webkit-scrollbar-thumb { background: #444 !important; } ::-webkit-scrollbar-thumb:hover { background: #555 !important; } /* Selection */ ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; } ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; } '; } function removeDarkMode() { var style = document.getElementById('universal-dark-mode-style'); if (style) style.remove(); } // Toggle with Alt+Shift+D document.addEventListener('keydown', function(e) { if (e.altKey && e.shiftKey && e.key === 'D') { e.preventDefault(); enabled = !enabled; if (enabled) { applyDarkMode(); console.log('[Universal Dark Mode] Enabled'); } else { removeDarkMode(); console.log('[Universal Dark Mode] Disabled'); } } }); // Apply on load applyDarkMode(); // Re-apply on dynamic content var observer = new MutationObserver(function(mutations) { if (enabled && !document.getElementById('universal-dark-mode-style')) { applyDarkMode(); } }); observer.observe(document.head, { childList: true }); console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle'); })(); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content
This repository was archived by the owner on Oct 21, 2025. It is now read-only.

Repository files navigation

Flask Basic - 数据库项目实践

项目概述

本项目是一个基于 Flask 框架的问答系统,实现了用户注册、登录、发布问题、回答问题等核心功能。项目采用 MySQL 数据库,包含完整的数据库设计、存储过程、触发器等高级特性。

📚 项目文档

核心文档

快速导航

文档描述适用人群
require.md系统需求分析、功能模块设计产品经理、开发者
sql.md数据库表结构、存储过程、触发器数据库开发者、DBA
config.md环境配置、部署指南运维工程师、开发者

项目特色

  • ✅ Flask 基础功能学习与实践
  • ✅ 完整的用户认证系统(注册、登录、邮箱验证)
  • ✅ 问答系统核心功能
  • ✅ 数据库高级特性应用
  • ✅ 用户行为审计与日志记录
  • ✅ 点赞功能与统计
  • ✅ 数据库触发器实现自动化日志功能

系统需求分析

功能需求

  1. 用户管理模块

    • 用户注册(邮箱验证码验证)
    • 用户登录/退出
    • 用户信息管理
  2. 问答模块

    • 发布问题
    • 回答问题
    • 问题点赞功能
    • 问题列表展示
  3. 审计模块

    • 用户登录日志记录
    • 回答操作审计日志
    • 系统行为追踪

非功能需求

  • 数据一致性保障
  • 操作审计追踪
  • 系统安全性
  • 数据库性能优化

系统概念模型设计(E-R图)

核心实体

  • 用户(User):用户基本信息
  • 问题(Question):用户发布的问题
  • 回答(Answer):对问题的回答
  • 邮箱验证码(EmailCaptcha):注册验证码
  • 问题点赞(QuestionLikes):点赞关系

审计实体

  • 用户登录日志(UserLoginLog):登录行为记录
  • 回答审计日志(AnswerAuditLog):回答操作记录

数据库表设计

核心业务表

表名描述主要字段
user用户表id, username, password, email, join_time, last_login_time
question问题表id, title, content, create_time, author_id, likes_count
answer回答表id, content, create_time, question_id, author_id
email_captcha邮箱验证码表id, email, captcha, used, create_time
question_likes问题点赞表id, question_id, user_id, create_time

审计日志表

表名描述主要字段
user_login_log用户登录日志log_id, user_id, login_time, ip_address
answer_audit_log回答审计日志log_id, answer_id, operation_type, old_content, new_content

📋 详细信息: 完整的数据库设计和范式分析请参考 数据库设计文档

存储过程

1. 批量失效过期验证码

CALL sp_deactivate_old_unused_captchas(7); -- 失效7天前的验证码

2. 获取用户活跃度统计

CALL sp_get_user_activity_summary(2); -- 获取用户ID为2的活跃度统计

触发器功能

1. 自动化日志记录

  • 回答操作日志:自动记录回答的增删改操作
  • 用户登录日志:自动记录用户登录行为

2. 业务逻辑触发

  • 问题更新时间:有新回答时自动更新问题的最后修改时间
  • 点赞数统计:点赞/取消点赞时自动更新问题点赞数

3. 数据一致性保障

  • 确保点赞数与实际点赞记录一致
  • 保证审计日志的完整性

项目结构

flask-basic/
├── README.md # 项目说明文档
├── require.md # 需求分析文档
├── sql.md # 数据库设计文档
├── config.md # 配置文件说明
├── flask_basic.sql # 数据库结构与数据
├── .gitignore # Git忽略文件配置
├── requirements.txt # Python依赖包(需要)
├── app.py # Flask应用主文件(需要)
├── models/ # 数据模型(需要)
├── templates/ # HTML模板(需要)
├── static/ # 静态文件(需要)
└── migrations/ # 数据库迁移文件

技术栈

  • 后端框架:Flask
  • 数据库:MySQL 8.0
  • ORM:Flask-SQLAlchemy
  • 数据库迁移:Flask-Migrate
  • 密码加密:Werkzeug Security
  • 邮件发送:Flask-Mail

安装与运行

1. 环境准备

# 创建虚拟环境
python -m venv venv
# 激活虚拟环境
venv\Scripts\activate # Windowssource venv/bin/activate # Linux/Mac# 安装依赖
pip install -r requirements.txt

2. 数据库配置

# 导入数据库结构
mysql -u root -p < flask_basic.sql

⚙️ 配置指南: 详细的配置步骤请参考 配置文件说明

3. 运行应用

python app.py

数据库特性亮点

1. 完整的审计系统

  • 所有回答操作都有完整的审计日志
  • 用户登录行为全程追踪
  • 支持数据恢复和问题追溯

2. 自动化触发器

  • 业务逻辑自动化处理
  • 数据一致性自动保障
  • 减少应用层代码复杂度

3. 存储过程优化

  • 批量数据处理效率高
  • 复杂查询逻辑封装
  • 数据库层面的业务逻辑

4. 规范的表设计

  • 符合数据库设计规范
  • 完整的外键约束
  • 合理的索引设计

未来扩展

  • 添加用户权限管理
  • 实现问题分类功能
  • 添加搜索功能
  • 实现消息通知系统
  • 添加文件上传功能
  • 实现API接口

项目总结

本项目完整地展示了:

  • Flask Web开发的核心概念
  • MySQL数据库的高级特性应用
  • 存储过程和触发器的实际使用
  • 系统审计和日志记录的最佳实践
  • 数据库设计的规范性和扩展性

这是一个很好的数据库项目实践案例,涵盖了从系统分析、概念模型设计到具体实现的完整流程。


📖 更多详细信息请查看相关文档

About

数据库课程项目

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages