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

9.6 KiB
Raw Permalink Blame History

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;

⚠️ 注意事项

执行顺序

  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 用户

psql -f tests/create_supabase_auth_users.sql

角色字段兼容性

如果你的数据库使用旧的 user_type 字段,请先执行角色迁移:

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开发团队