DB.sql 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. -- epub_manage.book definition
  2. CREATE TABLE `book` (
  3. `id` INT NOT NULL AUTO_INCREMENT, -- 主键使用自动递增的整数类型
  4. `book_name` VARCHAR(255) NOT NULL, -- 合理缩短长度
  5. `book_id` VARCHAR(100) NOT NULL, -- 修改长度为 100
  6. `book_md5` VARCHAR(32) NOT NULL, -- MD5 长度是固定的 32 个字符
  7. `language` VARCHAR(50) DEFAULT NULL COMMENT '语言', -- 合理缩短字段长度
  8. `date` DATE DEFAULT NULL COMMENT '创建时间', -- 使用 DATE 类型来存储日期
  9. `creatorFileAs` VARCHAR(255) DEFAULT NULL COMMENT '电子书创建人',
  10. `UUID` VARCHAR(36) DEFAULT NULL COMMENT '电子书唯一编号', -- UUID 长度设置为 36
  11. `ISBN` VARCHAR(20) DEFAULT NULL COMMENT '电子书出版编号', -- ISBN 长度设置为 20
  12. `author_id` VARCHAR(100) NOT NULL COMMENT '作者id', -- 合理缩短字段长度
  13. `category_id` VARCHAR(255) DEFAULT NULL COMMENT '书籍类别编号',
  14. `Introduction` TEXT DEFAULT NULL COMMENT '简介', -- TEXT 类型更合适
  15. `create_time` TIMESTAMP DEFAULT CURRENT_TIMESTAMP, -- 默认当前时间戳
  16. `update_time` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, -- 自动更新时间
  17. PRIMARY KEY (`id`), -- 使用 `id` 作为主键
  18. UNIQUE KEY `book_id_unique` (`book_id`) -- 为 `book_id` 设置唯一约束
  19. ) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='书籍信息';
  20. -- epub_manage.author definition
  21. CREATE TABLE `author` (
  22. `id` INT NOT NULL AUTO_INCREMENT,
  23. `name` VARCHAR(255) NOT NULL, -- 将 name 长度调整为 255
  24. `author_id` VARCHAR(100) NOT NULL, -- 调整为更合理的长度
  25. `create_time` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
  26. `update_time` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  27. PRIMARY KEY (`id`),
  28. UNIQUE KEY `author_id_unique` (`author_id`) -- 添加唯一约束,确保 author_id 唯一
  29. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
  30. -- 书籍的类别 category 一本书有且只有一个类型,但是类别可以有多本书
  31. -- epub_manage.category definition
  32. CREATE TABLE `category` (
  33. `id` INT NOT NULL AUTO_INCREMENT,
  34. `name` VARCHAR(255) NOT NULL, -- 将 name 长度调整为 255
  35. `create_time` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
  36. `update_time` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  37. PRIMARY KEY (`id`)
  38. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
  39. -- 书籍的风格 style 一本书可以有多种风格, 同时 风格 也可以对应多种书籍
  40. -- epub_manage.types definition
  41. CREATE TABLE `style` (
  42. `id` INT NOT NULL AUTO_INCREMENT,
  43. `name` VARCHAR(255) NOT NULL, -- 将 name 长度调整为 255
  44. `style_id` VARCHAR(100) NOT NULL, -- 将 style_id 长度调整为 100
  45. `create_time` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
  46. `update_time` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  47. PRIMARY KEY (`id`),
  48. UNIQUE KEY `style_id_unique` (`style_id`) -- 为 style_id 添加唯一约束
  49. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
  50. CREATE TABLE `style_link_book` (
  51. `id` INT NOT NULL AUTO_INCREMENT,
  52. `style_id` VARCHAR(100) NOT NULL, -- style_id 长度为 100
  53. `book_id` VARCHAR(100) NOT NULL, -- book_id 长度为 100
  54. `create_time` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
  55. `update_time` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  56. PRIMARY KEY (`id`),
  57. UNIQUE KEY `style_book_unique` (`style_id`, `book_id`), -- 添加组合唯一索引
  58. CONSTRAINT `fk_style` FOREIGN KEY (`style_id`) REFERENCES `style`(`style_id`) ON DELETE CASCADE, -- 添加外键约束
  59. CONSTRAINT `fk_book` FOREIGN KEY (`book_id`) REFERENCES `book`(`book_id`) ON DELETE CASCADE -- 添加外键约束
  60. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
  61. -- epub_manage.chapter definition
  62. CREATE TABLE `chapter` (
  63. `id` INT NOT NULL AUTO_INCREMENT,
  64. `name` VARCHAR(255) NOT NULL, -- 将 name 长度调整为 255
  65. `book_id` VARCHAR(100) NOT NULL, -- book_id 长度为 100
  66. `author_id` VARCHAR(100) NOT NULL, -- author_id 长度为 100
  67. `content` LONGTEXT DEFAULT NULL,
  68. `create_time` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
  69. `update_time` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  70. PRIMARY KEY (`id`),
  71. CONSTRAINT `fk_chapter_book` FOREIGN KEY (`book_id`) REFERENCES `book`(`book_id`) ON DELETE CASCADE, -- 外键约束
  72. CONSTRAINT `fk_chapter_author` FOREIGN KEY (`author_id`) REFERENCES `author`(`author_id`) ON DELETE CASCADE -- 外键约束
  73. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
  74. -- epub_manage.files table definition
  75. CREATE TABLE `files` (
  76. `id` INT NOT NULL AUTO_INCREMENT,
  77. `file_id` VARCHAR(100) NOT NULL, -- file_id 长度为 100
  78. `md5` VARCHAR(32) NOT NULL, -- MD5 长度为 32
  79. `mimetype` VARCHAR(255) NOT NULL, -- mimetype 长度为 255
  80. `size` INT NOT NULL,
  81. `name` VARCHAR(255) DEFAULT NULL,
  82. `path` VARCHAR(255) DEFAULT NULL,
  83. `create_time` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
  84. `update_time` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  85. PRIMARY KEY (`id`),
  86. UNIQUE KEY `file_id_unique` (`file_id`) -- 为 file_id 添加唯一约束
  87. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
  88. -- epub_manage.book_link_file table definition
  89. CREATE TABLE `book_link_file` (
  90. `id` INT NOT NULL AUTO_INCREMENT,
  91. `file_id` VARCHAR(100) NOT NULL, -- file_id 长度为 100
  92. `book_id` VARCHAR(100) NOT NULL, -- book_id 长度为 100
  93. `author_id` VARCHAR(100) NOT NULL, -- author_id 长度为 100
  94. `create_time` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
  95. `update_time` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  96. PRIMARY KEY (`id`),
  97. CONSTRAINT `fk_book_file` FOREIGN KEY (`file_id`) REFERENCES `files`(`file_id`) ON DELETE CASCADE, -- 外键约束
  98. CONSTRAINT `fk_link_book` FOREIGN KEY (`book_id`) REFERENCES `book`(`book_id`) ON DELETE CASCADE, -- 外键约束
  99. CONSTRAINT `fk_link_author` FOREIGN KEY (`author_id`) REFERENCES `author`(`author_id`) ON DELETE CASCADE -- 外键约束
  100. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;