194 lines
7.2 KiB
SQL
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;
|