20 KiB
20 KiB
Live Forum 后台管理数据库扩展设计
数据库扩展概述
为了支持后台管理功能,需要在现有数据库基础上添加管理相关的表和字段。
新增表结构
1. 管理操作记录表 (AdminOperations)
用途: 记录所有后台管理操作,用于审计和追踪
CREATE TABLE dbo.AdminOperations
(
OperationId BIGINT PRIMARY KEY IDENTITY(1,1),
AdminId BIGINT NOT NULL, -- 管理员ID
AdminName NVARCHAR(50) NOT NULL, -- 管理员名称
OperationType NVARCHAR(50) NOT NULL, -- 操作类型:CREATE, UPDATE, DELETE, APPROVE, REJECT
TargetType NVARCHAR(50) NOT NULL, -- 目标类型:POST, COMMENT, USER, BANNER, CATEGORY
TargetId BIGINT NOT NULL, -- 目标ID
OperationData NVARCHAR(MAX) NULL, -- 操作数据(JSON格式)
OperationResult NVARCHAR(500) NULL, -- 操作结果
Reason NVARCHAR(500) NULL, -- 操作原因
IpAddress NVARCHAR(50) NULL, -- 操作IP地址
UserAgent NVARCHAR(500) NULL, -- 用户代理
CreatedAt DATETIME2(7) NOT NULL DEFAULT GETDATE()
);
-- 创建索引
CREATE INDEX IX_AdminOperations_AdminId ON AdminOperations(AdminId);
CREATE INDEX IX_AdminOperations_TargetType_TargetId ON AdminOperations(TargetType, TargetId);
CREATE INDEX IX_AdminOperations_CreatedAt ON AdminOperations(CreatedAt);
CREATE INDEX IX_AdminOperations_OperationType ON AdminOperations(OperationType);
2. 系统配置表 (SystemConfigs)
用途: 存储系统配置参数
CREATE TABLE dbo.SystemConfigs
(
ConfigId INT PRIMARY KEY IDENTITY(1,1),
ConfigKey NVARCHAR(100) NOT NULL UNIQUE, -- 配置键
ConfigValue NVARCHAR(MAX) NOT NULL, -- 配置值
ConfigType NVARCHAR(50) NOT NULL, -- 配置类型:STRING, NUMBER, BOOLEAN, JSON
Description NVARCHAR(500) NULL, -- 配置描述
Category NVARCHAR(50) NOT NULL, -- 配置分类:SYSTEM, CONTENT, USER, SECURITY
IsActive BIT NOT NULL DEFAULT 1, -- 是否启用
IsReadOnly BIT NOT NULL DEFAULT 0, -- 是否只读
CreatedAt DATETIME2(7) NOT NULL DEFAULT GETDATE(),
UpdatedAt DATETIME2(7) NOT NULL DEFAULT GETDATE()
);
-- 创建索引
CREATE INDEX IX_SystemConfigs_Category ON SystemConfigs(Category);
CREATE INDEX IX_SystemConfigs_IsActive ON SystemConfigs(IsActive);
3. 管理任务表 (AdminTasks)
用途: 记录后台管理任务,支持异步处理
CREATE TABLE dbo.AdminTasks
(
TaskId BIGINT PRIMARY KEY IDENTITY(1,1),
TaskName NVARCHAR(100) NOT NULL, -- 任务名称
TaskType NVARCHAR(50) NOT NULL, -- 任务类型:BATCH_DELETE, BATCH_UPDATE, EXPORT_DATA
TaskData NVARCHAR(MAX) NOT NULL, -- 任务数据(JSON格式)
Status TINYINT NOT NULL DEFAULT 0, -- 任务状态:0-待处理,1-处理中,2-已完成,3-失败
Progress INT NOT NULL DEFAULT 0, -- 进度百分比
TotalCount INT NOT NULL DEFAULT 0, -- 总数量
ProcessedCount INT NOT NULL DEFAULT 0, -- 已处理数量
SuccessCount INT NOT NULL DEFAULT 0, -- 成功数量
FailedCount INT NOT NULL DEFAULT 0, -- 失败数量
ErrorMessage NVARCHAR(MAX) NULL, -- 错误信息
CreatedBy BIGINT NOT NULL, -- 创建者ID
CreatedAt DATETIME2(7) NOT NULL DEFAULT GETDATE(),
StartedAt DATETIME2(7) NULL, -- 开始时间
CompletedAt DATETIME2(7) NULL -- 完成时间
);
-- 创建索引
CREATE INDEX IX_AdminTasks_Status ON AdminTasks(Status);
CREATE INDEX IX_AdminTasks_CreatedBy ON AdminTasks(CreatedBy);
CREATE INDEX IX_AdminTasks_CreatedAt ON AdminTasks(CreatedAt);
4. 数据统计缓存表 (StatisticsCache)
用途: 缓存统计数据,提高查询性能
CREATE TABLE dbo.StatisticsCache
(
CacheId BIGINT PRIMARY KEY IDENTITY(1,1),
CacheKey NVARCHAR(100) NOT NULL UNIQUE, -- 缓存键
CacheData NVARCHAR(MAX) NOT NULL, -- 缓存数据(JSON格式)
CacheType NVARCHAR(50) NOT NULL, -- 缓存类型:DAILY, WEEKLY, MONTHLY
StatDate DATE NOT NULL, -- 统计日期
ExpireAt DATETIME2(7) NOT NULL, -- 过期时间
CreatedAt DATETIME2(7) NOT NULL DEFAULT GETDATE(),
UpdatedAt DATETIME2(7) NOT NULL DEFAULT GETDATE()
);
-- 创建索引
CREATE INDEX IX_StatisticsCache_CacheType ON StatisticsCache(CacheType);
CREATE INDEX IX_StatisticsCache_StatDate ON StatisticsCache(StatDate);
CREATE INDEX IX_StatisticsCache_ExpireAt ON StatisticsCache(ExpireAt);
现有表字段扩展
1. Posts表扩展
添加管理相关字段:
-- 添加管理相关字段
ALTER TABLE dbo.Posts ADD
AdminNotes NVARCHAR(500) NULL, -- 管理员备注
LastAdminOperation DATETIME2(7) NULL, -- 最后管理操作时间
AdminOperationCount INT NOT NULL DEFAULT 0; -- 管理操作次数
-- 创建索引
CREATE INDEX IX_Posts_LastAdminOperation ON Posts(LastAdminOperation);
CREATE INDEX IX_Posts_AdminOperationCount ON Posts(AdminOperationCount);
2. Users表扩展
添加管理相关字段:
-- 添加管理相关字段
ALTER TABLE dbo.Users ADD
AdminNotes NVARCHAR(500) NULL, -- 管理员备注
LastAdminOperation DATETIME2(7) NULL, -- 最后管理操作时间
AdminOperationCount INT NOT NULL DEFAULT 0, -- 管理操作次数
StatusChangeReason NVARCHAR(500) NULL, -- 状态变更原因
StatusChangeAt DATETIME2(7) NULL, -- 状态变更时间
StatusChangeBy BIGINT NULL; -- 状态变更操作者
-- 创建索引
CREATE INDEX IX_Users_LastAdminOperation ON Users(LastAdminOperation);
CREATE INDEX IX_Users_StatusChangeAt ON Users(StatusChangeAt);
3. Comments表扩展
添加管理相关字段:
-- 添加管理相关字段
ALTER TABLE dbo.Comments ADD
AdminNotes NVARCHAR(500) NULL, -- 管理员备注
LastAdminOperation DATETIME2(7) NULL, -- 最后管理操作时间
AdminOperationCount INT NOT NULL DEFAULT 0; -- 管理操作次数
-- 创建索引
CREATE INDEX IX_Comments_LastAdminOperation ON Comments(LastAdminOperation);
4. Reports表扩展
添加管理相关字段:
-- 添加管理相关字段
ALTER TABLE dbo.Reports ADD
AdminNotes NVARCHAR(500) NULL, -- 管理员备注
ProcessedAt DATETIME2(7) NULL, -- 处理时间
ProcessedBy BIGINT NULL, -- 处理者ID
ProcessResult NVARCHAR(500) NULL; -- 处理结果
-- 创建索引
CREATE INDEX IX_Reports_ProcessedAt ON Reports(ProcessedAt);
CREATE INDEX IX_Reports_ProcessedBy ON Reports(ProcessedBy);
视图创建
1. 管理操作统计视图
CREATE VIEW dbo.vw_AdminOperationStatistics
AS
SELECT
AdminId,
AdminName,
COUNT(*) as TotalOperations,
COUNT(CASE WHEN OperationType = 'CREATE' THEN 1 END) as CreateCount,
COUNT(CASE WHEN OperationType = 'UPDATE' THEN 1 END) as UpdateCount,
COUNT(CASE WHEN OperationType = 'DELETE' THEN 1 END) as DeleteCount,
COUNT(CASE WHEN OperationType = 'APPROVE' THEN 1 END) as ApproveCount,
COUNT(CASE WHEN OperationType = 'REJECT' THEN 1 END) as RejectCount,
COUNT(CASE WHEN TargetType = 'POST' THEN 1 END) as PostOperations,
COUNT(CASE WHEN TargetType = 'USER' THEN 1 END) as UserOperations,
COUNT(CASE WHEN TargetType = 'COMMENT' THEN 1 END) as CommentOperations,
MAX(CreatedAt) as LastOperationAt
FROM dbo.AdminOperations
GROUP BY AdminId, AdminName;
2. 内容管理统计视图
CREATE VIEW dbo.vw_ContentManagementStatistics
AS
SELECT
'Posts' as ContentType,
COUNT(*) as TotalCount,
COUNT(CASE WHEN Status = 0 THEN 1 END) as DraftCount,
COUNT(CASE WHEN Status = 1 THEN 1 END) as PublishedCount,
COUNT(CASE WHEN Status = 2 THEN 1 END) as PendingCount,
COUNT(CASE WHEN Status = 3 THEN 1 END) as SuspendedCount,
COUNT(CASE WHEN IsTop = 1 THEN 1 END) as TopCount,
COUNT(CASE WHEN IsHot = 1 THEN 1 END) as HotCount,
COUNT(CASE WHEN IsEssence = 1 THEN 1 END) as EssenceCount,
COUNT(CASE WHEN AdminOperationCount > 0 THEN 1 END) as ManagedCount
FROM dbo.Posts
WHERE IsDeleted = 0
UNION ALL
SELECT
'Comments' as ContentType,
COUNT(*) as TotalCount,
0 as DraftCount,
COUNT(CASE WHEN IsDeleted = 0 THEN 1 END) as PublishedCount,
0 as PendingCount,
COUNT(CASE WHEN IsDeleted = 1 THEN 1 END) as SuspendedCount,
0 as TopCount,
0 as HotCount,
0 as EssenceCount,
COUNT(CASE WHEN AdminOperationCount > 0 THEN 1 END) as ManagedCount
FROM dbo.Comments;
3. 用户管理统计视图
CREATE VIEW dbo.vw_UserManagementStatistics
AS
SELECT
COUNT(*) as TotalUsers,
COUNT(CASE WHEN Status = 0 THEN 1 END) as ActiveUsers,
COUNT(CASE WHEN Status = 1 THEN 1 END) as DisabledUsers,
COUNT(CASE WHEN Status = 2 THEN 1 END) as FrozenUsers,
COUNT(CASE WHEN IsVip = 1 THEN 1 END) as VipUsers,
COUNT(CASE WHEN IsCertified = 1 THEN 1 END) as CertifiedUsers,
COUNT(CASE WHEN AdminOperationCount > 0 THEN 1 END) as ManagedUsers,
COUNT(CASE WHEN CreatedAt >= DATEADD(DAY, -30, GETDATE()) THEN 1 END) as NewUsers30Days,
COUNT(CASE WHEN LastLoginAt >= DATEADD(DAY, -7, GETDATE()) THEN 1 END) as ActiveUsers7Days
FROM dbo.Users
WHERE IsDeleted = 0;
存储过程创建
1. 记录管理操作存储过程
CREATE PROCEDURE dbo.sp_RecordAdminOperation
@AdminId BIGINT,
@AdminName NVARCHAR(50),
@OperationType NVARCHAR(50),
@TargetType NVARCHAR(50),
@TargetId BIGINT,
@OperationData NVARCHAR(MAX) = NULL,
@OperationResult NVARCHAR(500) = NULL,
@Reason NVARCHAR(500) = NULL,
@IpAddress NVARCHAR(50) = NULL,
@UserAgent NVARCHAR(500) = NULL
AS
BEGIN
SET NOCOUNT ON;
BEGIN TRY
-- 插入操作记录
INSERT INTO dbo.AdminOperations (
AdminId, AdminName, OperationType, TargetType, TargetId,
OperationData, OperationResult, Reason, IpAddress, UserAgent
)
VALUES (
@AdminId, @AdminName, @OperationType, @TargetType, @TargetId,
@OperationData, @OperationResult, @Reason, @IpAddress, @UserAgent
);
-- 更新目标表的最后管理操作时间
IF @TargetType = 'POST'
BEGIN
UPDATE dbo.Posts
SET LastAdminOperation = GETDATE(),
AdminOperationCount = AdminOperationCount + 1
WHERE PostId = @TargetId;
END
ELSE IF @TargetType = 'USER'
BEGIN
UPDATE dbo.Users
SET LastAdminOperation = GETDATE(),
AdminOperationCount = AdminOperationCount + 1
WHERE UserId = @TargetId;
END
ELSE IF @TargetType = 'COMMENT'
BEGIN
UPDATE dbo.Comments
SET LastAdminOperation = GETDATE(),
AdminOperationCount = AdminOperationCount + 1
WHERE CommentId = @TargetId;
END
SELECT 'SUCCESS' as Result, '操作记录已保存' as Message;
END TRY
BEGIN CATCH
SELECT 'ERROR' as Result, ERROR_MESSAGE() as Message;
END CATCH
END;
2. 更新统计数据存储过程
CREATE PROCEDURE dbo.sp_UpdateStatisticsCache
@CacheType NVARCHAR(50),
@StatDate DATE,
@CacheData NVARCHAR(MAX)
AS
BEGIN
SET NOCOUNT ON;
BEGIN TRY
DECLARE @CacheKey NVARCHAR(100) = @CacheType + '_' + CONVERT(NVARCHAR(10), @StatDate, 120);
DECLARE @ExpireAt DATETIME2(7) = DATEADD(DAY, 1, GETDATE());
-- 更新或插入缓存数据
IF EXISTS (SELECT 1 FROM dbo.StatisticsCache WHERE CacheKey = @CacheKey)
BEGIN
UPDATE dbo.StatisticsCache
SET CacheData = @CacheData,
UpdatedAt = GETDATE(),
ExpireAt = @ExpireAt
WHERE CacheKey = @CacheKey;
END
ELSE
BEGIN
INSERT INTO dbo.StatisticsCache (CacheKey, CacheData, CacheType, StatDate, ExpireAt)
VALUES (@CacheKey, @CacheData, @CacheType, @StatDate, @ExpireAt);
END
SELECT 'SUCCESS' as Result, '统计数据已更新' as Message;
END TRY
BEGIN CATCH
SELECT 'ERROR' as Result, ERROR_MESSAGE() as Message;
END CATCH
END;
3. 清理过期缓存存储过程
CREATE PROCEDURE dbo.sp_CleanExpiredCache
AS
BEGIN
SET NOCOUNT ON;
BEGIN TRY
-- 删除过期的缓存数据
DELETE FROM dbo.StatisticsCache
WHERE ExpireAt < GETDATE();
-- 删除30天前的操作记录
DELETE FROM dbo.AdminOperations
WHERE CreatedAt < DATEADD(DAY, -30, GETDATE());
-- 删除已完成的任务记录(保留7天)
DELETE FROM dbo.AdminTasks
WHERE Status IN (2, 3)
AND CompletedAt < DATEADD(DAY, -7, GETDATE());
SELECT 'SUCCESS' as Result, '过期数据已清理' as Message;
END TRY
BEGIN CATCH
SELECT 'ERROR' as Result, ERROR_MESSAGE() as Message;
END CATCH
END;
初始化数据
1. 系统配置初始化
-- 插入基础系统配置
INSERT INTO dbo.SystemConfigs (ConfigKey, ConfigValue, ConfigType, Description, Category)
VALUES
('MAX_POSTS_PER_DAY', '10', 'NUMBER', '用户每日最大发帖数', 'CONTENT'),
('MAX_COMMENTS_PER_DAY', '50', 'NUMBER', '用户每日最大评论数', 'CONTENT'),
('MAX_IMAGES_PER_POST', '9', 'NUMBER', '每帖最大图片数', 'CONTENT'),
('POST_AUTO_APPROVE', 'true', 'BOOLEAN', '帖子是否自动审核通过', 'CONTENT'),
('COMMENT_AUTO_APPROVE', 'true', 'BOOLEAN', '评论是否自动审核通过', 'CONTENT'),
('MAX_FILE_SIZE', '10485760', 'NUMBER', '最大文件大小(字节)', 'SYSTEM'),
('ALLOWED_FILE_TYPES', 'jpg,jpeg,png,gif,mp4', 'STRING', '允许的文件类型', 'SYSTEM'),
('CACHE_EXPIRE_HOURS', '24', 'NUMBER', '缓存过期时间(小时)', 'SYSTEM'),
('ADMIN_OPERATION_LOG_DAYS', '30', 'NUMBER', '管理操作日志保留天数', 'SECURITY'),
('BATCH_OPERATION_LIMIT', '100', 'NUMBER', '批量操作最大数量', 'SECURITY');
2. 创建定时任务
-- 创建定时清理任务(需要SQL Server Agent支持)
-- 每天凌晨2点执行清理过期数据
EXEC msdb.dbo.sp_add_job
@job_name = 'CleanExpiredAdminData',
@description = '清理过期的管理数据和缓存';
EXEC msdb.dbo.sp_add_jobstep
@job_name = 'CleanExpiredAdminData',
@step_name = 'CleanExpiredData',
@command = 'EXEC LiveForumDB.dbo.sp_CleanExpiredCache';
EXEC msdb.dbo.sp_add_schedule
@schedule_name = 'DailyCleanup',
@freq_type = 4,
@freq_interval = 1,
@active_start_time = 020000;
EXEC msdb.dbo.sp_attach_schedule
@job_name = 'CleanExpiredAdminData',
@schedule_name = 'DailyCleanup';
性能优化建议
1. 索引优化
-- 为常用查询字段创建复合索引
CREATE INDEX IX_Posts_Status_CreatedAt ON Posts(Status, CreatedAt);
CREATE INDEX IX_Users_Status_LevelId ON Users(Status, LevelId);
CREATE INDEX IX_Comments_PostId_CreatedAt ON Comments(PostId, CreatedAt);
CREATE INDEX IX_Reports_Status_CreatedAt ON Reports(Status, CreatedAt);
-- 为管理操作表创建覆盖索引
CREATE INDEX IX_AdminOperations_Coverage ON AdminOperations(AdminId, CreatedAt)
INCLUDE (OperationType, TargetType, TargetId);
2. 分区表设计
-- 为大数据量表创建分区(可选)
-- 按创建时间分区管理操作表
CREATE PARTITION FUNCTION PF_AdminOperations_Date (DATETIME2(7))
AS RANGE RIGHT FOR VALUES (
'2024-01-01', '2024-02-01', '2024-03-01', '2024-04-01',
'2024-05-01', '2024-06-01', '2024-07-01', '2024-08-01',
'2024-09-01', '2024-10-01', '2024-11-01', '2024-12-01'
);
CREATE PARTITION SCHEME PS_AdminOperations_Date
AS PARTITION PF_AdminOperations_Date
TO (FG_2024_01, FG_2024_02, FG_2024_03, FG_2024_04,
FG_2024_05, FG_2024_06, FG_2024_07, FG_2024_08,
FG_2024_09, FG_2024_10, FG_2024_11, FG_2024_12);
3. 查询优化
-- 创建统计信息更新存储过程
CREATE PROCEDURE dbo.sp_UpdateStatistics
AS
BEGIN
-- 更新表统计信息
UPDATE STATISTICS dbo.Posts;
UPDATE STATISTICS dbo.Users;
UPDATE STATISTICS dbo.Comments;
UPDATE STATISTICS dbo.AdminOperations;
-- 重建索引碎片
ALTER INDEX ALL ON dbo.Posts REBUILD;
ALTER INDEX ALL ON dbo.Users REBUILD;
ALTER INDEX ALL ON dbo.Comments REBUILD;
END;
安全考虑
1. 数据脱敏
-- 创建用户信息脱敏视图
CREATE VIEW dbo.vw_Users_Desensitized
AS
SELECT
UserId,
UserName,
NickName,
CASE
WHEN LEN(PhoneNumber) > 4
THEN LEFT(PhoneNumber, 3) + '****' + RIGHT(PhoneNumber, 4)
ELSE PhoneNumber
END as PhoneNumber,
CASE
WHEN CHARINDEX('@', Email) > 0
THEN LEFT(Email, 2) + '****' + SUBSTRING(Email, CHARINDEX('@', Email), LEN(Email))
ELSE Email
END as Email,
Avatar,
Gender,
Birthday,
Signature,
Status,
IsVip,
IsCertified,
LevelId,
Experience,
CreatedAt,
LastLoginAt
FROM dbo.Users
WHERE IsDeleted = 0;
2. 权限控制
-- 创建管理操作权限检查函数
CREATE FUNCTION dbo.fn_CheckAdminPermission(
@AdminId BIGINT,
@OperationType NVARCHAR(50),
@TargetType NVARCHAR(50)
)
RETURNS BIT
AS
BEGIN
DECLARE @HasPermission BIT = 0;
-- 这里应该根据实际的权限系统来实现
-- 示例:检查管理员是否有相应操作权限
IF EXISTS (
SELECT 1 FROM dbo.AdminPermissions
WHERE AdminId = @AdminId
AND OperationType = @OperationType
AND TargetType = @TargetType
AND IsActive = 1
)
BEGIN
SET @HasPermission = 1;
END
RETURN @HasPermission;
END;
监控和维护
1. 性能监控
-- 创建性能监控视图
CREATE VIEW dbo.vw_PerformanceMonitoring
AS
SELECT
'AdminOperations' as TableName,
COUNT(*) as RecordCount,
MAX(CreatedAt) as LastRecord,
AVG(DATEDIFF(MILLISECOND, CreatedAt, GETDATE())) as AvgAge
FROM dbo.AdminOperations
UNION ALL
SELECT
'StatisticsCache' as TableName,
COUNT(*) as RecordCount,
MAX(CreatedAt) as LastRecord,
AVG(DATEDIFF(MILLISECOND, CreatedAt, GETDATE())) as AvgAge
FROM dbo.StatisticsCache
UNION ALL
SELECT
'AdminTasks' as TableName,
COUNT(*) as RecordCount,
MAX(CreatedAt) as LastRecord,
AVG(DATEDIFF(MILLISECOND, CreatedAt, GETDATE())) as AvgAge
FROM dbo.AdminTasks;
2. 数据完整性检查
-- 创建数据完整性检查存储过程
CREATE PROCEDURE dbo.sp_CheckDataIntegrity
AS
BEGIN
SET NOCOUNT ON;
-- 检查孤立的管理操作记录
SELECT 'Orphaned AdminOperations' as Issue, COUNT(*) as Count
FROM dbo.AdminOperations ao
LEFT JOIN dbo.Posts p ON ao.TargetType = 'POST' AND ao.TargetId = p.PostId
LEFT JOIN dbo.Users u ON ao.TargetType = 'USER' AND ao.TargetId = u.UserId
LEFT JOIN dbo.Comments c ON ao.TargetType = 'COMMENT' AND ao.TargetId = c.CommentId
WHERE p.PostId IS NULL AND u.UserId IS NULL AND c.CommentId IS NULL;
-- 检查过期的缓存数据
SELECT 'Expired Cache' as Issue, COUNT(*) as Count
FROM dbo.StatisticsCache
WHERE ExpireAt < GETDATE();
-- 检查长时间运行的任务
SELECT 'Long Running Tasks' as Issue, COUNT(*) as Count
FROM dbo.AdminTasks
WHERE Status = 1 AND StartedAt < DATEADD(HOUR, -2, GETDATE());
END;
总结
本数据库扩展设计为Live Forum后台管理功能提供了完整的数据支持,包括:
新增功能
- ✅ 4张新表 - 管理操作记录、系统配置、管理任务、统计缓存
- ✅ 字段扩展 - 为现有表添加管理相关字段
- ✅ 3个视图 - 管理统计、内容统计、用户统计
- ✅ 3个存储过程 - 操作记录、缓存更新、数据清理
性能优化
- ✅ 索引优化 - 为常用查询创建复合索引
- ✅ 分区设计 - 支持大数据量分区存储
- ✅ 缓存机制 - 统计数据缓存提高查询性能
安全特性
- ✅ 数据脱敏 - 敏感信息脱敏视图
- ✅ 权限控制 - 操作权限检查函数
- ✅ 审计追踪 - 完整的管理操作记录
维护功能
- ✅ 性能监控 - 实时性能监控视图
- ✅ 数据完整性 - 数据完整性检查
- ✅ 自动清理 - 定时清理过期数据
该设计能够满足后台管理功能的所有数据需求,同时保证性能、安全和可维护性。