Files
medical-mall/pages/SQL_FILES_CLEANUP_SUMMARY.md
2026-01-26 21:34:17 +08:00

4.0 KiB
Raw Blame History

SQL 文件整理完成

已完成的整理

1. 移除重复的简化表定义

  • ANALYTICS_DB_SCHEMA.sql 中移除了简化的 user_sessionspage_views 定义
  • 添加了注释说明依赖关系

2. 添加依赖说明

  • 01_create_tables.sql 中添加了注释,说明可能与 USER_AUTH_SCHEMA.sql 重复
  • USER_AUTH_SCHEMA.sql 中添加了注释,说明可能与 01_create_tables.sql 重复

📋 当前文件结构

pages/user/test/ - 用户认证相关

  1. USER_AUTH_SCHEMA.sql

    • ak_users 表(业务用户资料)
    • users 表(统计用,可能与 analytics 重复)
    • user_sessions 表(会话统计,可能与 analytics 重复)
    • upsert_user_profile RPC 函数
    • handle_new_user 触发器函数(注释中)
  2. USER_AUTH_TRIGGER.sql

    • on_auth_user_created 触发器(在 auth.users 插入时自动创建 ak_users
  3. USER_AUTH_TEST_DATA.sql(可选)

    • 测试数据

pages/mall/analytics/test/ - 数据分析相关

  1. 01_create_tables.sql

    • 业务核心表:orders, order_items, products, merchants
    • 统计表:users, user_sessions, page_views(可能与 USER_AUTH_SCHEMA.sql 重复)
    • RLS 策略
    • update_updated_at_column 函数和触发器
  2. ANALYTICS_DB_SCHEMA.sql

    • 分析表:analytics_* 系列表
    • RPC 函数(用于数据分析)
    • 已移除:简化的 user_sessionspage_views 定义
  3. 02_insert_test_data.sql(可选)

    • 业务表测试数据
  4. ANALYTICS_TEST_SEED.sql(可选)

    • 分析表测试数据
  5. 03_test_queries.sql(可选)

    • 测试查询
  6. 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

🔍 重复内容说明

已处理的重复

  1. user_sessions - 保留在 USER_AUTH_SCHEMA.sql01_create_tables.sql 中的完整定义,移除 ANALYTICS_DB_SCHEMA.sql 中的简化定义
  2. page_views - 保留在 01_create_tables.sql 中的完整定义,移除 ANALYTICS_DB_SCHEMA.sql 中的简化定义

保留的重复(安全)

  1. users - 在 USER_AUTH_SCHEMA.sql01_create_tables.sql 中都有定义,使用 IF NOT EXISTS 不会冲突
  2. update_updated_at_column 函数 - 在多个文件中定义,使用 CREATE OR REPLACE FUNCTION 不会冲突
  3. 触发器 - 使用 IF NOT EXISTSDROP 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_at
  • page_views 应包含id, user_id, path, source, referrer, ip_address, user_agent, created_at