This repository has been archived on 2021-11-25. You can view files and clone it, but cannot push or open issues/pull-requests.
DBHomework/design.txt

339 lines
8.9 KiB
Plaintext
Raw Permalink Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

数据库作业:
语言
JavaScript,HTML,C++
数据库:
MySQL
===================
数据库表设计
===================
表前缀: bs_
用户表(bs_user)
登录账号 varchar 主键
登录密码 varchar (hashed)
昵称 varchar
用户级别 integer (0 超级管理员 1 管理员 2 图书馆借阅处 3 读者)
3级用户必须有对应的用户信息!
账户状态 integer (0 隐藏 1 禁止登陆 2 需要验证才能激活 3 允许登陆)
隐藏状态: 以该登陆账号登陆时会提示账户不存在,但注册时会提示不能不注册
禁止登陆: 以该登陆账号登陆时会提示账户已被禁用
待验证: 刚注册完的用户需要经过验证,登陆时会提示待验证. 验证后状态变为3
允许登陆: 一切正常
级别表(bs_level)
等级 integer 主键
默认最低借阅限额 integer
默认最高借阅限额 integer
默认最低借阅时间 integer
默认最高借阅时间 integer
可接受的最小余额额度 money
读者表(bs_reader)
登录账号 外键到bs_user
姓名 varchar
身份证号 varchar
联系电话 varchar
等级 integer (触发器->升级->改变限额等信息) 外键到bs_level
成长值(经验值) integer (签到送经验值等等)
借阅限额 integer (可以与级别表中的默认值不一致,但升级时会受到影响进而重新评估)
已使用借阅额度 integer 冗余
借阅时间限额 integer (天)
积分 integer (签到,奖励,活动)
余额 money
图书类别表(bs_booktype)
类别名称 varchar 主键
图书表(bs_book)
图书定义序号 integer 主键 (考虑到有些书没有ISBN号)
ISBN号 varchar 主键
名称 varchar
类别 外键到bs_booktype
作者 varchar
出版社 varchar
出版日期 date
状态 integer (0 隐藏 1 禁用 2 正常)
隐藏: 不在图书搜索中显示这本书的信息
禁用: 禁止借阅这本书
图书状态表(bs_bookstatus)
图书实体序号 integer 主键 (一本书可能在图书馆里有多本藏书)
图书类别序号 外键到bs_book
位置 varchar (用来提示图书所在位置)
状态 integer (0 借出 1 丢失 2 在馆)
借出: 书籍已借出,可以在bs_borrow中查找到
丢失: 书籍已丢失,且无法从其他表中查找到有关信息.(用于报告丢失)
在馆: 书籍在馆,可以借出
借阅关系表(bs_borrow)
借阅者账号 外键到bs_user
图书实体序号 外键到bs_bookstatus
借阅日期 date
最迟还书日期 date (即使用户在借阅图书后升级,这个日期也不会改动. 此日期是在借阅书籍的时候计算的)
还书日期 date 可以为空 如果没还书就是null否则表示书已归还此条数据留存为历史数据
===================
特性设计
===================
5分钟安装(在线安装,类似Wordpress Install)
超级管理员账号 可以修改所有账户的密码,此账户只能有一个,可以添加管理员账号,其他功能同管理员账号
管理员账号 可以修改自己和所有普通用户的密码,添加/修改图书类别表,其他功能同图书馆借阅处账号
图书馆借阅处账号 可以修改自己的密码,添加/修改借阅关系表
===================
具体设计
===================
5分钟安装需要的信息:
数据库服务器地址 dbaddr
数据库端口 dbport
数据库账户 dbuser
数据库口令 dbpass
数据库名称 dbname
超级管理员口令 supass (超级管理员账户锁定为root)
新建账号:
session
http://localhost/cgi-bin/booksys/admin/install
安装页面. 安装成功后再访问本页面将重定向到login.
http://localhost/cgi-bin/booksys/login
登录页面
http://localhost/cgi-bin/booksys/mainpage
主页(搜索框)
http://localhost/cgi-bin/booksys/dashboard
个人页面(borrowed book那些)
http://localhost/cgi-bin/booksys/info
http://localhost/cgi-bin/booksys/admin/workbench
http://localhost/cgi-bin/booksys/admin/booktype
http://localhost/cgi-bin/booksys/admin/newbook
http://localhost/cgi-bin/booksys/viewbook?
http://localhost/cgi-bin/booksys/
增删改查 图书类别,图书,账户
http://booksys.com/api/v1/install POST (install.cpp)
POST:
dbaddr,dbport,dbuser,dbpass,dbname,supass
http://booksys.com/api/v1/search?type=...&name=... GET (search.cpp)
GET:
type= 0 用户 1 书籍
name= 用户名,书籍名称
typename= 书籍种类名称,仅当type为1时有效
http://booksys.com/api/v1/explore GET
GET:
没有参数
http://booksys.com/api/v1/addbook POST (addbook.cpp)
POST:
(图书定义序号自动生成)
isbn
bookname
booktype
author
publisher
pubdate
status
错误:
权限不足,添加失败
http://booksys.com/api/v1/editbook POST (editbook.cpp)
POST:
book_key (唯一图书定义序号)
以下所有列均为可选: 当任一列存在时将引起数据的修改
isbn
bookname
booktype
author
publisher
pubdate
status
错误:
权限不足,修改失败
http://booksys.com/api/v1/removebook POST (removebook.cpp)
POST:
book_key (唯一图书定义序号)
错误:
当图书的任一实体处于借出状态时将不能删除图书定义.
http://booksys.com/api/v1/addbooktype POST (addbooktype.cpp)
POST:
booktype
错误:
当新的类型名称发生冲突
http://booksys.com/api/v1/editbooktype POST (editbooktype.cpp)
POST:
booktype_old
booktype_new
错误:
当新的类型名称发生冲突
副作用:
改变图书种类会引起所有与原种类相关图书的信息变更(未实现)
http://booksys.com/api/v1/removebooktype POST (removebooktype.cpp)
POST:
booktype
错误:
当任一图书定义使用此定义时将不能删除图书种类
http://booksys.com/api/v1/join POST (join.cpp)
POST:
account
pass
nickname
提示:通过此API注册的用户等级锁定为3. 且注册后账户处于状态2
错误:
账户名称重复时
http://booksys.com/api/v1/enableuser POST (enableuser.cpp)
POST:
account
realname
realid
realphone
提示:通过此API激活的用户等级必须为3.(更高等级的用户不需要经此激活) 激活后账户状态将自动变更为3.
错误:
内容填充错误或禁止激活.
http://booksys.com/api/v1/login POST (login.cpp)
POST:
account
pass
提示:通过此API可登陆的用户等级为0,1,2,3,账户状态为3才能登陆成功,账户状态为2时返回提示信息前往激活,账户状态为1时返回禁止登陆,账户状态为0时返回需要联系管理员激活信息.
错误:
账户或密码错误(包括账户错误)
返回:
当登陆成功时绑定User到Session.
http://booksys.com/api/v1/logout GET/POST (logout.cpp)
提示:退出登陆. 会立刻注销Session.
http://booksys.com/api/v1/addbookobject POST (addbookobject.cpp)
POST:
class_id 图书定义序号
book_id 图书实体序号(可选,当有此参数时将尝试以此参数新建书籍)
position 藏书位置
status 图书状态
错误:
权限不足
图书实体序号冲突
http://booksys.com/api/v1/editbookobject POST
POST:
book_id_old 旧图书实体序号
book_id_new 新图书实体序号 (可选)
position_new 新藏书位置 (可选)
status 图书新状态
错误:
权限不足
图书实体不存在
图书实体序号冲突
http://booksys.com/api/v1/removebookobject POST
POST:
book_id 图书实体序号
错误:
权限不足
图书实体序号不存在
图书已借出,不能删除实体
http://booksys.com/api/v1/borrowbook POST
POST:
account 借阅者账户
book_id 图书实体序号
错误:
权限不足(此API只能由图书管理员以上(等级<=2)调用)
图书不可借阅
实体不存在
http://booksys.com/api/v1/returnbook POST
POST:
book_id 图书实体序号
错误:
图书状态不允许还书(未借出等等)
实体不存在
http://booksys.com/api/v1/blockuser POST (blockuser.cpp)
POST:
account 被操作用户
提示:
本操作将修改用户的状态为1(禁止登陆)
错误:
权限不足. 只有级别<=1的用户可以使用本API. 其中管理员只能修改自己和等级>=2的用户. 超级管理员可以修改全部账户.
http://booksys.com/api/v1/allowuser POST (allowuser.cpp)
POST:
account 被操作用户
提示:
本操作将修改用户的状态为3(正常). 注意: 若用户尚未完成身份验证,将忽视身份验证步骤.
错误:
权限不足. 只有级别<=1的用户可以使用本API.其中管理员只能修改自己和等级>=2的用户. 超级管理员可以修改全部账户.
http://booksys.com/api/v1/dashboard GET
GET:
无参数
返回:
返回关于当前用户的全部信息. (Session关联)
错误:
未登录
http://booksys.com/api/v1/adminsearch POST
POST:
提示:
管理员专用搜索
错误:
权限不足. 只有管理员<=1能使用本API
http://booksys.com/api/v1/advancedsearch POST
POST:
提示:
错误:
权限不足,只有<=2的用户能使用本API