64 lines
2.9 KiB
SQL
64 lines
2.9 KiB
SQL
-- =============================================================================
|
||||
|
|
-- IT-0 验收校验脚本(表 13-10 验收③ / MS-0)
|
|||
|
|
-- 预期:business_table_count = 59;missing_pk = 0;missing_gyid = 0
|
|||
|
|
-- 口径:apt_* 36 + gy_*/gygl_* 18 + duty_* 5 = 59(CR-02 表 3-25、公寓端/03 表 3-8)
|
|||
|
|
-- apt_ops_probe 为连通性探针表,显式排除,不计入 59 张。
|
|||
|
|
-- =============================================================================
|
|||
|
|
SELECT '=== 1. 业务表总数(应为 59)===' AS section;
|
|||
|
|
SELECT COUNT(*) AS business_table_count
|
|||
|
|
FROM information_schema.TABLES
|
|||
|
|
WHERE TABLE_SCHEMA = DATABASE()
|
|||
|
|
AND TABLE_TYPE = 'BASE TABLE'
|
|||
|
|
AND (TABLE_NAME LIKE 'apt\_%' OR TABLE_NAME LIKE 'gy\_%'
|
|||
|
|
OR TABLE_NAME LIKE 'gygl\_%' OR TABLE_NAME LIKE 'duty\_%')
|
|||
|
|
AND TABLE_NAME <> 'apt_ops_probe';
|
|||
|
|
|
|||
|
|
SELECT '=== 2. 分前缀分布(应为 apt 36 / gy 17 / gygl 1 / duty 5)===' AS section;
|
|||
|
|
SELECT CASE
|
|||
|
|
WHEN TABLE_NAME LIKE 'apt\_%' THEN 'apt'
|
|||
|
|
WHEN TABLE_NAME LIKE 'gygl\_%' THEN 'gygl'
|
|||
|
|
WHEN TABLE_NAME LIKE 'gy\_%' THEN 'gy'
|
|||
|
|
ELSE 'duty'
|
|||
|
|
END AS prefix, COUNT(*) AS cnt
|
|||
|
|
FROM information_schema.TABLES
|
|||
|
|
WHERE TABLE_SCHEMA = DATABASE()
|
|||
|
|
AND (TABLE_NAME LIKE 'apt\_%' OR TABLE_NAME LIKE 'gy\_%'
|
|||
|
|
OR TABLE_NAME LIKE 'gygl\_%' OR TABLE_NAME LIKE 'duty\_%')
|
|||
|
|
AND TABLE_NAME <> 'apt_ops_probe'
|
|||
|
|
GROUP BY prefix ORDER BY prefix;
|
|||
|
|
|
|||
|
|
SELECT '=== 3. 缺主键的业务表(应为 0 行)===' AS section;
|
|||
|
|
SELECT t.TABLE_NAME
|
|||
|
|
FROM information_schema.TABLES t
|
|||
|
|
WHERE t.TABLE_SCHEMA = DATABASE()
|
|||
|
|
AND (t.TABLE_NAME LIKE 'apt\_%' OR t.TABLE_NAME LIKE 'gy\_%'
|
|||
|
|
OR t.TABLE_NAME LIKE 'gygl\_%' OR t.TABLE_NAME LIKE 'duty\_%')
|
|||
|
|
AND t.TABLE_NAME <> 'apt_ops_probe'
|
|||
|
|
AND NOT EXISTS (
|
|||
|
|
SELECT 1 FROM information_schema.TABLE_CONSTRAINTS c
|
|||
|
|
WHERE c.TABLE_SCHEMA = t.TABLE_SCHEMA AND c.TABLE_NAME = t.TABLE_NAME
|
|||
|
|
AND c.CONSTRAINT_TYPE = 'PRIMARY KEY'
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
SELECT '=== 4. 缺 gyid 列的业务表(应为 0 行)===' AS section;
|
|||
|
|
SELECT t.TABLE_NAME
|
|||
|
|
FROM information_schema.TABLES t
|
|||
|
|
WHERE t.TABLE_SCHEMA = DATABASE()
|
|||
|
|
AND (t.TABLE_NAME LIKE 'apt\_%' OR t.TABLE_NAME LIKE 'gy\_%'
|
|||
|
|
OR t.TABLE_NAME LIKE 'gygl\_%' OR t.TABLE_NAME LIKE 'duty\_%')
|
|||
|
|
AND t.TABLE_NAME <> 'apt_ops_probe'
|
|||
|
|
AND NOT EXISTS (
|
|||
|
|
SELECT 1 FROM information_schema.COLUMNS c
|
|||
|
|
WHERE c.TABLE_SCHEMA = t.TABLE_SCHEMA AND c.TABLE_NAME = t.TABLE_NAME
|
|||
|
|
AND c.COLUMN_NAME = 'gyid'
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
SELECT '=== 5. 外键数量(应为 0:docs/10 表 5-6 明确不建外键)===' AS section;
|
|||
|
|
SELECT COUNT(*) AS foreign_key_count
|
|||
|
|
FROM information_schema.TABLE_CONSTRAINTS
|
|||
|
|
WHERE TABLE_SCHEMA = DATABASE() AND CONSTRAINT_TYPE = 'FOREIGN KEY';
|
|||
|
|
|
|||
|
|
SELECT '=== 6. 探针表与基线种子 ===' AS section;
|
|||
|
|
SELECT (SELECT COUNT(*) FROM apt_ops_probe) AS probe_rows,
|
|||
|
|
(SELECT COUNT(*) FROM apt_master_version WHERE source = 'LOCAL') AS local_baseline_rows,
|
|||
|
|
(SELECT COUNT(*) FROM apt_ops_selfcheck) AS selfcheck_item_rows;
|