feat: 添加笔记的数据库sql

This commit is contained in:
yulinling 2025-07-10 22:51:50 +08:00
parent aa04c49422
commit f46f6d97e1
3 changed files with 176 additions and 1 deletions

View File

@ -91,4 +91,82 @@ INSERT INTO `wk_role_user`
VALUES (1072806379208708096, 1072806377661009920); VALUES (1072806379208708096, 1072806377661009920);
INSERT INTO `wk_role_user` INSERT INTO `wk_role_user`
VALUES (1072806379238068224, 1072806378780889088); VALUES (1072806379238068224, 1072806378780889088);
COMMIT;
-- 1. 插入笔记本数据
BEGIN;
INSERT INTO wk_notebooks (id, user_id, name, color, icon, created_at, updated_at, notes_count)
VALUES ('660e8400-e29b-41d4-a716-446655440000', '1072806377661009920', '工作笔记', '#FF5733',
'mdi-briefcase', '2023-01-05 09:00:00', '2023-06-10 14:00:00', 3),
('660e8400-e29b-41d4-a716-446655440001', '1072806377661009920', '学习笔记', '#33A1FF',
'mdi-school', '2023-02-10 13:00:00', '2023-06-12 16:30:00', 2),
('660e8400-e29b-41d4-a716-446655440002', '1072806378780889088', '个人日记', '#8A33FF',
'mdi-book-open', '2023-03-15 08:00:00', '2023-06-13 10:15:00', 1);
COMMIT;
BEGIN;
-- 2. 插入标签数据
INSERT INTO wk_tags (id, user_id, name, color, created_at, usage_count)
VALUES ('770e8400-e29b-41d4-a716-446655440000', '1072806377661009920', '重要', '#FF3333',
'2023-01-06 10:00:00', 2),
('770e8400-e29b-41d4-a716-446655440001', '1072806377661009920', '项目A', '#33FF57',
'2023-01-07 11:00:00', 1),
('770e8400-e29b-41d4-a716-446655440002', '1072806378780889088', '灵感', '#FF33A1',
'2023-03-16 09:00:00', 1);
COMMIT;
BEGIN;
-- 3. 插入笔记数据
INSERT INTO wk_notes (id, user_id, notebook_id, title, content, preview_text, word_count, is_pinned, is_archived,
is_favorite, password_protected, created_at, updated_at, reminder, cover_image)
VALUES
-- Alice的工作笔记
('880e8400-e29b-41d4-a716-446655440000', '1072806377661009920',
'660e8400-e29b-41d4-a716-446655440000', '项目A会议记录',
'## 项目A启动会议\n\n**时间**: 2023-06-10 14:00\n**参会人**: Alice, Bob, Charlie\n\n### 讨论要点\n1. 确定项目时间线\n2. 分配初期任务\n3. 技术方案讨论',
'项目A启动会议 时间: 2023-06-10 14:00 参会人: Alice, Bob, Charlie', 98, TRUE, FALSE, TRUE, FALSE,
'2023-06-10 15:30:00', '2023-06-10 15:30:00', NULL, NULL),
-- Alice的学习笔记
('880e8400-e29b-41d4-a716-446655440001', '1072806377661009920',
'660e8400-e29b-41d4-a716-446655440001', '机器学习笔记',
'# 机器学习基础\n\n## 监督学习\n- 线性回归\n- 逻辑回归\n\n## 无监督学习\n- K-means聚类\n- PCA降维',
'机器学习基础 监督学习 线性回归 逻辑回归 无监督学习 K-means聚类 PCA降维', 56, FALSE, FALSE, FALSE, FALSE,
'2023-06-12 16:00:00', '2023-06-12 16:30:00', NULL, NULL),
-- Alice的另一个工作笔记带提醒
('880e8400-e29b-41d4-a716-446655440002', '1072806377661009920',
'660e8400-e29b-41d4-a716-446655440000', '下周工作计划',
'1. 完成项目A原型设计 (周一)\n2. 与团队review代码 (周三)\n3. 准备客户演示材料 (周五)',
'1. 完成项目A原型设计 (周一) 2. 与团队review代码 (周三) 3. 准备客户演示材料 (周五)', 42, FALSE, FALSE, FALSE,
FALSE, '2023-06-14 09:00:00', '2023-06-14 09:00:00', '2023-06-19 09:00:00', NULL),
-- Bob的个人日记加密笔记
('880e8400-e29b-41d4-a716-446655440003', '1072806378780889088',
'660e8400-e29b-41d4-a716-446655440002', '2023年旅行计划',
'## 夏季旅行\n- 地点: 云南\n- 时间: 7月15-20日\n- 预算: 5000元\n\n## 冬季旅行\n- 地点: 待定',
'夏季旅行 地点: 云南 时间: 7月15-20日 预算: 5000元 冬季旅行 地点: 待定', 45, FALSE, FALSE, TRUE, TRUE,
'2023-06-13 10:00:00', '2023-06-13 10:15:00', NULL, NULL);
COMMIT;
BEGIN;
-- 4. 插入笔记标签关联
INSERT INTO wk_note_tags (note_id, tag_id, created_at)
VALUES ('880e8400-e29b-41d4-a716-446655440000', '770e8400-e29b-41d4-a716-446655440000',
'2023-06-10 15:35:00'), -- 项目A会议记录 -> 重要
('880e8400-e29b-41d4-a716-446655440000', '770e8400-e29b-41d4-a716-446655440001',
'2023-06-10 15:35:00'), -- 项目A会议记录 -> 项目A
('880e8400-e29b-41d4-a716-446655440003', '770e8400-e29b-41d4-a716-446655440002', '2023-06-13 10:20:00');
-- 旅行计划 -> 灵感
COMMIT;
BEGIN;
-- 5. 插入附件数据
INSERT INTO wk_attachments (id, note_id, file_path, file_type, file_name, file_size, created_at, thumbnail_path)
VALUES ('990e8400-e29b-41d4-a716-446655440000', '880e8400-e29b-41d4-a716-446655440000',
'/attachments/projectA_meeting.pdf', 'application/pdf', 'projectA_meeting.pdf', 1024000, '2023-06-10 15:40:00',
NULL),
('990e8400-e29b-41d4-a716-446655440001', '880e8400-e29b-41d4-a716-446655440003', '/attachments/yunnan_map.jpg',
'image/jpeg', 'yunnan_map.jpg', 512000, '2023-06-13 10:30:00', '/attachments/thumbs/yunnan_map_thumb.jpg');
COMMIT; COMMIT;

View File

@ -81,4 +81,100 @@ CREATE TABLE `wk_role_user`
) ENGINE = InnoDB ) ENGINE = InnoDB
DEFAULT CHARSET = utf8mb4 DEFAULT CHARSET = utf8mb4
COLLATE = utf8mb4_unicode_ci COLLATE = utf8mb4_unicode_ci
COMMENT = '角色用户表'; COMMENT = '角色用户表';
DROP TABLE IF EXISTS `wk_notebooks`;
CREATE TABLE `wk_notebooks`
(
id VARCHAR(36) PRIMARY KEY, -- 笔记本唯一标识
user_id bigint(64) NOT NULL COMMENT '所属用户ID', -- 笔记本所有者
name VARCHAR(100) NOT NULL COMMENT '笔记本名称', -- 显示名称
color VARCHAR(20) COMMENT '笔记本颜色标记用于UI显示', -- 如#FF0000
icon VARCHAR(50) COMMENT '笔记本图标标识', -- 如media-book
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '最后更新时间',
notes_count INT DEFAULT 0 COMMENT '包含的笔记数量', -- 用于快速统计
FOREIGN KEY (user_id) REFERENCES wk_user (id) ON DELETE CASCADE,
CONSTRAINT chk_notebook_name CHECK (name <> '') -- 名称不能为空
) COMMENT '用户笔记本分类表,用于组织管理笔记';
DROP TABLE IF EXISTS `wk_notes`;
CREATE TABLE `wk_notes`
(
id VARCHAR(36) PRIMARY KEY COMMENT '笔记唯一标识',
user_id bigint(64) NOT NULL COMMENT '作者用户ID',
notebook_id VARCHAR(36) COMMENT '所属笔记本ID可为空',
title VARCHAR(255) COMMENT '笔记标题,可为空(自动提取内容首行)',
content TEXT NOT NULL COMMENT '笔记正文内容支持Markdown格式',
preview_text VARCHAR(200) COMMENT '内容预览自动提取前200字符',
word_count INTEGER DEFAULT 0 COMMENT '自动计算的字数统计',
is_pinned BOOLEAN DEFAULT FALSE COMMENT '是否置顶显示',
is_archived BOOLEAN DEFAULT FALSE COMMENT '是否归档(不显示在默认列表中)',
is_favorite BOOLEAN DEFAULT FALSE COMMENT '是否标记为收藏',
password_protected BOOLEAN DEFAULT FALSE COMMENT '是否需要密码查看',
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '最后编辑时间',
reminder TIMESTAMP COMMENT '提醒时间,为空表示无提醒',
cover_image VARCHAR(255) COMMENT '封面图片URL',
FOREIGN KEY (user_id) REFERENCES wk_user (id) ON DELETE CASCADE,
FOREIGN KEY (notebook_id) REFERENCES wk_notebooks (id) ON DELETE SET NULL,
CONSTRAINT chk_content_length CHECK (LENGTH(content) > 0) -- 内容不能为空
) COMMENT '核心笔记内容表,存储用户的所有笔记数据';
DROP TABLE IF EXISTS `wk_tags`;
CREATE TABLE `wk_tags`
(
id VARCHAR(36) PRIMARY KEY COMMENT '标签唯一标识',
user_id bigint(64) NOT NULL COMMENT '所属用户ID',
name VARCHAR(50) NOT NULL COMMENT '标签名称',
color VARCHAR(20) COMMENT '标签颜色用于UI显示',
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
usage_count INT DEFAULT 1 COMMENT '标签使用次数,用于排序',
UNIQUE (user_id, name) COMMENT '同一用户的标签名必须唯一',
FOREIGN KEY (user_id) REFERENCES wk_user (id) ON DELETE CASCADE,
CONSTRAINT chk_tag_name CHECK (name <> '') -- 标签名不能为空
) COMMENT '用户自定义标签表,用于多维度分类笔记';
DROP TABLE IF EXISTS `wk_note_tags`;
CREATE TABLE `wk_note_tags`
(
note_id VARCHAR(36) NOT NULL COMMENT '关联的笔记ID',
tag_id VARCHAR(36) NOT NULL COMMENT '关联的标签ID',
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '关联创建时间',
PRIMARY KEY (note_id, tag_id) COMMENT '联合主键,防止重复关联',
FOREIGN KEY (note_id) REFERENCES wk_notes (id) ON DELETE CASCADE,
FOREIGN KEY (tag_id) REFERENCES wk_tags (id) ON DELETE CASCADE
) COMMENT '笔记和标签的多对多关联表';
DROP TABLE IF EXISTS `wk_attachments`;
CREATE TABLE wk_attachments
(
id VARCHAR(36) PRIMARY KEY COMMENT '附件唯一标识',
note_id VARCHAR(36) NOT NULL COMMENT '所属笔记ID',
file_path VARCHAR(255) NOT NULL COMMENT '文件存储路径',
file_type VARCHAR(50) NOT NULL COMMENT '文件MIME类型如image/png',
file_name VARCHAR(255) NOT NULL COMMENT '原始文件名',
file_size INTEGER NOT NULL COMMENT '文件大小(字节)',
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '上传时间',
thumbnail_path VARCHAR(255) COMMENT '缩略图路径(针对图片)',
FOREIGN KEY (note_id) REFERENCES wk_notes (id) ON DELETE CASCADE,
CONSTRAINT chk_file_size CHECK (file_size > 0) -- 文件大小必须为正
) COMMENT '笔记附件表,存储用户上传的各类文件';
# -- 用户相关索引
# CREATE INDEX idx_notes_user ON wk_notes (user_id) COMMENT '加速按用户查询笔记';
# CREATE INDEX idx_tags_user ON wk_tags (user_id) COMMENT '加速按用户查询标签';
# CREATE INDEX idx_notebooks_user ON wk_notebooks (user_id) COMMENT '加速按用户查询笔记本';
#
# -- 笔记内容检索索引
# CREATE INDEX idx_notes_notebook ON wk_notes (notebook_id) COMMENT '加速按笔记本查询笔记';
# CREATE INDEX idx_notes_title ON wk_notes (title) COMMENT '加速按标题搜索笔记';
# CREATE INDEX idx_notes_created ON wk_notes (created_at) COMMENT '加速按创建时间排序';
# CREATE INDEX idx_notes_updated ON wk_notes (updated_at) COMMENT '加速按更新时间排序';
#
# -- 全文检索索引(MySQL示例)
# CREATE FULLTEXT INDEX ft_note_content ON wk_notes (title, content)
# COMMENT '支持对标题和内容的全文检索';
#
# -- 标签查询优化
# CREATE INDEX idx_tags_name ON wk_tags (name) COMMENT '加速标签名称搜索';

View File

@ -0,0 +1 @@
SELECT * FROM wk_notes;