feat: 添加笔记的数据库sql
This commit is contained in:
parent
aa04c49422
commit
f46f6d97e1
@ -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;
|
||||||
@ -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 '加速标签名称搜索';
|
||||||
1
src/main/resources/db/test.sql
Normal file
1
src/main/resources/db/test.sql
Normal file
@ -0,0 +1 @@
|
|||||||
|
SELECT * FROM wk_notes;
|
||||||
Loading…
Reference in New Issue
Block a user