概述
本实验数据库主要存储五部分内容:
- 用户信息
- 日志
- 古籍信息
- 文章信息
- 古文字信息
- 图片信息
其中,用户信息、古籍信息和日志采用mysql存储。
文章信息由于古文格式多样化,部分信息可能缺失,因此采用mongoDB存储,从而节省存储空间。
古文字的内容同样繁多而杂乱,因此也采用mongoDB存储。
概念设计
用户信息
用户信息使用mysql数据库存储
字段名称 | 字段类型 | 长度 | 是否非空 | 键 | 注释 |
---|---|---|---|---|---|
uid | varchar | 255 | Yes | 主键 | 用户ID |
username | varchar | 255 | Yes | 用户名 | |
password | varchar | 255 | Yes | 密码 | |
nickname | varchar | 255 | No | 昵称 | |
varchar | 255 | No | 用户邮箱 | ||
phone | int | No | 手机号 | ||
sex | int | No | 0-男 1-女 | ||
birthday | varchar | 10 | No | yyyy-mm-dd | |
imgurl | varchar | 255 | No | 用户头像的链接 | |
role | varchar | 255 | No | 用户的身份 |
古籍信息
书籍信息使用mysql存储
字段名称 | 字段类型 | 长度 | 是否非空 | 键 | 注释 |
---|---|---|---|---|---|
addTime | datetime | Yes | 主键 | 添加时间 | |
bookAuthor | varchar | 255 | No | 书籍作者 | |
dynasty | varchar | 255 | No | 朝代 | |
bookname | varchar | 255 | No | 书籍名称 | |
pulishedTime | date | No | 成书日期 | ||
totalArticle | varchar | 255 | No | 文章数目 | |
uId | varchar | 255 | Yes | 创建者id |
文章信息
文章是多种多样的,有些文章可能作者信息丢失,有些文章可能缺失数据,因此使用mongoDB,减少空白数据的空间占用
字段名称 | 字段类型 | 注释 |
---|---|---|
title | String | 文章标题 |
bookname | String | 书籍名称 |
articleAuthor | String | 文章作者 |
content | String | 正文 |
imgurl | String | 古籍图片链接 |
notes | array | 简要存储每个字的字形、读音等信息 |
XML | String | XML链接 |
annotation | String | 文章的注释 |
page | Int32 | 页数 |
存储格式如下:
{
"_id": ObjectId("604df4373e48000080001e62"),
"title": "",
"bookname": "",
"articleAuthor": "",
"content": "",
"imgurl": "",
"notes": [
{
"word": "",
"pronunciation": "",
"annotation": "",
"location": "",
"label": [ ]
}
],
"XML": "",
"annotation": "",
"page": 0
}
其中notes是一个对象数组,储存每个字的简要信息,方便查询,格式如下:
"notes": [
{
"word": "",
"pronunciation": "",
"annotation": "",
"location": "",
"label": [ ]
}
],
古文字信息
古文字信息可扩展性很强,使用mongoDB存储,并且实现了倒排索引来加快查询速度
字段名称 | 字段类型 | 注释 |
---|---|---|
word | String | 文字 |
pronunciation | String | 读音 |
meaning | String | 文字意义 |
notes | String | 注释 |
imgurl | String | 图片链接 |
diff_form | array | 同一个字的不同写法 |
diff_pron | array | 同一个字的不同读音 |
article | String | 包含这个字的文章 |
结构如下:
{
"_id": ObjectId("604df63f3e48000080001e63"),
"word": "",
"pronunciation": "",
"meaning": "",
"notes": "",
"imgurl": "",
"diff_form": [
{
"id": ""
}
],
"diff_pron": [
{
"id": ""
}
],
"article": [
{
"id": ""
}
]
}