图书管理系统数据库设计MYSQL实现.docx
《图书管理系统数据库设计MYSQL实现.docx》由会员分享,可在线阅读,更多相关《图书管理系统数据库设计MYSQL实现.docx(13页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、图书管理系统数据库设计 M Y SQ L 实现标准化管理部编码-99968T-6889628-J68568-1689N图书管理系统数据库设计一、系统概述1、系统简介图书管理是每个图书馆都需要进行的工作。一个设计良好的图书管理系统数据库能够给图书管理带来很大的便利。2、需求分析图书管理系统的需求定义为:1. 学生可以直接通过借阅终端来查阅书籍信息,同时也可以查阅自己的借阅信息。2. 当学生需要借阅书籍时,通过账号密码登陆借阅系统,借阅系统处理学生的借阅, 同时修改图书馆保存的图书信息,修改被借阅的书籍是否还有剩余,同时更新学生个人的借阅信息。3. 学生借阅图书之前需要将自己的个人信息注册,登陆时
2、对照学生信息。4. 学生直接归还图书,根据图书编码修改借阅信息5. 管理员登陆管理系统后,可以修改图书信息,增加或者删除图书信息6. 管理员可以注销学生信息。通过需求定义,画出图书管理系统的数据流图:数据流图二、系统功能设计画出系统功能模块图并用文字对各功能模块进行详细介绍。 系统功能模块图:三、数据库设计方案图表1、系统 E-R 模型总体 E-R 图:精细化的局部 E-R 图: 学生借阅-归还 E-R 图: 管理员 E-R 图:2、设计表给出设计的表名、结构以及表上设计的完整性约束。student:列名数据类型是否为空/性质说明stu_idintnot null /PK标明学生唯一学号stu
3、_namevarcharnot null学生姓名stu_sexvarcharnot null学生性别stu_ageintnot null学生年龄stu_provarcharnot null学生专业stu_gradevarcharnot null学生年级stu_integrityintnot学生诚信级null/default=1book:列名数据类型是否为空/性质说明book_idintnot null / PK唯一书籍序号book_namevarcharnot null书籍名称book_authorvarcharnot null书籍作者book_pubvarcharnot null书籍出版社b
4、ook_numintnot null书籍是否在架上book_sortvarcharnot null书籍分类book_recorddatatimenull书籍登记日期book_sort:列名数据类型是否为空/性质说明sort_idvarcharnot null / PK类型编号sort_namevarcharnot null类型名称borrow:存储学生的借书信息列名数据类型是否为空/性质说明student_idvarcharnot null / PK学生编号book_idvarcharnot null / PK书籍编号borrow_datedatatimenull借书时间expect_retu
5、rn_datedatetimenull预期归还时间return_table:存储学生的归还信息列名数据类型是否为空/性质说明student_idvarcharnot null / PK学生编号book_idvarcharnot null / PK书籍编号borrow_datedatetimenull借书时间return_datedatatimenull实际还书时间ticket:存储学生的罚单信息列名数据类型是否为空/性质说明student_idvarcharnot null / PK学生编号book_idvarcharnot null / PK书籍编号over_dateintnull超期天数t
6、icket_feefloatnull处罚金额manager:列名数据类型是否为空/性质说明manager_idvarcharnot null / PK管理员编号manager_namevarcharnot null管理员姓名manager_agevarcharnot null管理员年龄manager_phonevarcharnot null管理员电话3、设计索引给出在各表上建立的索引以及使用的语句。student:1.为 stu_id 创建索引,升序排序sql:create index index_id on student(stu_id asc); 2.为 stu_name 创建索引,并且降
7、序排序sql:alter table student add index index_name(stu_name, desc); 插入索引操作和结果如下所示:mysql create index index_id on student(stu_id asc); Query OK, 0 rows affectedRecords: 0Duplicates: 0Warnings: 0mysql alter table studentadd indexindex_name(stu_name desc);Query OK, 0 rows affectedRecords: 0Duplicates: 0Wa
8、rnings:0mysqlbook:1. 为 book_id 创建索引,升序排列sql:create index index_bid on book(book_id);2. 为 book_record 创建索引,以便方便查询图书的登记日期信息,升序: sql:create index index_brecord on book(book_record);插入索引的操作和结果如下所示:mysql create index index_bid on book(book_id); Query OK, 0 rows affectedRecords: 0Duplicates: 0Warnings: 0m
9、ysql create index index_brecord on book(book_record); Query OK, 0 rows affectedRecords: 0Duplicates: 0Warnings: 0 borrow:1.为 stu_id 和 book_id 创建多列索引:sql:create index index_sid_bid on borrow(stu_id asc, book_id asc); 插入索引的操作和结果如下所示:mysql create index index_sid_bid on borrow(stu_id asc, book_id asc);
10、Query OK, 0 rows affectedRecords: 0Duplicates: 0Warnings: 0 return_table:1.为 stu_id 和 book_id 创建多列索引:sql:create index index_sid_bid on return_table(stu_id asc, book_id asc); 插入索引的操作和结果如下所示:mysql create index index_sid_bid_r on return_table(stu_id asc, book_id asc);Query OK, 0 rows affectedRecords: 0
11、Duplicates: 0Warnings: 0 ticket:1. 为 stu_id 和 book_id 创建多列索引:sql:create index index_sid_bid on ticket(stu_id asc, book_id asc); 插入索引的操作和结果如下所示:mysql create index index_sid_bid on ticket(stu_id asc, book_id asc); Query OK, 0 rows affectedRecords: 0Duplicates: 0Warnings: 0 manager:1.为 manager_id 创建索引:
12、sql:create index index_mid on manager(manager_id); 插入索引的操作和结果如下所示:mysql create index index_mid on manager(manager_id); Query OK, 0 rows affectedRecords: 0Duplicates: 0Warnings: 04、设计视图给出在各表上建立的视图以及使用的语句。1. 在表 student 上创建计算机专业(cs)学生的视图 stu_cs: sql: create view stu_cs asselect * from studentwhere pro
13、= cs; 操作和结果:mysqlcreate view stu_cs as select *from studentwhere stu_pro = cs; Query OK, 0 rows affected2. 在表 student, borrow 和 book 上创建借书者的全面信息视图 stu_borrow: sql: create view stu_borrow asselect student.stu_id, book.book_id, student.stu_name, book.book_name, borrow_date,adddate(borrow_date,30) expe
14、ct_return_datefrom student, book, borrowwhere student.stu_id = borrow.stu_id and book.book_id = borrow.book_id;操作和结果:mysql create view stu_borrow asselect student.stu_id, book.book_id, student.stu_name, book.book_name, borrow_date,adddate(borrow_date,30) expect_return_datefrom student, book, borroww
15、here student.stu_id = borrow.stu_id and book.book_id = borrow.book_id;Query OK, 0 rows affected3. 创建类别 1 的所有图书的视图 cs_book: sql: create view cs_book asselect * from bookwhere book.book_sort in from book_sortwhere sort_id = 1); 操作和结果显示:mysqlcreate view cs_book as select *from bookwhere book.book_sort
16、in (select book_sort.sort_name from book_sortwhere sort_id = 1); Query OK, 0 rows affected4. 创建个人所有借书归还纪录视图 stu_borrow_return: sql:create view stu_borrow_return asselect student.stu_id, student.stu_name, book.book_id, book.book_name,return_table.borrow_date,return_table.return_date from student, boo
17、k, return_tablewhere student.stu_id = return_table.stu_id and book.book_id = return_table.book_id;5、设计触发器给出在各表上建立的触发器以及使用的语句。1. 设计触发器 borrow, 当某学生借书成功后,图书表相应的图书不在架上,变为 0: sql:create trigger borrow after insert on borrow for each rowbeginupdate book set book_num = book_num 1 where book_id = new.book_
18、id;end操作与结果显示: mysql delimiter $mysql create trigger trigger_borrow- after insert on borrow- for each row- begin- update book set book_num = book_num - 1- where book_id = new.book_id;- end- $Query OK, 0 rows affected在插入表 borrow 之前,book_id = 1 的图书还在架上,为 1: 学生 1 借了这本书后,在 borrow 中插入了一条记录:在 borrow 中插入这条
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 图书 管理 系统 数据库 设计 MYSQL 实现
限制150内