4.0 KiB
4.0 KiB
SQL 文件整理完成
✅ 已完成的整理
1. 移除重复的简化表定义
- ✅ 从
ANALYTICS_DB_SCHEMA.sql中移除了简化的user_sessions和page_views定义 - ✅ 添加了注释说明依赖关系
2. 添加依赖说明
- ✅ 在
01_create_tables.sql中添加了注释,说明可能与USER_AUTH_SCHEMA.sql重复 - ✅ 在
USER_AUTH_SCHEMA.sql中添加了注释,说明可能与01_create_tables.sql重复
📋 当前文件结构
pages/user/test/ - 用户认证相关
-
USER_AUTH_SCHEMA.sql⭐ak_users表(业务用户资料)users表(统计用,可能与 analytics 重复)user_sessions表(会话统计,可能与 analytics 重复)upsert_user_profileRPC 函数handle_new_user触发器函数(注释中)
-
USER_AUTH_TRIGGER.sql⭐on_auth_user_created触发器(在 auth.users 插入时自动创建 ak_users)
-
USER_AUTH_TEST_DATA.sql(可选)- 测试数据
pages/mall/analytics/test/ - 数据分析相关
-
01_create_tables.sql⭐- 业务核心表:
orders,order_items,products,merchants - 统计表:
users,user_sessions,page_views(可能与 USER_AUTH_SCHEMA.sql 重复) - RLS 策略
update_updated_at_column函数和触发器
- 业务核心表:
-
ANALYTICS_DB_SCHEMA.sql⭐- 分析表:
analytics_*系列表 - RPC 函数(用于数据分析)
- 已移除:简化的
user_sessions和page_views定义
- 分析表:
-
02_insert_test_data.sql(可选)- 业务表测试数据
-
ANALYTICS_TEST_SEED.sql(可选)- 分析表测试数据
-
03_test_queries.sql(可选)- 测试查询
-
04_cleanup.sql(可选)- 清理脚本
🚀 推荐执行顺序
首次部署
-- 1. 用户认证表(包含 users, user_sessions)
pages/user/test/USER_AUTH_SCHEMA.sql
pages/user/test/USER_AUTH_TRIGGER.sql
-- 2. 业务表(会跳过已存在的 users, user_sessions)
pages/mall/analytics/test/01_create_tables.sql
-- 3. 分析表(依赖业务表)
pages/mall/analytics/test/ANALYTICS_DB_SCHEMA.sql
-- 4. 测试数据(可选)
pages/mall/analytics/test/02_insert_test_data.sql
pages/mall/analytics/test/ANALYTICS_TEST_SEED.sql
后续更新
- 如果只更新分析表,只需执行
ANALYTICS_DB_SCHEMA.sql - 如果只更新业务表,只需执行
01_create_tables.sql - 如果只更新用户认证,只需执行
USER_AUTH_SCHEMA.sql
🔍 重复内容说明
已处理的重复
- ✅
user_sessions表 - 保留在USER_AUTH_SCHEMA.sql和01_create_tables.sql中的完整定义,移除ANALYTICS_DB_SCHEMA.sql中的简化定义 - ✅
page_views表 - 保留在01_create_tables.sql中的完整定义,移除ANALYTICS_DB_SCHEMA.sql中的简化定义
保留的重复(安全)
users表 - 在USER_AUTH_SCHEMA.sql和01_create_tables.sql中都有定义,使用IF NOT EXISTS不会冲突update_updated_at_column函数 - 在多个文件中定义,使用CREATE OR REPLACE FUNCTION不会冲突- 触发器 - 使用
IF NOT EXISTS或DROP TRIGGER IF EXISTS确保不会冲突
✅ 验证
执行以下查询验证表结构:
-- 检查 user_sessions 表字段(应该是完整定义)
SELECT column_name, data_type, is_nullable
FROM information_schema.columns
WHERE table_name = 'user_sessions' AND table_schema = 'public'
ORDER BY ordinal_position;
-- 检查 page_views 表字段(应该是完整定义)
SELECT column_name, data_type, is_nullable
FROM information_schema.columns
WHERE table_name = 'page_views' AND table_schema = 'public'
ORDER BY ordinal_position;
预期结果:
user_sessions应包含:id, user_id, session_token, last_active_at, is_active, ip_address, user_agent, created_at, updated_atpage_views应包含:id, user_id, path, source, referrer, ip_address, user_agent, created_at