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

120 lines
4.5 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. **`users` 表**(重复)
-`pages/user/test/USER_AUTH_SCHEMA.sql` (第 63-71 行)
-`pages/mall/analytics/test/01_create_tables.sql` (第 43-51 行)
- **状态**:两个定义相同,使用 `CREATE TABLE IF NOT EXISTS` 不会冲突,但建议统一
### 2. **`user_sessions` 表**(重复,定义略有不同)
-`pages/user/test/USER_AUTH_SCHEMA.sql` (第 76-86 行) - **完整定义**(推荐)
-`pages/mall/analytics/test/01_create_tables.sql` (第 24-34 行) - **完整定义**(相同)
- ⚠️ `pages/mall/analytics/test/ANALYTICS_DB_SCHEMA.sql` (第 19-25 行) - **简化定义**(字段较少)
### 3. **`page_views` 表**(重复,定义不同)
-`pages/mall/analytics/test/01_create_tables.sql` (第 90-99 行) - **完整定义**(推荐)
- ⚠️ `pages/mall/analytics/test/ANALYTICS_DB_SCHEMA.sql` (第 30-36 行) - **简化定义**(字段较少)
### 4. **`update_updated_at_column` 函数**(重复)
-`pages/user/test/USER_AUTH_SCHEMA.sql` (第 93-99 行)
-`pages/mall/analytics/test/01_create_tables.sql` (第 107-113 行)
- **状态**:两个定义相同,使用 `CREATE OR REPLACE FUNCTION` 不会冲突
### 5. **触发器**(部分重复)
- `USER_AUTH_SCHEMA.sql`: `update_users_updated_at`, `update_user_sessions_updated_at`
- `01_create_tables.sql`: `update_orders_updated_at`, `update_user_sessions_updated_at`, `update_users_updated_at`
---
## 🎯 整理方案
### 方案一:保持现状(推荐)
**优点**:每个文件独立,使用 `IF NOT EXISTS``CREATE OR REPLACE` 不会冲突
**缺点**:有重复代码
**执行顺序**
1. `pages/user/test/USER_AUTH_SCHEMA.sql` - 创建用户认证相关表
2. `pages/mall/analytics/test/01_create_tables.sql` - 创建业务表(会跳过已存在的表)
3. `pages/mall/analytics/test/ANALYTICS_DB_SCHEMA.sql` - 创建分析表(会跳过已存在的表)
### 方案二:统一到基础表文件(更清晰)
**优点**:减少重复,职责清晰
**缺点**:需要重构文件结构
**建议结构**
- `00_base_tables.sql` - 基础表users, user_sessions, page_views
- `01_user_auth.sql` - 用户认证表ak_users和函数
- `02_business_tables.sql` - 业务表orders, products, merchants等
- `03_analytics_tables.sql` - 分析表analytics_*
---
## 📝 当前文件职责
### `pages/user/test/` 目录
- **`USER_AUTH_SCHEMA.sql`** - 用户认证核心表ak_users, users, user_sessions和 RPC 函数
- **`USER_AUTH_TRIGGER.sql`** - 数据库触发器(自动创建 ak_users
- **`USER_AUTH_TEST_DATA.sql`** - 测试数据
### `pages/mall/analytics/test/` 目录
- **`01_create_tables.sql`** - 业务表orders, users, user_sessions, products, merchants, order_items, page_views+ RLS
- **`ANALYTICS_DB_SCHEMA.sql`** - 分析表analytics_*+ RPC 函数
- **`02_insert_test_data.sql`** - 业务表测试数据
- **`ANALYTICS_TEST_SEED.sql`** - 分析表测试数据
- **`03_test_queries.sql`** - 测试查询
- **`04_cleanup.sql`** - 清理脚本
---
## ✅ 推荐操作
### 立即执行(保持现状)
当前文件结构可以使用,因为:
1. 所有表使用 `CREATE TABLE IF NOT EXISTS`
2. 所有函数使用 `CREATE OR REPLACE FUNCTION`
3. 触发器使用 `CREATE TRIGGER IF NOT EXISTS``DROP TRIGGER IF EXISTS`
**执行顺序**
```sql
-- 1. 用户认证表
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. 分析表(会跳过已存在的 user_sessions, page_views
pages/mall/analytics/test/ANALYTICS_DB_SCHEMA.sql
```
### 未来优化(可选)
如果需要减少重复,可以:
1.`ANALYTICS_DB_SCHEMA.sql` 中移除 `user_sessions``page_views` 的简化定义
2. 确保 `01_create_tables.sql` 先执行,提供完整定义
3.`ANALYTICS_DB_SCHEMA.sql` 中添加注释说明依赖关系
---
## 🔍 验证重复
执行以下查询检查表是否存在:
```sql
-- 检查 users 表
SELECT column_name, data_type
FROM information_schema.columns
WHERE table_name = 'users' AND table_schema = 'public';
-- 检查 user_sessions 表
SELECT column_name, data_type
FROM information_schema.columns
WHERE table_name = 'user_sessions' AND table_schema = 'public';
-- 检查 page_views 表
SELECT column_name, data_type
FROM information_schema.columns
WHERE table_name = 'page_views' AND table_schema = 'public';
```