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

116 lines
4.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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/` - 用户认证相关
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_sessions``page_views` 定义
3. **`02_insert_test_data.sql`**(可选)
- 业务表测试数据
4. **`ANALYTICS_TEST_SEED.sql`**(可选)
- 分析表测试数据
5. **`03_test_queries.sql`**(可选)
- 测试查询
6. **`04_cleanup.sql`**(可选)
- 清理脚本
---
## 🚀 推荐执行顺序
### 首次部署
```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.sql``01_create_tables.sql` 中的完整定义,移除 `ANALYTICS_DB_SCHEMA.sql` 中的简化定义
2.**`page_views` 表** - 保留在 `01_create_tables.sql` 中的完整定义,移除 `ANALYTICS_DB_SCHEMA.sql` 中的简化定义
### 保留的重复(安全)
1. **`users` 表** - 在 `USER_AUTH_SCHEMA.sql``01_create_tables.sql` 中都有定义,使用 `IF NOT EXISTS` 不会冲突
2. **`update_updated_at_column` 函数** - 在多个文件中定义,使用 `CREATE OR REPLACE FUNCTION` 不会冲突
3. **触发器** - 使用 `IF NOT EXISTS``DROP TRIGGER IF EXISTS` 确保不会冲突
---
## ✅ 验证
执行以下查询验证表结构:
```sql
-- 检查 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