9.6 KiB
9.6 KiB
Mall SQL 数据库脚本集合
电商商城系统 - PostgreSQL + Supabase 数据库脚本总目录
📁 目录结构
mall_sql/
├── schemas/ # 数据库表结构定义
├── migrations/ # 数据库迁移/升级脚本
├── tests/ # 测试和验证脚本
├── subscription/ # 订阅系统专用脚本
├── scripts/ # 迁移脚本 (migrate.sh/ps1)
├── docs/ # 数据库文档
├── deploy.sh # Linux/Mac 自动部署脚本
├── deploy.bat # Windows 自动部署脚本
└── README.md # 本文件
🚀 快速开始
首次部署(全新数据库)
# 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
增量升级(已有数据库)
# 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操作
检查表是否存在
SELECT table_name, table_type
FROM information_schema.tables
WHERE table_schema = 'public'
AND table_name LIKE 'ml_%'
ORDER BY table_name;
查看表结构
\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;
检查索引
SELECT indexname, indexdef
FROM pg_indexes
WHERE schemaname = 'public'
AND tablename LIKE 'ml_%'
ORDER BY tablename, indexname;
检查RLS策略
SELECT schemaname, tablename, policyname, permissive, roles, cmd, qual
FROM pg_policies
WHERE schemaname = 'public'
AND tablename LIKE 'ml_%'
ORDER BY tablename, policyname;
⚠️ 注意事项
执行顺序
-
全新部署: 按以下顺序执行
schemas/complete_mall_database.sqlschemas/product_database.sqlschemas/mall_seo_security.sqlsubscription/create_mall_subscription_tables.sqltests/mock_data_insert.sql
-
增量升级: 先检查后升级
tests/mall_database_check.sql- 根据检查结果选择合适的迁移脚本
tests/validation_test.sql
Supabase Auth 用户
在执行任何脚本之前,必须先创建 Supabase Auth 用户:
psql -f tests/create_supabase_auth_users.sql
角色字段兼容性
如果你的数据库使用旧的 user_type 字段,请先执行角色迁移:
psql -f migrations/quick_role_migration.sql
📞 支持
如有问题,请查阅:
docs/complete_deployment_guide.md- 完整部署指南docs/UPGRADE_GUIDE.md- 升级指南docs/ROLE_FIELD_SUMMARY.md- 角色字段说明
最后更新: 2026-01-30 维护者: AKMON开发团队