oracle图书管理系统数据库设计与实现.doc
《oracle图书管理系统数据库设计与实现.doc》由会员分享,可在线阅读,更多相关《oracle图书管理系统数据库设计与实现.doc(17页珍藏版)》请在冰点文库上搜索。
下载可编辑
滨江学院
题目图书管理系统数据库设计与实现
院系
年级班级
学生姓名
学号
学期
任课教师
2014年12月5日
.专业.整理.
下载可编辑
目录
1系统分析 2
1.1需求分析 2
1.2设计目标 2
1.3项目规划 2
2数据库设计 4
2.1系统功能模块设计 4
2.2数据库概念结构设计 4
2.3数据库逻辑结构设计 6
3数据库系统设计与实现 8
3.1创建和管理表 8
1.1创建表空间 8
1.2创建数据表 8
3.2创建和管理视图 9
3.3创建和管理序列 10
3.4创建和管理索引 10
3.5创建和管理存储过程 10
3.6创建和管理触发器 11
4数据库访问 12
4.1数据查询 12
4.2数据更新 12
2.1表中数据的插入 12
2.2数据的修改和删除 14
4.3数据合并 15
4.4结果集集合操作 15
1系统分析
1.1需求分析
随着互联网的爆炸性发展,人们越来越习惯于利用网络来实现所需的服务,网络已深深影响到人们生活的各个方面。
另外,传统的图书馆不能满足一部分现代人的需要,而电子阅览室,由于其不受时间与空间的限制同时又具有传统图书馆的大部分功能,能够满足各类用户的常规与特殊需求,而且其方便快捷,实现技术又比较成熟,因此受到当代人的喜爱。
图书馆在正常运营中面对大量书籍、读者信息以及两者间相互联系产生的借书信息、还书信息。
现有的人工记录方法既效率低又错误过多,大大影响了图书馆的正常管理工作。
因此需要对书籍资源、读者资源、借书信息、还书信息进行管理,及时了解各个环节中信息的变更,有利于管理效率的提高
该系统主要分为两部分:
读者部分和管理员部分。
为了方便读者查找自己感兴趣的主题进行阅读,要将图书按照内容进行分类。
读者可以按照类别进行查找,逐级浏览、可以查看自己的信息。
本系统还可对用户的账号和书目的阅读权限进行管理。
管理员需要给用户分配用户名和密码,及设定用户的级别。
1.2设计目标
图书管理系统的开发主要要实现的目标有以下几个方面:
(1)界面设计友好、美观。
(2)数据存储安全、可靠。
(3)信息分类清晰、准确。
(4)强大的查询功能,保证数据查询的灵活性。
(5)实现对图书借阅和归还过程的全程数据信息跟踪。
(6)提供图书借阅排行榜,为图书管理员提供了真实的数据信息。
(7)提供灵活、方便的权限设置功能,使整个系统的管理分工明确。
(8)具有易维护性和易操作性。
1.3项目规划
(1)登录模块
用户登录:
用户在登陆页面登陆,登陆成功进入系统。
管理员登陆:
用于管理员的登陆,在后台登陆页面登陆,登陆成功进入系统。
图书管理员与系统管理员后台功能不一样。
查询用户表,对应用户名、密码正确则进入系统,对应用户名密码不正确则显示相应信息
(2)图书管理模块
对图书进行添加、查询、修改、删除、添加。
将输入的图书信息添加到数据库图书表中,以方便进行各种查询及更新操作,根据输入的图书名称或作者,查询数据库图书表中的相应记录并显示相应图书信息,更新数据库图书表中对应记录并显示更新后的图书信息,删除数据库图书表中对应记录。
(3)副本信息模块
对图书的副本信息进行添加、修改、删除。
将输入的图书副本信息添加到副本表中,并分配一个独立的中南码根据输入的中南码或国际标准图书编码,查询图书副本表,显示副本信息更新副本表的数据库、删除副本表中所对应的图书信息、修改副本表中错误的信息并更新数据库。
(4)用户管理模块
对用户进行添加、删除、修改。
将输入的用户信息添加到用户表中,并分配一个独立的用户号根据输入的用户名的姓名或生日,查询用户表,显示用户信息更新用户表的数据库、删除用户表中所对应的、修改用户中错误的信息并更新数据库。
2数据库设计
2.1系统功能模块设计
根据图书管理系统的实际需求,可以将图书管理系统划分为管理员页面和读者页面,2个主页面,每个主页面又分为若干个的具体功能的分页面,功能结构图如图2.1所示。
图书管理系统
管理员主页面
读者主页面
用户信息管理界面
添加图书
修改出版信息
修改副本信息
修改人代码
图书信息查询
图书副本信息查询
图2.1图书管理系统功能图
2.2数据库概念结构设计
管理员E-R图如下图2.2所示:
管理员
姓名
密码
加入时间
用户名
图2.2管理员E-R图
学生E-R图如下图2.3所示:
读者
学号
密码
姓名
用户名
电话
班级
院系
性别
图2.3学生E-R图
图书E-R图如下图2.4所示:
读者
图书姓名
库存
作者
价格
图书编号
图示类别
出版社
图2.4图书E-R图
系统总E-R图,如图2.5所示
图2.5图书管理系统数据库E-R图
2.3数据库逻辑结构设计
数据库设计有8张表,分别是:
Users表(用户表)Books表(书籍表)Copies表(副本表)、Authors表(作者表)、Categories表(分类目录表)、Writers表(写书表)、Publishers表(出版社表)、Borrow表(借阅表)
表2.1Books表
字段
数据类型
数据长度
能否为空
中文名
备注
ISBN
Char
20
否
国际标准图书编码
主键
Title
Char
30
是
书名
Pubname
Char
30
是
出版者名
Author
Char
30
是
作者名
Authorno
Number
30
是
作者号
ZNCode
Number
30
是
中南分校码
表2.2Copies表
字段
数据类型
数据长度
能否为空
中文名
备注
CopyNo
Number
10
否
副本编号
主键
ISBN
Char
20
是
国际标准图书编码
表2.3Authors表
字段
数据类型
数据长度
能否为空
中文名
备注
AuthorNo
Number
10
否
作者号
主键
AuthorName
Char
20
是
作者名
表2.4Categories表
字段
数据类型
数据长度
能否为空
中文名
备注
ZNCode
Number
20
否
中南分校码
主键
CateName
Char
20
是
目录名
表2.5Writers表
字段
数据类型
数据长度
能否为空
中文名
备注
ISBN
Char
20
否
国际标准图书编码
主键
AuthorNo
Number
20
否
作者号
主键
表2.6Publishers表
字段
数据类型
数据长度
能否为空
中文名
备注
PubName
Char
30
否
出版者名
主键
Address
Char
50
是
地址
表2.7Users表
字段
数据类型
数据长度
能否为空
中文名
备注
UsersNo
Number
12
否
用户编号
主键
UserName
Char
20
否
用户名
UserPwd
Char
20
否
用户密码
Quanxian
Number
20
否
权限
Birthday
Date
否
用户生日
Email
Char
30
是
用户的邮箱
Tel
Char
20
是
用户的联系电话
Address
Char
20
是
籍贯
3数据库系统设计与实现
3.1创建和管理表
1.1创建表空间
创建数据专属表空间,
SQL>createtablespacedata
2logging
3datafile'D:
\oracle\product\10.2.0\oradata\orcl\data03.dbf'
4size50m
5reuseautoextendoff;
1.2创建数据表
根据数据逻辑结构表创建数据表,注意要有表中的约束的定义,以及表间的约束的定义。
(1)创建Books表
SQL>createtableBooks
2(isbnchar(20)notnullprimarykey,
3titlechar(30),
4pubnamechar(30),
5authorchar(30),
6authornonumber(30),
7zncodenumber(30));
(2)创建Copies表
SQL>createtablecopies
2(copynonumber(10)notnullprimarykey,
3isbnchar(20));
(3)创建Authors表
SQL>createtableAuthors
2(authornonumber(10)notnullprimarykey,
3authornamechar(20));
(4)创建Categories表
SQL>createtableCategories
2(zncodenumber(20)notnullprimarykey,
3catenamechar(20));
(5)创建Writers表
SQL>createtableWriters
2(isbnchar(20)notnull,
3authornonumber(20)notnull);
(6)创建Publishers表
SQL>createtablePublishers
2(pubnamechar(30)notnullprimarykey,
3addresschar(50));
(7)创建Users表
SQL>createtableUsers
2(UserNamechar(20)notnull,
3UserPwdchar(20)notnull,
4UserNonumber(12)primarykey,
5Birthdatenotnull,
6Quanxiannumber(20),
7Emailchar(30),
8TELchar(20),
9Addresschar(20));
3.2创建和管理视图
(1)创建视图“cx_books”,要求查看图书的国际标准图书编码,书名,出版社名,中南分校编码,作者名,作者号。
SQL>createorreplaceviewcx_books
2as
3selectISBN,Title,PubName,ZNCode,author,authorno
4fromBooks;
(2)创建视图“cx_zj”,要求各用户只能查找作家出版社的图书名称,作者,副本编号。
SQL>createorreplaceviewcx_zj
2as
3selecttitle,author,copyno
4fromBooks,Copies
5whereCopies.isbn=Books.isbnandPubName='作家出版社';
(3)创建视图“cx_anni”,要求查看作者为安妮宝贝所有的图书信息的视图。
SQL>createorreplaceviewcx_anni
2as
3select*
4fromBooks
5whereauthor='安妮宝贝';
3.3创建和管理序列
创建序列“cx_un”,要求序列值从1开始,增长步长为1,无最大值限制,不循环,默认高速缓存20列值,不保证有序
SQL>createsequencecx_un
2increment
3by1startwith1
4nomaxvaluenocycle;
3.4创建和管理索引
(1)在Books表中的书名创建索引。
SQL>createindexBooks_title_idx
2onBooks(title);
(2)为Users表的姓名创建索引。
SQL>createindexUsers_username_idx
2onUsers(username);
(3)为副本表中的副本编号创建索引
SQL>createindexCopies_copyno_idx
2onCopies(copyno);
3.5创建和管理存储过程
添加书籍信息的存储过程BooksAdd,当管理员进行信息添加时,可以快速调用。
SQL>createorreplaceprocedureBooksAdd
2(isbninchar,titleinchar,pubnameinchar,
3authorinchar,authornoinchar,zncodeinchar)
4as
5begin
6insertintoBooks
7values(isbn,title,pubname,author,authorno,zncode);
8endBooksAdd;
9/
3.6创建和管理触发器
删除Books书籍信息表中的一条记录,删除记录isbn的字段值在Copies副本信息表中对应的记录
SQL>createorreplacetriggerBooksDelete
2afterdeleteonBooksforeachrow
3begin
4deletefromCopies
5whereisbn=:
OLD.isbn;
6endBooksDelete;
7/
4数据库访问
4.1数据查询
(1)查询图书表中作者号为2的作者所有作品的书名和出版社。
(2)查找所有姓王的用户的编号,姓名,联系电话,地址。
(3)查找由作家出版社出版的所有图书的副本编号。
4.2数据更新
2.1表中数据的插入
(1)Books表
insertintoBooks(ISBN,Title,PubName,ZNCode,author,authorno)
values('A0001','草样年华','长江文艺出版社',1,'孙睿',1);
InsertintoBooks(ISBN,Title,PubName,ZNCode,author,authorno)
values('A0002','莲花','武汉大学出版社',2,'安妮宝贝',2);
InsertintoBooks(ISBN,Title,PubName,ZNCode,author,authorno)
values('A0003','小王子','作家出版社',3,'黄葒',3);
InsertintoBooks(ISBN,Title,PubName,ZNCode,author,authorno)
values('A0004','彼岸花','北京大学出版社',4,'安妮宝贝',2);
InsertintoBooks(ISBN,Title,PubName,ZNCode,author,authorno)
values('A0005','二三事','武汉大学出版社',5,'安妮宝贝',2);
InsertintoBooks(ISBN,Title,PubName,ZNCode,author,authorno)
values('A0006','霜冷长河','作家出版社',6,'余秋雨',4);
InsertintoBooks(ISBN,Title,PubName,ZNCode,author,authorno)
values('A0007','笛声何处','作家出版社',7,'余秋雨',4);
insertintoBooks(ISBN,Title,PubName,ZNCode,author,authorno)
values('A0008','梦里花落知多少','长江文艺出版社',8,'郭敬明',5);
insertintoBooks(ISBN,Title,PubName,ZNCode,author,authorno)
values('A0009','小时代','长江文艺出版社',9,'郭敬明',5);
insertintoBooks(ISBN,Title,PubName,ZNCode,author,authorno)
values('A00010','三重门','作家出版社',10,'韩寒',6);
(2)Copies表
insertintocopies(copyno,isbn)values(1001,'A0001');
insertintocopies(copyno,isbn)values(1002,'A0002');
insertintocopies(copyno,isbn)values(1003,'A0003');
insertintocopies(copyno,isbn)values(1004,'A0004');
insertintocopies(copyno,isbn)values(1005,'A0005');
insertintocopies(copyno,isbn)values(1006,'A0006');
insertintocopies(copyno,isbn)values(1007,'A0007');
insertintocopies(copyno,isbn)values(1008,'A0008');
insertintocopies(copyno,isbn)values(1009,'A0009');
insertintocopies(copyno,isbn)values(10010,'A00010');
(3)Users表
insertintoUsers(UserName,UserPwd,UserNo,Birth,QuanXian,Email,TEL,Address)
Values('冯美','123',1,1,TO_DATE('1986-09-01','YYYY-MM-DD'),'530347830
@','13550399250','hubei');
InsertintoUsers(UserName,UserPwd,UserNo,Birth,QuanXian,Email,TEL,Address)
values('王灿','456',2,2,TO_DATE('1998-10-09','YYYY-MM-DD'),'297074969
@','1355041230','hubei');
InsertintoUsers(UserName,UserPwd,UserNo,Birth,QuanXian,Email,TEL,Address)
values('杨攀','789',3,2,TO_DATE('1984-10-01','YYYY-MM-DD'),'503381172
@','1355041316','hubei');
InsertintoUsers(UserName,UserPwd,UserNo,Birth,QuanXian,Email,TEL,Address)
values('张楠楠','111',4,2,TO_DATE('1978-02-09','YYYY-MM-DD'),'502881172@','1355041720','hubei');
InsertintoUsers(UserName,UserPwd,UserNo,Birth,QuanXian,Email,TEL,Address)
values('王子莫','222',5,2,TO_DATE('1989-01-09','YYYY-MM-DD'),'503381171
@','1355041136','hubei');
InsertintoUsers(UserName,UserPwd,UserNo,Birth,QuanXian,Email,TEL,Address)
values('李丽','333',6,2,TO_DATE('1989-01-09','YYYY-MM-DD'),'503386472
@','1355041510','hubei');
InsertintoUsers(UserName,UserPwd,UserNo,Birth,QuanXian,Email,TEL,Address)
values('张婷','444',7,2,TO_DATE('1988-05-09','YYYY-MM-DD'),'403386472
@','1355041732','hubei');
InsertintoUsers(UserName,UserPwd,UserNo,Birth,QuanXian,Email,TEL,Address)
values('王维','555',8,2,TO_DATE('1986-07-19','YYYY-MM-DD'),'503122347@','1355041110','hubei');
InsertintoUsers(UserName,UserPwd,UserNo,Birth,QuanXian,Email,TEL,Address)
values('刘晓林','666',9,2,TO_DATE('1989-11-16','YYYY-MM-DD'),'503391412
@','1355041