TravelContentCreator/db/init_database.sql
2025-07-11 15:29:39 +08:00

473 lines
27 KiB
SQL
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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.

-- 创建数据库
DROP DATABASE IF EXISTS travel_content;
CREATE DATABASE IF NOT EXISTS travel_content;
USE travel_content;
-- 创建用户表
CREATE TABLE IF NOT EXISTS user (
id BIGINT AUTO_INCREMENT COMMENT 'id' PRIMARY KEY,
userAccount VARCHAR(256) NOT NULL COMMENT '账号',
userPassword VARCHAR(512) NOT NULL COMMENT '密码',
userName VARCHAR(256) NULL COMMENT '用户昵称',
userAvatar VARCHAR(1024) NULL COMMENT '用户头像',
userEmail VARCHAR(255) NULL COMMENT '用户邮箱',
userProfile VARCHAR(512) NULL COMMENT '用户简介',
userRole VARCHAR(256) DEFAULT 'user' NOT NULL COMMENT '用户角色user/admin',
editTime DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL COMMENT '编辑时间',
createTime DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL COMMENT '创建时间',
updateTime DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
lastLogin DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL COMMENT '最后登录时间',
isDelete TINYINT DEFAULT 0 NOT NULL COMMENT '是否删除',
CONSTRAINT uk_userAccount UNIQUE (userAccount),
CONSTRAINT userEmail UNIQUE (userEmail)
) COMMENT '用户' COLLATE = utf8mb4_unicode_ci;
CREATE INDEX idx_user_name ON user (userName);
-- 创建素材文件夹表
CREATE TABLE IF NOT EXISTS material_folder (
id BIGINT AUTO_INCREMENT COMMENT 'id' PRIMARY KEY,
userId BIGINT NOT NULL COMMENT '创建用户id',
folderName VARCHAR(256) NOT NULL COMMENT '文件夹名称',
parentId BIGINT DEFAULT 0 NOT NULL COMMENT '父文件夹id0表示根目录',
description VARCHAR(512) NULL COMMENT '文件夹描述',
isPublic TINYINT DEFAULT 0 NOT NULL COMMENT '是否公开0私有1公开',
createTime DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL COMMENT '创建时间',
updateTime DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
isDelete TINYINT DEFAULT 0 NOT NULL COMMENT '是否删除',
CONSTRAINT uk_folder_name_user UNIQUE (folderName, userId, parentId, isDelete)
) COMMENT '素材文件夹表' COLLATE = utf8mb4_unicode_ci;
CREATE INDEX idx_material_folder_parent ON material_folder (parentId);
CREATE INDEX idx_material_folder_user ON material_folder (userId);
-- 创建素材表
CREATE TABLE IF NOT EXISTS material (
id BIGINT AUTO_INCREMENT COMMENT 'id' PRIMARY KEY,
userId BIGINT NOT NULL COMMENT '上传用户id',
folderId BIGINT DEFAULT 0 NOT NULL COMMENT '所属文件夹id0表示根目录',
materialName VARCHAR(256) NOT NULL COMMENT '素材名称',
materialType VARCHAR(32) NOT NULL COMMENT '素材类型image/video/document',
filePath VARCHAR(1024) NOT NULL COMMENT '文件存储路径',
fileSize BIGINT NOT NULL COMMENT '文件大小(字节)',
fileFormat VARCHAR(32) NOT NULL COMMENT '文件格式jpg/png/mp4/pdf/doc等',
fileUrl VARCHAR(1024) NULL COMMENT '文件访问URL',
description VARCHAR(512) NULL COMMENT '素材描述',
tags VARCHAR(512) NULL COMMENT '素材标签(逗号分隔)',
isPublic TINYINT DEFAULT 0 NOT NULL COMMENT '是否公开0私有1公开',
status VARCHAR(32) DEFAULT 'active' NOT NULL COMMENT '状态active/inactive/deleted',
viewCount INT DEFAULT 0 NOT NULL COMMENT '查看次数',
downloadCount INT DEFAULT 0 NOT NULL COMMENT '下载次数',
createTime DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL COMMENT '创建时间',
updateTime DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
isDelete TINYINT DEFAULT 0 NOT NULL COMMENT '是否删除',
CONSTRAINT uk_material_name_user_folder UNIQUE (materialName, userId, folderId)
) COMMENT '素材表' COLLATE = utf8mb4_unicode_ci;
CREATE INDEX idx_material_create_time ON material (createTime);
CREATE INDEX idx_material_folder ON material (folderId);
CREATE INDEX idx_material_public ON material (isPublic);
CREATE INDEX idx_material_status ON material (status);
CREATE INDEX idx_material_type ON material (materialType);
CREATE INDEX idx_material_user ON material (userId);
-- 创建景区表
CREATE TABLE IF NOT EXISTS scenicSpot (
id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '主键id',
userId BIGINT NOT NULL COMMENT '用户ID',
name VARCHAR(100) NOT NULL COMMENT '景区名称',
address VARCHAR(255) NULL COMMENT '地址',
trafficInfo VARCHAR(255) NULL COMMENT '交通指南',
description TEXT NULL COMMENT '描述',
advantage TEXT NULL COMMENT '景区优势',
highlight TEXT NULL COMMENT '景区亮点',
isPublic TINYINT NOT NULL DEFAULT 0 COMMENT '是否公开0私有1公开',
isDelete TINYINT NOT NULL DEFAULT 0 COMMENT '是否删除',
createTime DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
updateTime DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间'
) COMMENT '景区表' COLLATE = utf8mb4_unicode_ci;
CREATE INDEX idx_scenicSpot_user ON scenicSpot (userId);
CREATE INDEX idx_scenicSpot_name ON scenicSpot (name);
CREATE INDEX idx_scenicSpot_public ON scenicSpot (isPublic);
-- 创建产品表
CREATE TABLE IF NOT EXISTS product (
id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '主键id',
userId BIGINT NOT NULL COMMENT '用户ID',
name VARCHAR(100) NOT NULL COMMENT '产品名称',
originPrice DECIMAL(10,2) NULL COMMENT '原价',
realPrice DECIMAL(10,2) NULL COMMENT '实际价格',
packageInfo VARCHAR(255) NULL COMMENT '套票详情',
salesPeriod VARCHAR(100) NULL COMMENT '售卖期',
stock INT NULL COMMENT '库存',
advantage TEXT NULL COMMENT '产品优势',
highlight TEXT NULL COMMENT '产品亮点',
description TEXT NULL COMMENT '产品描述',
isPublic TINYINT NOT NULL DEFAULT 0 COMMENT '是否公开0私有1公开',
isDelete TINYINT NOT NULL DEFAULT 0 COMMENT '是否删除',
createTime DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
updateTime DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间'
) COMMENT '产品表' COLLATE = utf8mb4_unicode_ci;
CREATE INDEX idx_product_user ON product (userId);
CREATE INDEX idx_product_name ON product (name);
CREATE INDEX idx_product_public ON product (isPublic);
-- 创建内容风格表
CREATE TABLE IF NOT EXISTS contentStyle (
id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '主键id',
styleName VARCHAR(100) NOT NULL COMMENT '风格名称',
description TEXT NULL COMMENT '描述',
isDelete TINYINT NOT NULL DEFAULT 0 COMMENT '是否删除',
createTime DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
updateTime DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
CONSTRAINT uk_styleName UNIQUE (styleName, isDelete)
) COMMENT '内容风格表' COLLATE = utf8mb4_unicode_ci;
CREATE INDEX idx_contentStyle_name ON contentStyle (styleName);
-- 创建目标人群表
CREATE TABLE IF NOT EXISTS targetAudience (
id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT 'id',
audienceName VARCHAR(100) NOT NULL COMMENT '受众名称',
description TEXT NULL COMMENT '描述',
isDelete TINYINT DEFAULT 0 NOT NULL COMMENT '',
createTime DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL COMMENT '',
updateTime DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '',
CONSTRAINT uk_audienceName UNIQUE (audienceName, isDelete)
) COMMENT '' COLLATE = utf8mb4_unicode_ci;
CREATE INDEX idx_targetAudience_name ON targetAudience (audienceName);
-- 创建文档解析表
CREATE TABLE IF NOT EXISTS documentParse (
id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT 'id',
scenicName VARCHAR(100) NULL COMMENT '',
address VARCHAR(255) NULL COMMENT '',
trafficInfo VARCHAR(255) NULL COMMENT '',
description TEXT NULL COMMENT '',
advantage TEXT NULL COMMENT '',
highlight TEXT NULL COMMENT '',
productName VARCHAR(100) NULL COMMENT '',
originPrice DECIMAL(10,2) NULL COMMENT '',
realPrice DECIMAL(10,2) NULL COMMENT '',
packageInfo VARCHAR(255) NULL COMMENT '',
salesPeriod VARCHAR(100) NULL COMMENT '',
stock INT NULL COMMENT '',
productAdvantage TEXT NULL COMMENT '',
productHighlight TEXT NULL COMMENT '',
productDescription TEXT NULL COMMENT '',
isDelete TINYINT NOT NULL DEFAULT 0 COMMENT '',
createTime DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '',
updateTime DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT ''
) COMMENT '' COLLATE = utf8mb4_unicode_ci;
CREATE INDEX idx_documentParse_scenicName ON documentParse (scenicName);
CREATE INDEX idx_documentParse_productName ON documentParse (productName);
-- 创建选题信息表
CREATE TABLE IF NOT EXISTS topics (
id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT 'id',
userId BIGINT NOT NULL COMMENT 'ID',
title VARCHAR(100) NOT NULL COMMENT '',
description VARCHAR(255) NULL COMMENT '',
logic TEXT NULL COMMENT '',
productLogic TEXT NULL COMMENT '',
styleLogic TEXT NULL COMMENT '',
targetAudienceLogic TEXT NULL COMMENT '',
publicationDates TEXT NULL COMMENT '"2025-05-01,2025-05-03"JSON',
status VARCHAR(20) NOT NULL DEFAULT 'draft' COMMENT '',
isLocked TINYINT NOT NULL DEFAULT 0 COMMENT '',
isDelete TINYINT NOT NULL DEFAULT 0 COMMENT '',
createTime DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '',
updateTime DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT ''
) COMMENT '' COLLATE = utf8mb4_unicode_ci;
CREATE INDEX idxTopicsUser ON topics (userId);
CREATE INDEX idxTopicsTitle ON topics (title);
CREATE INDEX idxTopicsStatus ON topics (status);
-- 创建选题-景区关联表
CREATE TABLE IF NOT EXISTS topicScenic (
id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT 'id',
topicId BIGINT NOT NULL COMMENT 'ID',
scenicId BIGINT NOT NULL COMMENT 'ID'
) COMMENT '-' COLLATE = utf8mb4_unicode_ci;
CREATE INDEX idx_topic_scenic_topicId ON topicScenic (topicId);
CREATE INDEX idx_topic_scenic_scenicId ON topicScenic (scenicId);
-- 创建选题-产品关联表
CREATE TABLE IF NOT EXISTS topicProduct (
id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT 'id',
topicId BIGINT NOT NULL COMMENT 'ID',
productId BIGINT NOT NULL COMMENT 'ID'
) COMMENT '-' COLLATE = utf8mb4_unicode_ci;
CREATE INDEX idx_topic_product_topicId ON topicProduct (topicId);
CREATE INDEX idx_topic_product_productId ON topicProduct (productId);
-- 创建选题-风格关联表
CREATE TABLE IF NOT EXISTS topicStyle (
id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT 'id',
topicId BIGINT NOT NULL COMMENT 'ID',
styleId BIGINT NOT NULL COMMENT 'ID'
) COMMENT '-' COLLATE = utf8mb4_unicode_ci;
CREATE INDEX idx_topic_style_topicId ON topicStyle (topicId);
CREATE INDEX idx_topic_style_styleId ON topicStyle (styleId);
-- 创建选题-目标受众关联表
CREATE TABLE IF NOT EXISTS topicAudience (
id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT 'id',
topicId BIGINT NOT NULL COMMENT 'ID',
audienceId BIGINT NOT NULL COMMENT 'ID'
) COMMENT '-' COLLATE = utf8mb4_unicode_ci;
CREATE INDEX idx_topic_audience_topicId ON topicAudience (topicId);
CREATE INDEX idx_topic_audience_audienceId ON topicAudience (audienceId);
-- 添加外键约束
ALTER TABLE material_folder
ADD CONSTRAINT fk_material_folder_user
FOREIGN KEY (userId) REFERENCES user (id)
ON DELETE CASCADE;
ALTER TABLE material
ADD CONSTRAINT fk_material_user
FOREIGN KEY (userId) REFERENCES user (id)
ON DELETE CASCADE;
ALTER TABLE material
ADD CONSTRAINT fk_material_folder
FOREIGN KEY (folderId) REFERENCES material_folder (id)
ON DELETE CASCADE;
-- 插入模拟数据
-- 插入用户数据
INSERT INTO user (userAccount, userPassword, userName, userAvatar, userEmail, userProfile, userRole)
VALUES
('admin', 'e10adc3949ba59abbe56e057f20f883e', '', 'https://example.com/avatar1.jpg', 'admin@example.com', '', 'admin'),
('user1', 'e10adc3949ba59abbe56e057f20f883e', '', 'https://example.com/avatar2.jpg', 'zhangsan@example.com', '', 'user'),
('user2', 'e10adc3949ba59abbe56e057f20f883e', '', 'https://example.com/avatar3.jpg', 'lisi@example.com', '', 'user');
-- 插入素材文件夹数据
INSERT INTO material_folder (userId, folderName, parentId, description, isPublic)
VALUES
(1, '', 0, '', 1),
(1, '', 0, '', 1),
(2, '', 0, '', 0),
(2, '', 3, '', 0),
(3, '', 0, '', 0);
-- 插入素材数据
INSERT INTO material (userId, folderId, materialName, materialType, filePath, fileSize, fileFormat, fileUrl, description, tags, isPublic)
VALUES
(1, 1, '', 'image', '/uploads/huangshan_sunrise.jpg', 2048000, 'jpg', 'https://example.com/huangshan_sunrise.jpg', '', ',,', 1),
(1, 1, '', 'image', '/uploads/zhangjiajie_panorama.jpg', 3072000, 'jpg', 'https://example.com/zhangjiajie_panorama.jpg', '', ',,', 1),
(1, 2, '5', 'document', '/uploads/sanya_5days.pdf', 1024000, 'pdf', 'https://example.com/sanya_5days.pdf', '5', ',,', 1),
(2, 4, '', 'image', '/uploads/jiuzhaigou_waterfall.jpg', 2560000, 'jpg', 'https://example.com/jiuzhaigou_waterfall.jpg', '', ',,', 0),
(3, 5, '', 'video', '/uploads/lijiang_promo.mp4', 102400000, 'mp4', 'https://example.com/lijiang_promo.mp4', '', ',,,', 0);
-- 插入景区数据
INSERT INTO scenicSpot (userId, name, address, trafficInfo, description, advantage, highlight, isPublic)
VALUES
(1, '', '', '', '"四绝"', '5A级景区', '', 1),
(1, '', '', '', '', '', '', 1),
(2, '', '', '', '"四绝"', '', '', 0),
(3, '', '', '', '', '西', '', 1);
-- 插入产品数据
INSERT INTO product (userId, name, originPrice, realPrice, packageInfo, salesPeriod, stock, advantage, highlight, description, isPublic)
VALUES
(1, '', 2199.00, 1899.00, '宿', '2025-01-012025-12-31', 1000, '', '', '宿', 1),
(1, '', 3999.00, 3599.00, '宿', '2025-06-012025-08-31', 800, '', '', '22', 1),
(2, '', 5299.00, 4899.00, '宿', '2025-09-152025-10-31', 500, '', '', '+线', 0),
(3, '', 6299.00, 5899.00, '宿', '2025-01-012025-12-31', 600, '', '', '+西', 1);
-- 插入内容风格数据
INSERT INTO contentStyle (styleName, description)
VALUES
('', '
++
1.1emoji18
2.
3.<>仿
<><><>
1.
2.
3. <>/宿
4. +emoji
5. 仿
6🆚6
7N种神仙打开方式
👉线
便
-
🌤
55°C~20°C穿穿
线++
-
🧳
+
穿++15穿
yao+yao+湿+
-
线/便
-
🚗76线
Day1-
Day2--
Day3--
Day4--
Day5--/
Day6--
Day7-
-
🍖
🔥Top3
💣
-
Tips
🔥 ++515穿
🔥
🔥 线2
🔥 穿穿
-
📸
穿+
穿西
PS1TB胃和256G手机内存
-
TAG标签创作
9TAG标签+
1.TAG标签的内容围绕<#+><#+><#+><#线+>
2.TAG标签的内容围绕<#/><#/+><#/+>
3.TAG标签的内容围绕<#><#><##+>
TAG直接按要求直出内容
'),
('', '
++
1.emoji
2.
3.10
1.
2.
3.
4. +++
5.
6.
'),
-- 插入目标人群数据
INSERT INTO targetAudience (audienceName, description)
VALUES
('', '
1.
- 25-453-12.
- 70%.
2.
- .
-
3.
1. 1-2
2. 6-8
3. 9-10
4. 4-5
5. 12
6.4
7.5-6
8.8-9
9.12-2
'),
('', '
1.
- .
2.
- 3"城市名称1小时可达".
- 使"说走就走""逃离城市".
3.
- 便便便便.
- ++.
- 宿///.
4.
-
5.
1. 1-2
2. 6-8
3. 9-10
4. 4-5
5. 12
6.4
7.5-6
8.8-9
9.12-2
'),
-- 插入选题信息数据
INSERT INTO topics (userId, title, description, logic, productLogic, styleLogic, targetAudienceLogic, publicationDates, status)
VALUES
(1, '🏞', '', '', '', '', '', '2025-04-15,2025-04-20,2025-04-25', 'published'),
(1, '🌲', '', '22', '', '', '', '2025-06-01,2025-06-15,2025-07-01', 'draft'),
(2, '📸', '', '', '', '', '', '2025-09-01,2025-09-15', 'draft'),
(3, '🏮', '', '', '', '', '', '2025-07-01,2025-07-15', 'published');
-- 插入选题-景区关联数据
INSERT INTO topicScenic (topicId, scenicId)
VALUES
(1, 1),
(2, 2),
(3, 3),
(4, 4);
-- 插入选题-产品关联数据
INSERT INTO topicProduct (topicId, productId)
VALUES
(1, 1),
(2, 2),
(3, 3),
(4, 4);
-- 插入选题-风格关联数据
INSERT INTO topicStyle (topicId, styleId)
VALUES
(1, 1),
(2, 2),
(3, 4),
(4, 5);
-- 插入选题-目标受众关联数据
INSERT INTO topicAudience (topicId, audienceId)
VALUES
(1, 2),
(2, 2),
(2, 5),
(3, 1),
(3, 6),
(4, 5),
(4, 6);