Files
SGGL_HBAZ/DataBase/版本日志/SGGLDB_V2026-08-27-001-pdfbook.sql
T
2026-09-11 11:14:08 +08:00

90 lines
13 KiB
Transact-SQL
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
-- =====================================================================
-- 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';