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