docs(sql): 完成 #19 过期模块数据库脚本与校验
This commit is contained in:
+5
-2
@@ -16,10 +16,13 @@ CREATE TABLE IF NOT EXISTS expiry_items (
|
||||
quantity INT DEFAULT 1 COMMENT '数量',
|
||||
location VARCHAR(50) DEFAULT NULL COMMENT '存放位置(可选)',
|
||||
remark VARCHAR(255) DEFAULT NULL COMMENT '备注(可选)',
|
||||
status VARCHAR(20) DEFAULT 'normal' COMMENT '状态:normal/used/expired/discarded',
|
||||
status VARCHAR(20) DEFAULT 'normal' COMMENT '状态:normal/used/discarded(expiring/expired 由业务动态计算)',
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||||
deleted_at TIMESTAMP NULL DEFAULT NULL COMMENT '软删除时间',
|
||||
CONSTRAINT chk_expiry_category CHECK (category IN ('food', 'medicine', 'cosmetic', 'other')),
|
||||
CONSTRAINT chk_expiry_quantity CHECK (quantity > 0),
|
||||
CONSTRAINT chk_expiry_status CHECK (status IN ('normal', 'used', 'discarded')),
|
||||
|
||||
-- 索引
|
||||
INDEX idx_user_expiry (user_id, expiry_date) COMMENT '用户+过期日期索引(最常用查询)',
|
||||
@@ -34,7 +37,7 @@ CREATE TABLE IF NOT EXISTS expiry_items (
|
||||
CREATE TABLE IF NOT EXISTS expiry_user_settings (
|
||||
id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY COMMENT '主键ID',
|
||||
user_id BIGINT UNSIGNED NOT NULL UNIQUE COMMENT '用户ID(唯一)',
|
||||
remind_days JSON DEFAULT '[7,3,1]' COMMENT '提醒天数数组,例如 [7,3,1]',
|
||||
remind_days JSON DEFAULT (JSON_ARRAY(7,3,1)) COMMENT '提醒天数数组,例如 [7,3,1]',
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||||
|
||||
|
||||
@@ -0,0 +1,26 @@
|
||||
# Expiry DDL 验证报告(2026-03-04)
|
||||
|
||||
## 结论
|
||||
- `expiry_items`、`expiry_user_settings` 两张表结构已齐备。
|
||||
- 索引覆盖了用户维度的核心查询路径。
|
||||
- 已补充关键约束,降低脏数据进入数据库的风险。
|
||||
|
||||
## 本次补充项
|
||||
1. `expiry_items` 增加 `CHECK` 约束:
|
||||
- `category IN ('food', 'medicine', 'cosmetic', 'other')`
|
||||
- `quantity > 0`
|
||||
- `status IN ('normal', 'used', 'discarded')`
|
||||
|
||||
2. `expiry_user_settings.remind_days` 默认值改为:
|
||||
- `JSON_ARRAY(7,3,1)`
|
||||
|
||||
## 校验命令
|
||||
```sql
|
||||
SHOW CREATE TABLE expiry_items;
|
||||
SHOW CREATE TABLE expiry_user_settings;
|
||||
SHOW INDEX FROM expiry_items;
|
||||
SHOW INDEX FROM expiry_user_settings;
|
||||
```
|
||||
|
||||
## 兼容性说明
|
||||
- `CHECK` 约束在 MySQL 8.0+ 生效;若使用低版本,请在应用层保留同等校验逻辑。
|
||||
Reference in New Issue
Block a user