# 00 概览：商城数据库总体设计

## 目标与定位

本数据库设计面向 **PostgreSQL + Supabase** 的电商/订阅混合业务，核心目标：

- **统一用户体系复用**：复用 `public.ak_users`，商城域只做扩展（`ml_` 前缀）。
- **安全优先（Supabase 直连友好）**：使用 RLS（Row Level Security）+ `auth.uid()` 做行级数据隔离。
- **对外访问友好（SEO / URL）**：核心表同时提供 `UUID id`（内部主键）与 `SERIAL cid`（对外可读 ID），配合 `slug` 与 SEO 函数。
- **数据库承载关键一致性**：触发器/函数/约束实现 `updated_at` 自动维护、默认地址唯一、库存汇总、订单状态时间戳与销量累计等。
- **快速迭代与可扩展**：大量使用 `JSONB` 承载可变结构（属性、媒体、地址快照、适用范围、订阅 features/metadata 等）。

## SQL 资料来源

- 迁移/建库主脚本：
  - `doc_mall/database/mall_migration.sql`（偏幂等、增量迁移）
  - `doc_mall/database/complete_mall_database.sql`（偏一次性完整初始化，包含更多视图/函数/RLS/SEO）
- 订阅模块：`doc_mall/create_mall_subscription_tables.sql`
- 检查/测试脚本：`mall_sql/tests/mall_database_check.sql` 等

## 术语

- **SPU**：商品主表（本库对应 `ml_products`）
- **SKU**：商品规格明细（本库对应 `ml_product_skus`）
- **RLS**：Row Level Security（行级安全策略）

## 一句话总结

- **Supabase 优先**（RLS + `auth.uid()`）
- **快速迭代优先**（JSONB + 配置化）
- **数据库保证关键一致性**（触发器/函数/约束/视图）
- **对外可读与 SEO 友好**（`UUID id` + `SERIAL cid` + `slug`）
