44 lines
1.9 KiB
Transact-SQL
44 lines
1.9 KiB
Transact-SQL
-- =============================================
|
||
-- 站内信功能 - 数据库表创建脚本
|
||
-- 创建时间: 2025-12-07
|
||
-- =============================================
|
||
|
||
-- 表1: SQMessage (站内信消息表)
|
||
CREATE TABLE [dbo].[SQMessage] (
|
||
[id] INT IDENTITY(1,1) NOT NULL PRIMARY KEY,
|
||
[user_id] INT NULL, -- 接收用户ID,全员广播时为NULL
|
||
[target_type] INT NOT NULL DEFAULT 0, -- 目标类型:0=指定用户,1=全员广播
|
||
[title] NVARCHAR(200) NOT NULL, -- 消息标题
|
||
[content] NVARCHAR(MAX) NOT NULL, -- 消息正文
|
||
[message_type] INT NOT NULL DEFAULT 0, -- 消息类型:0=系统通知,1=私信
|
||
[is_read] BIT NOT NULL DEFAULT 0, -- 是否已读(仅对指定用户消息有效)
|
||
[sender_id] INT NULL, -- 发送者ID(后台管理员ID)
|
||
[related_type] INT NULL, -- 关联业务类型:1=组局
|
||
[related_id] INT NULL, -- 关联业务ID
|
||
[created_at] DATETIME NOT NULL DEFAULT GETDATE(),
|
||
[updated_at] DATETIME NULL
|
||
);
|
||
GO
|
||
|
||
-- 索引
|
||
CREATE INDEX IX_SQMessage_user_id ON [dbo].[SQMessage]([user_id]);
|
||
CREATE INDEX IX_SQMessage_target_type ON [dbo].[SQMessage]([target_type]);
|
||
CREATE INDEX IX_SQMessage_created_at ON [dbo].[SQMessage]([created_at] DESC);
|
||
GO
|
||
|
||
-- 表2: SQMessageRead (已读记录表 - 专门记录全员广播的已读状态)
|
||
CREATE TABLE [dbo].[SQMessageRead] (
|
||
[id] INT IDENTITY(1,1) NOT NULL PRIMARY KEY,
|
||
[message_id] INT NOT NULL, -- 消息ID
|
||
[user_id] INT NOT NULL, -- 用户ID
|
||
[read_at] DATETIME NOT NULL DEFAULT GETDATE()
|
||
);
|
||
GO
|
||
|
||
-- 索引(防重复 + 查询优化)
|
||
CREATE UNIQUE INDEX IX_SQMessageRead_msg_user ON [dbo].[SQMessageRead]([message_id], [user_id]);
|
||
CREATE INDEX IX_SQMessageRead_user_id ON [dbo].[SQMessageRead]([user_id]);
|
||
GO
|
||
|
||
PRINT '站内信表创建完成!';
|