Book_system/sql/book_system.sql
2025-04-29 11:18:18 +08:00

194 lines
7.2 KiB
SQL

/*
Navicat Premium Dump SQL
Source Server : Book_system
Source Server Type : MySQL
Source Server Version : 80400 (8.4.0)
Source Host : 27.124.22.104:3306
Source Schema : book_system
Target Server Type : MySQL
Target Server Version : 80400 (8.4.0)
File Encoding : 65001
Date: 29/04/2025 00:41:53
*/
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ----------------------------
-- Table structure for announcements
-- ----------------------------
DROP TABLE IF EXISTS `announcements`;
CREATE TABLE `announcements` (
`id` int NOT NULL AUTO_INCREMENT,
`title` varchar(128) COLLATE utf8mb4_general_ci NOT NULL,
`content` text COLLATE utf8mb4_general_ci NOT NULL,
`publisher_id` int NOT NULL,
`is_top` tinyint DEFAULT '0',
`status` tinyint DEFAULT '1',
`created_at` datetime NOT NULL,
`updated_at` datetime NOT NULL,
PRIMARY KEY (`id`),
KEY `publisher_id` (`publisher_id`),
CONSTRAINT `announcements_ibfk_1` FOREIGN KEY (`publisher_id`) REFERENCES `users` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
-- ----------------------------
-- Table structure for books
-- ----------------------------
DROP TABLE IF EXISTS `books`;
CREATE TABLE `books` (
`id` int NOT NULL AUTO_INCREMENT,
`title` varchar(255) COLLATE utf8mb4_general_ci NOT NULL,
`author` varchar(128) COLLATE utf8mb4_general_ci NOT NULL,
`publisher` varchar(128) COLLATE utf8mb4_general_ci DEFAULT NULL,
`category_id` int DEFAULT NULL,
`tags` varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL,
`isbn` varchar(32) COLLATE utf8mb4_general_ci DEFAULT NULL,
`publish_year` varchar(16) COLLATE utf8mb4_general_ci DEFAULT NULL,
`description` text COLLATE utf8mb4_general_ci,
`cover_url` varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL,
`stock` int DEFAULT '0',
`price` decimal(10,2) DEFAULT NULL,
`status` tinyint DEFAULT '1',
`created_at` datetime NOT NULL,
`updated_at` datetime NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `isbn` (`isbn`),
KEY `category_id` (`category_id`),
CONSTRAINT `books_ibfk_1` FOREIGN KEY (`category_id`) REFERENCES `categories` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
-- ----------------------------
-- Table structure for borrow_records
-- ----------------------------
DROP TABLE IF EXISTS `borrow_records`;
CREATE TABLE `borrow_records` (
`id` int NOT NULL AUTO_INCREMENT,
`user_id` int NOT NULL,
`book_id` int NOT NULL,
`borrow_date` datetime NOT NULL,
`due_date` datetime NOT NULL,
`return_date` datetime DEFAULT NULL,
`renew_count` int DEFAULT '0',
`status` tinyint DEFAULT '1',
`remark` varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL,
`created_at` datetime NOT NULL,
`updated_at` datetime NOT NULL,
PRIMARY KEY (`id`),
KEY `user_id` (`user_id`),
KEY `book_id` (`book_id`),
CONSTRAINT `borrow_records_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`),
CONSTRAINT `borrow_records_ibfk_2` FOREIGN KEY (`book_id`) REFERENCES `books` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
-- ----------------------------
-- Table structure for categories
-- ----------------------------
DROP TABLE IF EXISTS `categories`;
CREATE TABLE `categories` (
`id` int NOT NULL AUTO_INCREMENT,
`name` varchar(64) COLLATE utf8mb4_general_ci NOT NULL,
`parent_id` int DEFAULT NULL,
`sort` int DEFAULT '0',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
-- ----------------------------
-- Table structure for inventory_logs
-- ----------------------------
DROP TABLE IF EXISTS `inventory_logs`;
CREATE TABLE `inventory_logs` (
`id` int NOT NULL AUTO_INCREMENT,
`book_id` int NOT NULL,
`change_type` varchar(32) COLLATE utf8mb4_general_ci NOT NULL,
`change_amount` int NOT NULL,
`after_stock` int NOT NULL,
`operator_id` int DEFAULT NULL,
`remark` varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL,
`changed_at` datetime NOT NULL,
PRIMARY KEY (`id`),
KEY `book_id` (`book_id`),
KEY `operator_id` (`operator_id`),
CONSTRAINT `inventory_logs_ibfk_1` FOREIGN KEY (`book_id`) REFERENCES `books` (`id`),
CONSTRAINT `inventory_logs_ibfk_2` FOREIGN KEY (`operator_id`) REFERENCES `users` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
-- ----------------------------
-- Table structure for logs
-- ----------------------------
DROP TABLE IF EXISTS `logs`;
CREATE TABLE `logs` (
`id` int NOT NULL AUTO_INCREMENT,
`user_id` int DEFAULT NULL,
`action` varchar(64) COLLATE utf8mb4_general_ci NOT NULL,
`target_type` varchar(32) COLLATE utf8mb4_general_ci DEFAULT NULL,
`target_id` int DEFAULT NULL,
`ip_address` varchar(45) COLLATE utf8mb4_general_ci DEFAULT NULL,
`description` varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL,
`created_at` datetime NOT NULL,
PRIMARY KEY (`id`),
KEY `user_id` (`user_id`),
CONSTRAINT `logs_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
-- ----------------------------
-- Table structure for notifications
-- ----------------------------
DROP TABLE IF EXISTS `notifications`;
CREATE TABLE `notifications` (
`id` int NOT NULL AUTO_INCREMENT,
`user_id` int NOT NULL,
`title` varchar(128) COLLATE utf8mb4_general_ci NOT NULL,
`content` text COLLATE utf8mb4_general_ci NOT NULL,
`type` varchar(32) COLLATE utf8mb4_general_ci NOT NULL,
`status` tinyint DEFAULT '0',
`sender_id` int DEFAULT NULL,
`created_at` datetime NOT NULL,
`read_at` datetime DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `user_id` (`user_id`),
KEY `sender_id` (`sender_id`),
CONSTRAINT `notifications_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`),
CONSTRAINT `notifications_ibfk_2` FOREIGN KEY (`sender_id`) REFERENCES `users` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
-- ----------------------------
-- Table structure for roles
-- ----------------------------
DROP TABLE IF EXISTS `roles`;
CREATE TABLE `roles` (
`id` int NOT NULL AUTO_INCREMENT,
`role_name` varchar(32) COLLATE utf8mb4_general_ci NOT NULL,
`description` varchar(128) COLLATE utf8mb4_general_ci DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `role_name` (`role_name`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
-- ----------------------------
-- Table structure for users
-- ----------------------------
DROP TABLE IF EXISTS `users`;
CREATE TABLE `users` (
`id` int NOT NULL AUTO_INCREMENT,
`username` varchar(64) COLLATE utf8mb4_general_ci NOT NULL,
`password` varchar(255) COLLATE utf8mb4_general_ci NOT NULL,
`email` varchar(128) COLLATE utf8mb4_general_ci DEFAULT NULL,
`phone` varchar(20) COLLATE utf8mb4_general_ci DEFAULT NULL,
`nickname` varchar(64) COLLATE utf8mb4_general_ci DEFAULT NULL,
`status` tinyint DEFAULT '1',
`role_id` int NOT NULL DEFAULT '2',
`created_at` datetime NOT NULL,
`updated_at` datetime NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `username` (`username`),
UNIQUE KEY `email` (`email`),
UNIQUE KEY `phone` (`phone`),
KEY `role_id` (`role_id`),
CONSTRAINT `users_ibfk_1` FOREIGN KEY (`role_id`) REFERENCES `roles` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
SET FOREIGN_KEY_CHECKS = 1;