04_verify_system_structure.sql
5.09 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
-- Apple经销商ERP系统 - 系统表结构验证脚本
-- 创建时间: 2025-01-27
-- 版本: v1.0
SET NAMES utf8mb4;
USE apple_erp;
-- =========================================
-- 1. 验证表结构
-- =========================================
SELECT '=== 系统管理表结构验证 ===' AS message;
-- 检查表是否存在
SELECT
TABLE_NAME AS '表名',
TABLE_COMMENT AS '表注释',
TABLE_ROWS AS '记录数',
CREATE_TIME AS '创建时间'
FROM information_schema.TABLES
WHERE TABLE_SCHEMA = 'apple_erp'
AND TABLE_NAME LIKE 't_sys_%'
ORDER BY TABLE_NAME;
-- =========================================
-- 2. 验证索引结构
-- =========================================
SELECT '=== 系统管理表索引验证 ===' AS message;
SELECT
TABLE_NAME AS '表名',
INDEX_NAME AS '索引名',
COLUMN_NAME AS '字段名',
NON_UNIQUE AS '是否唯一',
INDEX_TYPE AS '索引类型'
FROM information_schema.STATISTICS
WHERE TABLE_SCHEMA = 'apple_erp'
AND TABLE_NAME LIKE 't_sys_%'
ORDER BY TABLE_NAME, INDEX_NAME, SEQ_IN_INDEX;
-- =========================================
-- 3. 验证外键约束
-- =========================================
SELECT '=== 系统管理表外键约束验证 ===' AS message;
SELECT
TABLE_NAME AS '表名',
CONSTRAINT_NAME AS '约束名',
COLUMN_NAME AS '字段名',
REFERENCED_TABLE_NAME AS '引用表名',
REFERENCED_COLUMN_NAME AS '引用字段名'
FROM information_schema.KEY_COLUMN_USAGE
WHERE TABLE_SCHEMA = 'apple_erp'
AND TABLE_NAME LIKE 't_sys_%'
AND REFERENCED_TABLE_NAME IS NOT NULL
ORDER BY TABLE_NAME, CONSTRAINT_NAME;
-- =========================================
-- 4. 验证基础数据
-- =========================================
SELECT '=== 系统基础数据验证 ===' AS message;
-- 用户数据验证
SELECT '用户数据:' AS info, COUNT(*) AS count FROM t_sys_user WHERE del_flag = '0';
-- 角色数据验证
SELECT '角色数据:' AS info, COUNT(*) AS count FROM t_sys_role WHERE del_flag = '0';
-- 菜单数据验证
SELECT '菜单数据:' AS info, COUNT(*) AS count FROM t_sys_menu WHERE del_flag = '0';
-- 字典类型数据验证
SELECT '字典类型数据:' AS info, COUNT(*) AS count FROM t_sys_dict_type WHERE del_flag = '0';
-- 字典项数据验证
SELECT '字典项数据:' AS info, COUNT(*) AS count FROM t_sys_dict_item WHERE del_flag = '0';
-- =========================================
-- 5. 验证用户角色关联
-- =========================================
SELECT '=== 用户角色关联验证 ===' AS message;
SELECT
u.username AS '用户名',
r.role_name AS '角色名',
ur.create_time AS '关联时间'
FROM t_sys_user u
JOIN t_sys_user_role ur ON u.user_id = ur.user_id
JOIN t_sys_role r ON ur.role_id = r.role_id
WHERE u.del_flag = '0' AND r.del_flag = '0' AND ur.del_flag = '0'
ORDER BY u.username, r.role_name;
-- =========================================
-- 6. 验证角色菜单关联
-- =========================================
SELECT '=== 角色菜单关联验证 ===' AS message;
SELECT
r.role_name AS '角色名',
m.menu_name AS '菜单名',
m.menu_type AS '菜单类型',
rm.create_time AS '关联时间'
FROM t_sys_role r
JOIN t_sys_role_menu rm ON r.role_id = rm.role_id
JOIN t_sys_menu m ON rm.menu_id = m.menu_id
WHERE r.del_flag = '0' AND m.del_flag = '0' AND rm.del_flag = '0'
ORDER BY r.role_name, m.sort;
-- =========================================
-- 7. 验证字典数据
-- =========================================
SELECT '=== 字典数据验证 ===' AS message;
SELECT
dt.dict_name AS '字典类型',
di.dict_label AS '字典标签',
di.dict_value AS '字典值',
di.sort AS '排序'
FROM t_sys_dict_type dt
JOIN t_sys_dict_item di ON dt.dict_type_id = di.dict_type_id
WHERE dt.del_flag = '0' AND di.del_flag = '0'
ORDER BY dt.dict_type, di.sort;
-- =========================================
-- 8. 数据完整性检查
-- =========================================
SELECT '=== 数据完整性检查 ===' AS message;
-- 检查用户角色关联完整性
SELECT
'用户角色关联完整性' AS check_item,
CASE
WHEN COUNT(*) = 0 THEN '通过'
ELSE CONCAT('失败: ', COUNT(*), ' 条记录')
END AS result
FROM t_sys_user_role ur
LEFT JOIN t_sys_user u ON ur.user_id = u.user_id
LEFT JOIN t_sys_role r ON ur.role_id = r.role_id
WHERE u.user_id IS NULL OR r.role_id IS NULL;
-- 检查角色菜单关联完整性
SELECT
'角色菜单关联完整性' AS check_item,
CASE
WHEN COUNT(*) = 0 THEN '通过'
ELSE CONCAT('失败: ', COUNT(*), ' 条记录')
END AS result
FROM t_sys_role_menu rm
LEFT JOIN t_sys_role r ON rm.role_id = r.role_id
LEFT JOIN t_sys_menu m ON rm.menu_id = m.menu_id
WHERE r.role_id IS NULL OR m.menu_id IS NULL;
-- 检查字典项关联完整性
SELECT
'字典项关联完整性' AS check_item,
CASE
WHEN COUNT(*) = 0 THEN '通过'
ELSE CONCAT('失败: ', COUNT(*), ' 条记录')
END AS result
FROM t_sys_dict_item di
LEFT JOIN t_sys_dict_type dt ON di.dict_type_id = dt.dict_type_id
WHERE dt.dict_type_id IS NULL;
SELECT '=== 系统表结构验证完成 ===' AS message;