带你从零开始,开发一个阅读站第三章,数据库表结构
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了带你从零开始,开发一个阅读站第三章,数据库表结构相关的知识,希望对你有一定的参考价值。
整个项目只有四张表
book-书籍主表,记录书籍的详情信息,包括类别,作者描述等
type-类别表,书籍类别管理
menu-目录章节表
properties-配置表
book表是书籍主表
code:用于图书code记录,可认为该字段能确定图书唯一
typeId:关联type表主键id,标识图书类别
title:书名
author:作者
lastMenuId:最新章节目录,关联menu表主键id
description:图书描述
originalUrl(废弃不用)
imageUri:图片地址,这个地址是相对地址。记录了图书展示图片的文件名
createTime:图书录入时间
updateTime:最后更新时间
rootTypeId:主类别id,tpye表主键id,详情看type表记录
menuNum:图书目录数量
textSize:当前图书有多少字
menu章节表:
description:章节名
prevMenuId:上一章节id(menu表主键id)
nextMenuId:下一章节id(menu表主键id)
bookId:图书id(book表主键id)
contentUri:正文地址(此地址是正文文件存储在服务器上的地址)
createTime:章节录入时间
code :章节编码(没有具体作用)
mversion:章节版本控制(防止重复录入)
type表为图书类别表:
description:类别描述
level:类别等级
parentId:所属父类别
类别建立如上所述,level为1的是主类别,其下lever为2的即为子类别。子类别的parentId关联父类别的主键id。主类别没有父类别,即parentId为0
这里需要提一点的是,父类主键*100再递增作为子类别的主键id。如id为101的父类别的id为1
properties表做配置用,考虑下一版本将程序里的配置放在properties里。
现在这张表只有一条配置
pKey:为程序读取到相应pValue的值,在首页做跑马灯显示
此处给出表创建脚本,供大家参考:
SET FOREIGN_KEY_CHECKS=0; -- ---------------------------- -- Table structure for book -- ---------------------------- DROP TABLE IF EXISTS `book`; CREATE TABLE `book` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT ‘图书主表‘, `code` varchar(45) COLLATE utf8_bin DEFAULT NULL COMMENT ‘图书编码(默认图书目录地址,也是图书文件保留目录)‘, `typeId` int(11) DEFAULT NULL COMMENT ‘类别‘, `title` varchar(45) COLLATE utf8_bin DEFAULT NULL COMMENT ‘书名‘, `author` varchar(45) COLLATE utf8_bin DEFAULT NULL COMMENT ‘作者‘, `lastMenuId` int(11) DEFAULT ‘0‘ COMMENT ‘最新章节目录Id‘, `description` varchar(500) COLLATE utf8_bin DEFAULT NULL COMMENT ‘简介描述‘, `originalUrl` varchar(200) COLLATE utf8_bin DEFAULT NULL COMMENT ‘已废弃‘, `imageUri` varchar(45) COLLATE utf8_bin DEFAULT NULL COMMENT ‘图片地址‘, `createTime` timestamp NULL DEFAULT NULL COMMENT ‘创建时间‘, `updateTime` timestamp NULL DEFAULT NULL COMMENT ‘更新时间‘, `rootTypeId` int(11) DEFAULT NULL COMMENT ‘主类别‘, `menuNum` int(11) DEFAULT ‘0‘ COMMENT ‘章节总数‘, `textSize` bigint(18) DEFAULT ‘0‘ COMMENT ‘小说字数‘, PRIMARY KEY (`id`), UNIQUE KEY `index_title` (`code`) USING BTREE, KEY `FK_mxn08ipa84r1evyt2cnn7jkpi` (`typeId`,`rootTypeId`), KEY `FK_6ji3nbliycexuj771dlqn25s3` (`lastMenuId`) ) ENGINE=InnoDB AUTO_INCREMENT=12 DEFAULT CHARSET=utf8 COLLATE=utf8_bin; -- ---------------------------- -- Table structure for menu -- ---------------------------- DROP TABLE IF EXISTS `menu`; CREATE TABLE `menu` ( `id` int(11) NOT NULL AUTO_INCREMENT, `description` varchar(100) COLLATE utf8_bin DEFAULT NULL COMMENT ‘描述‘, `prevMenuId` int(11) DEFAULT ‘0‘ COMMENT ‘上一章id‘, `nextMenuId` int(11) DEFAULT ‘0‘ COMMENT ‘下一章id‘, `bookId` int(11) DEFAULT NULL COMMENT ‘图书id‘, `contentUri` varchar(100) COLLATE utf8_bin DEFAULT NULL COMMENT ‘文本路径‘, `createTime` timestamp NULL DEFAULT NULL COMMENT ‘创建时间‘, `code` varchar(45) COLLATE utf8_bin DEFAULT NULL COMMENT ‘编码(做索引)‘, `mversion` varchar(45) COLLATE utf8_bin DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `mvserion` (`mversion`) USING BTREE, KEY `FK_c6rhyxr26doitte59912cid6v` (`bookId`), CONSTRAINT `menu_ibfk_1` FOREIGN KEY (`bookId`) REFERENCES `book` (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=231 DEFAULT CHARSET=utf8 COLLATE=utf8_bin; -- ---------------------------- -- Table structure for properties -- ---------------------------- DROP TABLE IF EXISTS `properties`; CREATE TABLE `properties` ( `id` int(11) NOT NULL AUTO_INCREMENT, `pKey` varchar(45) COLLATE utf8_bin NOT NULL, `pValue` varchar(256) COLLATE utf8_bin NOT NULL, `description` varchar(45) COLLATE utf8_bin DEFAULT NULL COMMENT ‘描述‘, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COLLATE=utf8_bin; -- ---------------------------- -- Table structure for type -- ---------------------------- DROP TABLE IF EXISTS `type`; CREATE TABLE `type` ( `id` int(11) NOT NULL AUTO_INCREMENT, `description` varchar(45) COLLATE utf8_bin DEFAULT NULL COMMENT ‘类别描述‘, `level` int(11) DEFAULT NULL COMMENT ‘类别等级‘, `parentId` int(11) unsigned DEFAULT ‘0‘ COMMENT ‘父类别‘, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=702 DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
以上是关于带你从零开始,开发一个阅读站第三章,数据库表结构的主要内容,如果未能解决你的问题,请参考以下文章