畢業設計級雲筆記,Web 端,核心功能:用戶管理、筆記增刪改查、分類標籤、圖片附件、多端同步。
CREATE TABLE `user` (
`id` BIGINT PRIMARY KEY AUTO_INCREMENT,
`username` VARCHAR(50) NOT NULL UNIQUE,
`password_hash` VARCHAR(100) NOT NULL,
`email` VARCHAR(100) UNIQUE,
`avatar_url` VARCHAR(255),
`created_at` DATETIME DEFAULT CURRENT_TIMESTAMP,
`updated_at` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);
CREATE TABLE `notebook` (
`id` BIGINT PRIMARY KEY AUTO_INCREMENT,
`user_id` BIGINT NOT NULL,
`name` VARCHAR(100) NOT NULL,
`icon` VARCHAR(50),
`sort_order` INT DEFAULT 0,
`created_at` DATETIME DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (`user_id`) REFERENCES `user`(`id`)
);
CREATE TABLE `note` (
`id` BIGINT PRIMARY KEY AUTO_INCREMENT,
`user_id` BIGINT NOT NULL,
`notebook_id` BIGINT,
`title` VARCHAR(200) NOT NULL,
`content` LONGTEXT, -- 純文本/Markdown/HTML
`content_type` ENUM('markdown','html','text') DEFAULT 'markdown',
`is_deleted` TINYINT DEFAULT 0,
`is_favorite` TINYINT DEFAULT 0,
`created_at` DATETIME DEFAULT CURRENT_TIMESTAMP,
`updated_at` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
FOREIGN KEY (`user_id`) REFERENCES `user`(`id`),
FOREIGN KEY (`notebook_id`) REFERENCES `notebook`(`id`),
INDEX `idx_user_updated` (`user_id`, `updated_at`)
);
CREATE TABLE `tag` (
`id` BIGINT PRIMARY KEY AUTO_INCREMENT,
`user_id` BIGINT NOT NULL,
`name` VARCHAR(50) NOT NULL,
UNIQUE KEY `uk_user_name` (`user_id`, `name`)
);
CREATE TABLE `note_tag` (
`note_id` BIGINT NOT NULL,
`tag_id` BIGINT NOT NULL,
PRIMARY KEY (`note_id`, `tag_id`),
FOREIGN KEY (`note_id`) REFERENCES `note`(`id`) ON DELETE CASCADE,
FOREIGN KEY (`tag_id`) REFERENCES `tag`(`id`) ON DELETE CASCADE
);
CREATE TABLE `attachment` (
`id` BIGINT PRIMARY KEY AUTO_INCREMENT,
`note_id` BIGINT NOT NULL,
`file_name` VARCHAR(255),
`file_path` VARCHAR(500), -- OSS 路徑或相對路徑
`file_size` BIGINT,
`mime_type` VARCHAR(100),
`created_at` DATETIME DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (`note_id`) REFERENCES `note`(`id`) ON DELETE CASCADE
);
| 方案 | 優點 | 缺點 | 適用場景 |
|---|---|---|---|
| 數據庫 BLOB/TEXT | 事務一致性、備份簡單、無需額外組件 | 大對象膨脹備份/恢復慢、連接池壓力大、不利於 CDN 分發 | 小型項目、文本為主、附件極少 |
| 服務器本地文件系統 | 讀寫性能高、無網絡開銷 | 單點故障、擴展困難、多機部署需共享存儲 (NFS/GlusterFS) | 單機部署、附件較大 |
| 對象存儲 (OSS/S3/MinIO) | 無限擴展、高可用、CDN 加速、簽名直傳減輕服務器 | 引入外部依賴、最終一致性、成本隨量增長 | 生產環境、多端同步、圖片/文件較多 |
LONGTEXT(Markdown/HTML),支持全文檢索。file_path (如 bucket/notes/user123/abc.png)。畢業設計以 MySQL + MinIO + Redis 搭建核心存儲棧,實現筆記 CRUD、分類標籤、圖片上傳、關鍵字搜索,代碼結構清晰、文檔完善,足以應對答辯與展示。