# Database2025 **Repository Path**: renshuo-wei/database2025 ## Basic Information - **Project Name**: Database2025 - **Description**: 数据库实践 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-01-04 - **Last Updated**: 2026-01-13 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 京东商城数据库逆向设计 (JD Mall DB Project) 本项目为数据库实践课程设计作业,旨在逆向设计京东商城的数据库架构,重点体现**自营仓储**、**拆单逻辑**及**SKU管理**等核心业务场景。 项目采用 **MySQL 8.0** 作为数据库,**Python Flask** 作为后端展示框架,**DBeaver** 作为数据库管理工具。 --- ## 📂 项目文件结构说明 ```text DB_Project/ ├── app.py # [入口] Flask Web 应用主程序,负责启动网页服务 ├── config.py # [配置] 数据库连接配置 + 表名与中文名的映射配置 ├── data_generator.py # [脚本] Python 数据生成脚本 (基于 Faker),用于生成测试数据 ├── jd_schema.sql # [SQL] 完整的建表 SQL 脚本 (包含12张核心表) ├── requirements.txt # [依赖] Python 依赖库列表 ├── templates/ # [前端] HTML 模板文件夹 │ ├── base.html # - 基础布局 (包含侧边栏导航) │ ├── index.html # - 首页概览 │ └── table_view.html # - 通用表格展示页 (核心) ├──utils/ │ └── db_utils.py # [工具] 封装数据库连接和通用查询函数 │ └── README.md # [文档] 项目说明文档 ``` --- ## 🚀 快速开始 ### 1. 环境准备 确保已安装 Python 3.x 和 MySQL 8.0。 ```bash # 安装依赖 pip install -r requirements.txt ``` ### 2. 数据库初始化 1. 在 MySQL 中创建数据库 `jd_mall`。 2. 使用 DBeaver 或命令行执行 `jd_schema.sql` 创建表结构。 3. 修改 `data_generator.py` 中的数据库密码配置。 4. 运行数据生成脚本: ```bash python data_generator.py ``` ### 3. 启动 Web 展示 ```bash python app.py ``` 访问浏览器:`http://127.0.0.1:5000` --- ## 🛠️ 如何修改与优化数据库 本项目采用了**通用化设计**,修改数据库结构后,前端展示通常**不需要写代码**。 ### 场景一:添加一个新的字段 (例如给用户表加“性别”) 1. **数据库操作**:在 DBeaver 中打开 `sys_user` 表,添加 `gender` 字段。 2. **前端操作**:**无需任何操作!** 刷新网页,新字段会自动出现在表格中(`db_utils.py` 会动态读取列名)。 ### 场景二:添加一张新的表 (例如“优惠券表”) 1. **数据库操作**: * 在 DBeaver 中新建表 `promotion_coupon`。 * 运行 SQL 或手动添加数据。 2. **代码配置**: * 打开 `config.py`。 * 在 `TABLE_MAPPING` 字典中添加一行: ```python 'promotion_coupon': '优惠券管理', ``` 3. **结果**:重启 Flask,左侧导航栏会自动出现“优惠券管理”,点击即可查看数据。 ### 场景三:性能优化 (课程设计重点) 如果你需要进行索引优化(Q3): 1. 使用 DBeaver 的 SQL 编辑器执行 `EXPLAIN SELECT ...` 分析慢查询。 2. 使用 `CREATE INDEX ...` 添加索引。 3. 再次运行查询对比时间。 4. **注意**:这些操作完全在数据库层面进行,不影响 Python 代码运行。 --- ## 📝 常用命令备忘 * **清空并重新生成数据**:直接运行 `python data_generator.py` (脚本内置了清空逻辑)。 * **导出数据**:使用 DBeaver 右键表名 -> 导出数据 -> CSV/SQL。 --- ## 👥 小组分工 * **组长**:仓储域设计、统筹 * **组员B**:交易域设计、性能优化 * **组员C**:商品域设计、数据生成 * **组员D**:前端展示、安全隐私