1、数据库设计-图书管理系统 作者: 日期:12 个人收集整理 勿做商业用途图书馆管理系统设计学号:4090XX作者:吴梦菲班级:2009级计算机01班图书馆管理系统设计一、 需求分析图书管理需要针对书籍、读者、员工以及查询和借阅信息进行有效的管理。此系统在功能上要实现信息查询、借阅图书(包括借阅日期、归还日期和借阅时间)等功能。流程图:读者情况图书情况图书信息P2借书管理P3安全管理D3 借书记录D2 读者记录图书读者管理员P1内部管理D1 图书记录图书读者管理员情况读者信息借还书要求二、ER图模型图书信息图书编号书名类别库存量借阅信息管理借阅人员工借书时间图书编号姓名学号编号姓名存放位置图书编
2、号归还时间mnmn借阅书籍图书编号书名归还书籍图书编号书名nn图书编号三、关系模式(带下划线的为主码,带波浪线的为外码)图书信息(图书编号,书名,类别,库存)借阅信息(借书时间,归还时间,图书编号,)借阅人(图书编码,姓名,学号)借阅书籍(图书编号,书名)归还书籍(图书编号,书名)管理信息(图书编号,存放位置)员工(员工编号,姓名)四、函数依赖T_1=图书编号书名,书名类别,图书编号类别(传递依赖)T_2=(借书时间,归还时间)图书编号,图书编号借书时间,图书编号归还时间(完全函数依赖)T_3=学号姓名,(姓名,学号)图书编号,学号图书编号(部分函数依赖)T_4=图书编号存放位置T_5=员工编
3、号姓名(非平凡的函数依赖)五、Sql语句,建立数据库和表(1)、建立数据库CREATE DATABASE LIBERON PRIMARY (NAME = liber_data, FILENAME = e:sqlliberliber_data.mdf, SIZE = 20MB, MAXSIZE = UNLIMITED, FILEGROWTH = 10),(NAME = liber_data1, FILENAME = e:sqlliberliber_data。ndf, SIZE = 20MB, MAXSIZE = UNLIMITED, FILEGROWTH = 10) LOG ON (NAME =
4、 liber_log, FILENAME = e:sqlliberliber_data.ldf, SIZE = 50MB, MAXSIZE = 100MB, FILEGROWTH = 10MB )GO(2)建表CREATE TABLE 图书信息(图书编号 CHAR(6) NOT NULL PRIMARY KEY, 书名 NVARCHAR(50) NOT NULL,类别 CHAR(8) NOT NULL, 库存 TINYINT NOT NULL DEFAULT 10,)GOCREATE TABLE 借阅信息(借书时间 SMALLDATETIME NOT NULL PRIMARY KEY, 应还时
5、间 SMALLDATETIME NOT NULL, 图书编号 CHAR(6) NOT NULL CONSTRAINT fk_tsbh1 REFERENCES 图书信息(图书编号),)GOCREATE TABLE 借阅人(图书编号 CHAR(6) NOT NULL PRIMARY KEY, 姓名 NVARCHAR(50) NOT NULL, 学号 CHAR(10) NOT NULL,)GOCREATE TABLE 管理信息(图书编号 CHAR(6) NOT NULL CONSTRAINT fk_tsbh REFERENCES 图书信息(图书编号), 存放位置 CHAR(12) NOT NULL,
6、)GOCREATE TABLE 员工(员工编号 CHAR(6) NOT NULL PRIMARY KEY, 姓名 CHAR(8) NOT NULL, )GOCREATE TABLE 借阅书籍(图书编号 CHAR(6) NOT NULL CONSTRAINT fk_bh REFERENCES 图书信息(图书编号), 书名 NVARCHAR(50) NOT NULL,)GOCREATE TABLE 归还书籍(图书编号 CHAR(6) NOT NULL CONSTRAINT fk_bh1 REFERENCES 图书信息(图书编号), 书名 NVARCHAR(50) NOT NULL,)GO六、表的修
7、改(1)、插入INSERT INTO 图书信息VALUES(00001,计算机专业英语,计算机类,10)GOINSERT INTO 图书信息VALUES(00002,SQL Server 2008,计算机类,7)GOINSERT INTO 图书信息VALUES(00003,C语言程序设计,计算机类,5)GOINSERT INTO 图书信息VALUES(00004,钢铁是怎样炼成的,文学类,7)GOINSERT INTO 图书信息VALUES(00005,红与黑,文学类,4)GOINSERT INTO 图书信息VALUES(00006,飞鸟集,文学类,7)GOINSERT INTO 图书信息VA
8、LUES(00007,熟读唐诗三百首,文学类,6)GOINSERT INTO 图书信息VALUES(00008,市场营销,经济学类,8)GOINSERT INTO 图书信息VALUES(00009,商务英语,语言类,9)GOINSERT INTO 图书信息VALUES(00010,经济法,经济学类,5)GOINSERT INTO 借阅信息VALUES(20113-4,2011-41,00001)GOINSERT INTO 借阅信息VALUES(2011-4-5,201153,00004)GOINSERT INTO 借阅信息VALUES(2011-2-15,201136,00010)GOINSE
9、RT INTO 借阅信息VALUES(20115-4,2011-524,00005)GOINSERT INTO 借阅信息VALUES(20113-7,2011-44,00003)GOINSERT INTO 借阅信息VALUES(2011-1-8,20112-1,00003)GOINSERT INTO 管理信息VALUES(00001,三楼)GOINSERT INTO 管理信息VALUES(00002,三楼)GOINSERT INTO 管理信息VALUES(00003,三楼)GOINSERT INTO 管理信息VALUES(00004,一楼)GOINSERT INTO 管理信息VALUES(00
10、005,一楼)GOINSERT INTO 管理信息VALUES(00006,一楼)GOINSERT INTO 管理信息VALUES(00007,一楼)GOINSERT INTO 管理信息VALUES(00008,二楼)GOINSERT INTO 管理信息VALUES(00009,一楼)GOINSERT INTO 管理信息VALUES(00010,二楼)GOINSERT INTO 员工VALUES(11311,张晓)GOINSERT INTO 员工VALUES(11312,李晓琴)GOINSERT INTO 员工VALUES(11313,周晓玉)GOINSERT INTO 员工VALUES(11
11、314,王梅)GOINSERT INTO 借阅人VALUES(00001,张丽,40901110)GOINSERT INTO 借阅人VALUES(00003,李秋,40902113)GOINSERT INTO 借阅人VALUES(00003,王文元,40903322)GOINSERT INTO 借阅人VALUES(00004,朱梅,40904103)GOINSERT INTO 借阅人VALUES(00005,周柳,40900115)GOINSERT INTO 借阅人VALUES(00010,钱复,40900709)GOINSERT INTO 借阅书籍VALUES(00001,计算机专业英语)G
12、OINSERT INTO 借阅书籍VALUES(00004,钢铁是怎样炼成的)GOINSERT INTO 借阅书籍VALUES(00010,经济法)GOINSERT INTO 借阅书籍VALUES(00005,红与黑)GOINSERT INTO 借阅书籍VALUES(00003,C语言程序设计)GOINSERT INTO 借阅书籍VALUES(00003,C语言程序设计)GOINSERT INTO 归还书籍VALUES(00001,计算机专业英语)GOINSERT INTO 归还书籍VALUES(00004,钢铁是怎样炼成的)GOINSERT INTO 归还书籍VALUES(00010,经济法
13、)GOINSERT INTO 归还书籍VALUES(00005,红与黑)GOINSERT INTO 归还书籍VALUES(00003,C语言程序设计)GOINSERT INTO 归还书籍VALUES(00003,C语言程序设计)GO(2)、修改数据UPDATE 员工SET 姓名=李小琴WHERE 员工编号=11312;(3)、删除数据DELETE FROM 员工WHERE 姓名=周晓玉;七、查询功能(1)、能根据图书编号或者图书名称查询此书在图书馆中是否存在以及此书的书目类别、存在的位置、数量等等。SELECT 类别,存放位置,库存FROM 图书信息,管理信息WHERE 图书信息。图书编号=管理信息.图书编号 AND 图书信息.图书编号=00010GO(2)、借阅信息查询。输入借阅人编号后,能查出该借阅人的所有信息。SELECT *FROM 借阅人WHERE 图书编号=00003GO(3)、连接查询SELECT 图书信息.*FROM 图书信息,管理信息,借阅信息WHERE 图书信息。图书编号=管理信息。图书编号 AND (GETDATE()-借书时间=30)GO(4)、分组查询SELECT 类别,书名FROM 图书信息GROUP BY 类别,书名;(5)、排序查询SELECT 书名,图书编号FROM 借阅书籍ORDER BY 图书编号