/* 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;