接入数据库

This commit is contained in:
comlibmb
2026-01-26 21:34:17 +08:00
parent c14f67cfc8
commit 3fbd9a2b3d
26 changed files with 3559 additions and 427 deletions

View 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';
```