Files
medical-mall/mall_sql/README.md
2026-01-30 16:11:23 +08:00

355 lines
9.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Mall SQL 数据库脚本集合
> **电商商城系统** - PostgreSQL + Supabase 数据库脚本总目录
---
## 📁 目录结构
```
mall_sql/
├── schemas/ # 数据库表结构定义
├── migrations/ # 数据库迁移/升级脚本
├── tests/ # 测试和验证脚本
├── subscription/ # 订阅系统专用脚本
├── scripts/ # 迁移脚本 (migrate.sh/ps1)
├── docs/ # 数据库文档
├── deploy.sh # Linux/Mac 自动部署脚本
├── deploy.bat # Windows 自动部署脚本
└── README.md # 本文件
```
---
## 🚀 快速开始
### 首次部署(全新数据库)
```bash
# 1. 执行完整数据库创建
psql -h db.example.com -U postgres -d akmon -f schemas/complete_mall_database.sql
# 2. 创建测试用户和模拟数据
psql -h db.example.com -U postgres -d akmon -f tests/mock_data_insert.sql
```
### 增量升级(已有数据库)
```bash
# 1. 先检查数据库状态
psql -h db.example.com -U postgres -d akmon -f tests/mall_database_check.sql
# 2. 执行增量升级
psql -h db.example.com -U postgres -d akmon -f migrations/mall_alter_upgrade.sql
```
---
## 📦 schemas/ - 数据库表结构
| 文件 | 说明 | 执行顺序 |
|------|------|----------|
| `complete_mall_database.sql` | 完整商城数据库21个表**推荐** | 1 |
| `ak_contents_product_extension.sql` | **备选方案**: 基于ak_contents扩展商品 | - |
| `product_database.sql` | 商品相关表补充 | 2 |
| `mall_seo_security.sql` | SEO优化和安全策略 | 3 |
### 两种实现方案
**方案一: 独立商城表(推荐)**
- 使用 `ml_products` 等独立表
- 执行: `complete_mall_database.sql`
- 优点: 职责清晰,不影响资讯系统
**方案二: 扩展ak_contents表备选**
- 复用 `ak_contents` 表,添加商品字段
- 执行: `ak_contents_product_extension.sql`
- 优点: 统一内容管理,但混合了资讯和商品
### complete_mall_database.sql
完整的商城系统数据库定义,包含:
**用户模块**:
- `ml_user_profiles` - 用户扩展信息
- `ml_user_addresses` - 用户地址
**商品模块**:
- `ml_categories` - 商品分类
- `ml_brands` - 品牌
- `ml_products` - 商品主表
- `ml_product_skus` - SKU规格
- `ml_product_images` - 商品图片
**订单模块**:
- `ml_orders` - 订单主表
- `ml_order_items` - 订单明细
- `ml_order_status_log` - 订单状态日志
**配送模块**:
- `ml_delivery_tasks` - 配送任务
- `ml_delivery_tracking` - 配送跟踪
**支付模块**:
- `ml_payments` - 支付记录
**营销模块**:
- `ml_coupons` - 优惠券
- `ml_user_coupons` - 用户优惠券
**订阅模块**:
- `ml_subscriptions` - 订阅计划
- `ml_user_subscriptions` - 用户订阅
---
## 🔄 migrations/ - 数据库迁移
| 文件 | 说明 | 使用场景 |
|------|------|----------|
| `mall_alter_upgrade.sql` | 完整增量升级 | 生产环境升级 |
| `mall_fields_only_upgrade.sql` | 仅字段升级 | 最小化修改 |
| `quick_role_migration.sql` | 角色字段快速迁移 | user_type→role |
| `mall_migration.sql` | 通用迁移脚本 | 兼容性处理 |
| `role_field_unification.sql` | 角色字段统一 | 数据一致性 |
| `role_field_cleanup.sql` | 角色字段清理 | 清理冗余字段 |
| `user_compatibility_implementation.sql` | 用户兼容性实现 | 跨模块兼容 |
### 重要迁移说明
**角色字段统一**:
- 旧字段: `user_type` (INTEGER)
- 新字段: `role` (TEXT)
- 迁移脚本: `quick_role_migration.sql`
**角色值映射**:
| user_type | role |
|-----------|------|
| 1 | 'admin' |
| 2 | 'merchant' |
| 3 | 'customer' |
| 4 | 'delivery' |
| 5 | 'service' |
---
## 🧪 tests/ - 测试和验证
| 文件 | 说明 |
|------|------|
| `mall_database_check.sql` | 数据库状态检查 |
| `validation_test.sql` | 数据完整性验证 |
| `verify_mock_data_fix.sql` | 模拟数据修复验证 |
| `mock_data_insert.sql` | 创建测试数据 |
| `create_supabase_auth_users.sql` | 创建Supabase Auth用户 |
### 测试数据说明
`mock_data_insert.sql` 创建以下测试数据:
- 1个管理员
- 2个商家
- 10个商品
- 3个客户
- 20个订单
- 2个配送员
- 5个配送任务
---
## 📬 subscription/ - 订阅系统
| 文件 | 说明 |
|------|------|
| `create_mall_subscription_tables.sql` | 订阅表创建 |
| `subscription_guard_trigger.sql` | 订阅守护触发器 |
| `subscription_rls_policies.sql` | 订阅RLS安全策略 |
### 订阅系统表
- `ml_subscriptions` - 订阅计划定义
- `ml_user_subscriptions` - 用户订阅记录
- `ml_subscription_payments` - 订阅支付记录
---
## 📚 docs/ - 文档
### 核心文档
| 文件 | 说明 |
|------|------|
| `MALL_README.md` | 商城系统主文档 |
| `TECHNICAL_IMPLEMENTATION.md` | 技术实现详解 |
| `MODULE_ANALYSIS.md` | 模块分析 |
### 部署与升级
| 文件 | 说明 |
|------|------|
| `UPGRADE_GUIDE.md` | 数据库升级指南 |
| `MIGRATION_GUIDE.md` | 迁移指南 |
| `QUICK_START_MIGRATION.md` | 快速迁移指南 |
| `MIGRATION_CHECKLIST.md` | 迁移检查清单 |
| `MIGRATION_SUMMARY.md` | 迁移总结 |
| `complete_deployment_guide.md` | 完整部署指南 |
| `deployment_guide.md` | 部署指南 |
| `migration_complete_report.md` | 迁移完成报告 |
### 角色与权限
| 文件 | 说明 |
|------|------|
| `ROLE_FIELD_SUMMARY.md` | 角色字段变更总结 |
| `ROLE_FIELD_FIX_REPORT.md` | 角色字段修复报告 |
| `user_reuse_summary.md` | 用户复用总结 |
### 问题修复报告
| 文件 | 说明 |
|------|------|
| `VARIABLE_CONFLICT_FIX_REPORT.md` | 变量冲突修复 |
| `database_syntax_fix_report.md` | 数据库语法修复 |
| `type_error_fix_report.md` | 类型错误修复 |
### 测试与数据
| 文件 | 说明 |
|------|------|
| `mock_data_documentation.md` | 测试数据文档 |
| `database_creation_report.md` | 数据库创建报告 |
| `FRONTEND_BACKEND_DEBUGGING.md` | 前后端调试指南 |
### SEO与优化
| 文件 | 说明 |
|------|------|
| `seo_optimization_guide.md` | SEO优化指南 |
| `seo_optimization_report.md` | SEO优化报告 |
### 订阅系统
| 文件 | 说明 |
|------|------|
| `README_subscription_consumer.md` | 订阅系统说明 |
| `裂变红包.md` | 裂变红包功能 |
### 页面报告
| 目录 | 说明 |
|------|------|
| `docs/reports/` | 页面生成报告 |
| `docs/analysis/` | 兼容性分析 |
---
## 🗄️ 数据库表总览
```
akmon (PostgreSQL Database)
├── public.ak_users # 用户主表(共享)
└── public.ml_* (商城系统表21张)
├── ml_user_profiles # 用户扩展信息
├── ml_user_addresses # 用户地址
├── ml_categories # 商品分类
├── ml_brands # 品牌
├── ml_products # 商品
├── ml_product_skus # SKU
├── ml_product_images # 商品图片
├── ml_orders # 订单
├── ml_order_items # 订单明细
├── ml_order_status_log # 订单日志
├── ml_delivery_tasks # 配送任务
├── ml_delivery_tracking # 配送跟踪
├── ml_payments # 支付
├── ml_coupons # 优惠券
├── ml_user_coupons # 用户优惠券
├── ml_subscriptions # 订阅计划
├── ml_user_subscriptions # 用户订阅
├── ml_subscription_payments # 订阅支付
├── ml_merchant_profiles # 商家资料
├── ml_delivery_staff # 配送员
└── ml_notifications # 通知
```
---
## 🔧 常用SQL操作
### 检查表是否存在
```sql
SELECT table_name, table_type
FROM information_schema.tables
WHERE table_schema = 'public'
AND table_name LIKE 'ml_%'
ORDER BY table_name;
```
### 查看表结构
```sql
\d+ public.ml_products
-- 或
SELECT column_name, data_type, is_nullable, column_default
FROM information_schema.columns
WHERE table_schema = 'public'
AND table_name = 'ml_products'
ORDER BY ordinal_position;
```
### 检查索引
```sql
SELECT indexname, indexdef
FROM pg_indexes
WHERE schemaname = 'public'
AND tablename LIKE 'ml_%'
ORDER BY tablename, indexname;
```
### 检查RLS策略
```sql
SELECT schemaname, tablename, policyname, permissive, roles, cmd, qual
FROM pg_policies
WHERE schemaname = 'public'
AND tablename LIKE 'ml_%'
ORDER BY tablename, policyname;
```
---
## ⚠️ 注意事项
### 执行顺序
1. **全新部署**: 按以下顺序执行
- `schemas/complete_mall_database.sql`
- `schemas/product_database.sql`
- `schemas/mall_seo_security.sql`
- `subscription/create_mall_subscription_tables.sql`
- `tests/mock_data_insert.sql`
2. **增量升级**: 先检查后升级
- `tests/mall_database_check.sql`
- 根据检查结果选择合适的迁移脚本
- `tests/validation_test.sql`
### Supabase Auth 用户
在执行任何脚本之前,**必须先创建 Supabase Auth 用户**
```bash
psql -f tests/create_supabase_auth_users.sql
```
### 角色字段兼容性
如果你的数据库使用旧的 `user_type` 字段,请先执行角色迁移:
```bash
psql -f migrations/quick_role_migration.sql
```
---
## 📞 支持
如有问题,请查阅:
1. `docs/complete_deployment_guide.md` - 完整部署指南
2. `docs/UPGRADE_GUIDE.md` - 升级指南
3. `docs/ROLE_FIELD_SUMMARY.md` - 角色字段说明
---
**最后更新**: 2026-01-30
**维护者**: AKMON开发团队