接入数据库
This commit is contained in:
119
pages/SQL_FILES_ORGANIZATION.md
Normal file
119
pages/SQL_FILES_ORGANIZATION.md
Normal file
@@ -0,0 +1,119 @@
|
||||
# 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';
|
||||
```
|
||||
Reference in New Issue
Block a user