新增:安全技术数据

This commit is contained in:
2026-09-11 11:14:08 +08:00
parent 9bce0d340f
commit 5a2830d36a
24 changed files with 5065 additions and 292 deletions
@@ -0,0 +1,89 @@
-- =====================================================================
-- PDF 书籍检索模块:建表脚本(CREATE TABLE + 字段注释=扩展属性 MS_Description
-- 说明:
-- * Sys_PdfBook 书籍主表;Sys_PdfChapter 章节(目录+聚合正文,支持多级)Sys_PdfPage 分页OCR文本。
-- * SQL Server 的字段注释不是写在 CREATE 里的 -- 注释,而是存成 扩展属性 (MS_Description)
-- 通过 sp_addextendedproperty 写入,SSMS 表设计器与 sys.extended_properties 中可见。
-- * 全部幂等:表不存在才建;每个字段注释仅在不存在时才添加,可重复执行。
-- * 适用范围:新库直接执行即可(仅 CREATE,无需 ALTER)。
-- =====================================================================
-- ============================ 1. 书籍主表 ============================
IF OBJECT_ID(N'[dbo].[Sys_PdfBook]', N'U') IS NULL
BEGIN
CREATE TABLE [dbo].[Sys_PdfBook] (
[BookId] nvarchar(50) COLLATE Chinese_PRC_CI_AS NOT NULL,
[Title] nvarchar(200) COLLATE Chinese_PRC_CI_AS NULL,
[FilePath] nvarchar(500) COLLATE Chinese_PRC_CI_AS NULL,
[TotalPages] int NULL,
[IndexStatus] int NULL,
[IndexProgress] int NULL,
[Dpi] int NULL DEFAULT 200,
[FileHash] nvarchar(64) COLLATE Chinese_PRC_CI_AS NULL,
[LastIndexTime] datetime NULL,
[CreateUser] nvarchar(50) COLLATE Chinese_PRC_CI_AS NULL,
[CreateTime] datetime NULL,
CONSTRAINT [PK_Sys_PdfBook] PRIMARY KEY CLUSTERED ([BookId] ASC)
);
END
IF COL_LENGTH(N'dbo.Sys_PdfBook', N'BookId') IS NOT NULL AND NOT EXISTS (SELECT 1 FROM sys.extended_properties WHERE class=1 AND major_id=OBJECT_ID(N'dbo.Sys_PdfBook') AND minor_id=COLUMNPROPERTY(OBJECT_ID(N'dbo.Sys_PdfBook'), N'BookId', 'ColumnId') AND name=N'MS_Description')
EXEC sp_addextendedproperty @name=N'MS_Description', @value=N'书籍ID(主键)', @level0type=N'SCHEMA', @level0name=N'dbo', @level1type=N'TABLE', @level1name=N'Sys_PdfBook', @level2type=N'COLUMN', @level2name=N'BookId';
IF COL_LENGTH(N'dbo.Sys_PdfBook', N'Title') IS NOT NULL AND NOT EXISTS (SELECT 1 FROM sys.extended_properties WHERE class=1 AND major_id=OBJECT_ID(N'dbo.Sys_PdfBook') AND minor_id=COLUMNPROPERTY(OBJECT_ID(N'dbo.Sys_PdfBook'), N'Title', 'ColumnId') AND name=N'MS_Description')
EXEC sp_addextendedproperty @name=N'MS_Description', @value=N'书名', @level0type=N'SCHEMA', @level0name=N'dbo', @level1type=N'TABLE', @level1name=N'Sys_PdfBook', @level2type=N'COLUMN', @level2name=N'Title';
IF COL_LENGTH(N'dbo.Sys_PdfBook', N'FilePath') IS NOT NULL AND NOT EXISTS (SELECT 1 FROM sys.extended_properties WHERE class=1 AND major_id=OBJECT_ID(N'dbo.Sys_PdfBook') AND minor_id=COLUMNPROPERTY(OBJECT_ID(N'dbo.Sys_PdfBook'), N'FilePath', 'ColumnId') AND name=N'MS_Description')
EXEC sp_addextendedproperty @name=N'MS_Description', @value=N'PDF文件路径', @level0type=N'SCHEMA', @level0name=N'dbo', @level1type=N'TABLE', @level1name=N'Sys_PdfBook', @level2type=N'COLUMN', @level2name=N'FilePath';
IF COL_LENGTH(N'dbo.Sys_PdfBook', N'TotalPages') IS NOT NULL AND NOT EXISTS (SELECT 1 FROM sys.extended_properties WHERE class=1 AND major_id=OBJECT_ID(N'dbo.Sys_PdfBook') AND minor_id=COLUMNPROPERTY(OBJECT_ID(N'dbo.Sys_PdfBook'), N'TotalPages', 'ColumnId') AND name=N'MS_Description')
EXEC sp_addextendedproperty @name=N'MS_Description', @value=N'总页数', @level0type=N'SCHEMA', @level0name=N'dbo', @level1type=N'TABLE', @level1name=N'Sys_PdfBook', @level2type=N'COLUMN', @level2name=N'TotalPages';
IF COL_LENGTH(N'dbo.Sys_PdfBook', N'IndexStatus') IS NOT NULL AND NOT EXISTS (SELECT 1 FROM sys.extended_properties WHERE class=1 AND major_id=OBJECT_ID(N'dbo.Sys_PdfBook') AND minor_id=COLUMNPROPERTY(OBJECT_ID(N'dbo.Sys_PdfBook'), N'IndexStatus', 'ColumnId') AND name=N'MS_Description')
EXEC sp_addextendedproperty @name=N'MS_Description', @value=N'索引状态(0待索引 1索引中 2完成 3失败)', @level0type=N'SCHEMA', @level0name=N'dbo', @level1type=N'TABLE', @level1name=N'Sys_PdfBook', @level2type=N'COLUMN', @level2name=N'IndexStatus';
IF COL_LENGTH(N'dbo.Sys_PdfBook', N'IndexProgress') IS NOT NULL AND NOT EXISTS (SELECT 1 FROM sys.extended_properties WHERE class=1 AND major_id=OBJECT_ID(N'dbo.Sys_PdfBook') AND minor_id=COLUMNPROPERTY(OBJECT_ID(N'dbo.Sys_PdfBook'), N'IndexProgress', 'ColumnId') AND name=N'MS_Description')
EXEC sp_addextendedproperty @name=N'MS_Description', @value=N'已处理页数(索引进度)', @level0type=N'SCHEMA', @level0name=N'dbo', @level1type=N'TABLE', @level1name=N'Sys_PdfBook', @level2type=N'COLUMN', @level2name=N'IndexProgress';
IF COL_LENGTH(N'dbo.Sys_PdfBook', N'Dpi') IS NOT NULL AND NOT EXISTS (SELECT 1 FROM sys.extended_properties WHERE class=1 AND major_id=OBJECT_ID(N'dbo.Sys_PdfBook') AND minor_id=COLUMNPROPERTY(OBJECT_ID(N'dbo.Sys_PdfBook'), N'Dpi', 'ColumnId') AND name=N'MS_Description')
EXEC sp_addextendedproperty @name=N'MS_Description', @value=N'页图像渲染DPI', @level0type=N'SCHEMA', @level0name=N'dbo', @level1type=N'TABLE', @level1name=N'Sys_PdfBook', @level2type=N'COLUMN', @level2name=N'Dpi';
IF COL_LENGTH(N'dbo.Sys_PdfBook', N'FileHash') IS NOT NULL AND NOT EXISTS (SELECT 1 FROM sys.extended_properties WHERE class=1 AND major_id=OBJECT_ID(N'dbo.Sys_PdfBook') AND minor_id=COLUMNPROPERTY(OBJECT_ID(N'dbo.Sys_PdfBook'), N'FileHash', 'ColumnId') AND name=N'MS_Description')
EXEC sp_addextendedproperty @name=N'MS_Description', @value=N'文件MD5(用于判断内容是否变化)', @level0type=N'SCHEMA', @level0name=N'dbo', @level1type=N'TABLE', @level1name=N'Sys_PdfBook', @level2type=N'COLUMN', @level2name=N'FileHash';
IF COL_LENGTH(N'dbo.Sys_PdfBook', N'LastIndexTime') IS NOT NULL AND NOT EXISTS (SELECT 1 FROM sys.extended_properties WHERE class=1 AND major_id=OBJECT_ID(N'dbo.Sys_PdfBook') AND minor_id=COLUMNPROPERTY(OBJECT_ID(N'dbo.Sys_PdfBook'), N'LastIndexTime', 'ColumnId') AND name=N'MS_Description')
EXEC sp_addextendedproperty @name=N'MS_Description', @value=N'最近一次索引时间', @level0type=N'SCHEMA', @level0name=N'dbo', @level1type=N'TABLE', @level1name=N'Sys_PdfBook', @level2type=N'COLUMN', @level2name=N'LastIndexTime';
IF COL_LENGTH(N'dbo.Sys_PdfBook', N'CreateUser') IS NOT NULL AND NOT EXISTS (SELECT 1 FROM sys.extended_properties WHERE class=1 AND major_id=OBJECT_ID(N'dbo.Sys_PdfBook') AND minor_id=COLUMNPROPERTY(OBJECT_ID(N'dbo.Sys_PdfBook'), N'CreateUser', 'ColumnId') AND name=N'MS_Description')
EXEC sp_addextendedproperty @name=N'MS_Description', @value=N'创建人', @level0type=N'SCHEMA', @level0name=N'dbo', @level1type=N'TABLE', @level1name=N'Sys_PdfBook', @level2type=N'COLUMN', @level2name=N'CreateUser';
IF COL_LENGTH(N'dbo.Sys_PdfBook', N'CreateTime') IS NOT NULL AND NOT EXISTS (SELECT 1 FROM sys.extended_properties WHERE class=1 AND major_id=OBJECT_ID(N'dbo.Sys_PdfBook') AND minor_id=COLUMNPROPERTY(OBJECT_ID(N'dbo.Sys_PdfBook'), N'CreateTime', 'ColumnId') AND name=N'MS_Description')
EXEC sp_addextendedproperty @name=N'MS_Description', @value=N'创建时间', @level0type=N'SCHEMA', @level0name=N'dbo', @level1type=N'TABLE', @level1name=N'Sys_PdfBook', @level2type=N'COLUMN', @level2name=N'CreateTime';
-- ===================== 2. 章节表(目录+聚合正文,支持多级) =====================
IF OBJECT_ID(N'[dbo].[Sys_PdfChapter]', N'U') IS NULL
BEGIN
CREATE TABLE [dbo].[Sys_PdfChapter] (
[ChapterId] nvarchar(50) COLLATE Chinese_PRC_CI_AS NOT NULL,
[BookId] nvarchar(50) COLLATE Chinese_PRC_CI_AS NOT NULL,
[ParentChapterId] nvarchar(50) COLLATE Chinese_PRC_CI_AS NULL,
[Level] int NULL,
[ChapterTitle] nvarchar(200) COLLATE Chinese_PRC_CI_AS NULL,
[PageStart] int NULL,
[PageEnd] int NULL,
[Text] nvarchar(max) COLLATE Chinese_PRC_CI_AS NULL,
[SortNo] int NULL,
CONSTRAINT [PK_Sys_PdfChapter] PRIMARY KEY CLUSTERED ([ChapterId] ASC),
CONSTRAINT [FK_PdfChapter_Book] FOREIGN KEY ([BookId]) REFERENCES [dbo].[Sys_PdfBook]([BookId])
);
END
IF COL_LENGTH(N'dbo.Sys_PdfChapter', N'ChapterId') IS NOT NULL AND NOT EXISTS (SELECT 1 FROM sys.extended_properties WHERE class=1 AND major_id=OBJECT_ID(N'dbo.Sys_PdfChapter') AND minor_id=COLUMNPROPERTY(OBJECT_ID(N'dbo.Sys_PdfChapter'), N'ChapterId', 'ColumnId') AND name=N'MS_Description')
EXEC sp_addextendedproperty @name=N'MS_Description', @value=N'章节ID(主键)', @level0type=N'SCHEMA', @level0name=N'dbo', @level1type=N'TABLE', @level1name=N'Sys_PdfChapter', @level2type=N'COLUMN', @level2name=N'ChapterId';
IF COL_LENGTH(N'dbo.Sys_PdfChapter', N'BookId') IS NOT NULL AND NOT EXISTS (SELECT 1 FROM sys.extended_properties WHERE class=1 AND major_id=OBJECT_ID(N'dbo.Sys_PdfChapter') AND minor_id=COLUMNPROPERTY(OBJECT_ID(N'dbo.Sys_PdfChapter'), N'BookId', 'ColumnId') AND name=N'MS_Description')
EXEC sp_addextendedproperty @name=N'MS_Description', @value=N'所属书籍ID(外键→Sys_PdfBook)', @level0type=N'SCHEMA', @level0name=N'dbo', @level1type=N'TABLE', @level1name=N'Sys_PdfChapter', @level2type=N'COLUMN', @level2name=N'BookId';
IF COL_LENGTH(N'dbo.Sys_PdfChapter', N'ParentChapterId') IS NOT NULL AND NOT EXISTS (SELECT 1 FROM sys.extended_properties WHERE class=1 AND major_id=OBJECT_ID(N'dbo.Sys_PdfChapter') AND minor_id=COLUMNPROPERTY(OBJECT_ID(N'dbo.Sys_PdfChapter'), N'ParentChapterId', 'ColumnId') AND name=N'MS_Description')
EXEC sp_addextendedproperty @name=N'MS_Description', @value=N'上一级章节ID(NULL=顶级,用于多级目录)', @level0type=N'SCHEMA', @level0name=N'dbo', @level1type=N'TABLE', @level1name=N'Sys_PdfChapter', @level2type=N'COLUMN', @level2name=N'ParentChapterId';
IF COL_LENGTH(N'dbo.Sys_PdfChapter', N'Level') IS NOT NULL AND NOT EXISTS (SELECT 1 FROM sys.extended_properties WHERE class=1 AND major_id=OBJECT_ID(N'dbo.Sys_PdfChapter') AND minor_id=COLUMNPROPERTY(OBJECT_ID(N'dbo.Sys_PdfChapter'), N'Level', 'ColumnId') AND name=N'MS_Description')
EXEC sp_addextendedproperty @name=N'MS_Description', @value=N'层级(1章 2节 3小节)', @level0type=N'SCHEMA', @level0name=N'dbo', @level1type=N'TABLE', @level1name=N'Sys_PdfChapter', @level2type=N'COLUMN', @level2name=N'Level';
IF COL_LENGTH(N'dbo.Sys_PdfChapter', N'ChapterTitle') IS NOT NULL AND NOT EXISTS (SELECT 1 FROM sys.extended_properties WHERE class=1 AND major_id=OBJECT_ID(N'dbo.Sys_PdfChapter') AND minor_id=COLUMNPROPERTY(OBJECT_ID(N'dbo.Sys_PdfChapter'), N'ChapterTitle', 'ColumnId') AND name=N'MS_Description')
EXEC sp_addextendedproperty @name=N'MS_Description', @value=N'章节名称', @level0type=N'SCHEMA', @level0name=N'dbo', @level1type=N'TABLE', @level1name=N'Sys_PdfChapter', @level2type=N'COLUMN', @level2name=N'ChapterTitle';
IF COL_LENGTH(N'dbo.Sys_PdfChapter', N'PageStart') IS NOT NULL AND NOT EXISTS (SELECT 1 FROM sys.extended_properties WHERE class=1 AND major_id=OBJECT_ID(N'dbo.Sys_PdfChapter') AND minor_id=COLUMNPROPERTY(OBJECT_ID(N'dbo.Sys_PdfChapter'), N'PageStart', 'ColumnId') AND name=N'MS_Description')
EXEC sp_addextendedproperty @name=N'MS_Description', @value=N'起始页码', @level0type=N'SCHEMA', @level0name=N'dbo', @level1type=N'TABLE', @level1name=N'Sys_PdfChapter', @level2type=N'COLUMN', @level2name=N'PageStart';
IF COL_LENGTH(N'dbo.Sys_PdfChapter', N'PageEnd') IS NOT NULL AND NOT EXISTS (SELECT 1 FROM sys.extended_properties WHERE class=1 AND major_id=OBJECT_ID(N'dbo.Sys_PdfChapter') AND minor_id=COLUMNPROPERTY(OBJECT_ID(N'dbo.Sys_PdfChapter'), N'PageEnd', 'ColumnId') AND name=N'MS_Description')
EXEC sp_addextendedproperty @name=N'MS_Description', @value=N'结束页码', @level0type=N'SCHEMA', @level0name=N'dbo', @level1type=N'TABLE', @level1name=N'Sys_PdfChapter', @level2type=N'COLUMN', @level2name=N'PageEnd';
IF COL_LENGTH(N'dbo.Sys_PdfChapter', N'Text') IS NOT NULL AND NOT EXISTS (SELECT 1 FROM sys.extended_properties WHERE class=1 AND major_id=OBJECT_ID(N'dbo.Sys_PdfChapter') AND minor_id=COLUMNPROPERTY(OBJECT_ID(N'dbo.Sys_PdfChapter'), N'Text', 'ColumnId') AND name=N'MS_Description')
EXEC sp_addextendedproperty @name=N'MS_Description', @value=N'章节聚合正文(供检索)', @level0type=N'SCHEMA', @level0name=N'dbo', @level1type=N'TABLE', @level1name=N'Sys_PdfChapter', @level2type=N'COLUMN', @level2name=N'Text';
IF COL_LENGTH(N'dbo.Sys_PdfChapter', N'SortNo') IS NOT NULL AND NOT EXISTS (SELECT 1 FROM sys.extended_properties WHERE class=1 AND major_id=OBJECT_ID(N'dbo.Sys_PdfChapter') AND minor_id=COLUMNPROPERTY(OBJECT_ID(N'dbo.Sys_PdfChapter'), N'SortNo', 'ColumnId') AND name=N'MS_Description')
EXEC sp_addextendedproperty @name=N'MS_Description', @value=N'排序号(用于目录顺序)', @level0type=N'SCHEMA', @level0name=N'dbo', @level1type=N'TABLE', @level1name=N'Sys_PdfChapter', @level2type=N'COLUMN', @level2name=N'SortNo';