当前位置:文档之家› 数据库课程设计--图书管理系统

数据库课程设计--图书管理系统

目录

1概述 (1)

1.1设计背景及目的 (1)

1.2设计范围及相关领域 (1)

1.3预期结果及意义 (2)

2需求分析 (2)

2.1功能需求 (2)

2.2数据流图及数据字典 (3)

3概念结构设计 (3)

3.1局部设计 (4)

3.2整体设计 (7)

4逻辑结构设计 (7)

4.1逻辑结构设计的含义 (7)

4.2关系模式的转换及规范化 (8)

5物理结构设计 (8)

5.1物理结构设计的含义 (8)

5.2数据表 (9)

6数据库实施 (10)

6.1建立实例数据库 (10)

6.2加载数据及运行测试 (14)

7数据库的运行和维护 (19)

7.1安全性与完整性 (19)

7.3监测和改善数据库性能 (21)

8结论 (22)

1概述

1.1设计背景及目的

随着信息技术的迅猛发展,计算机技术的日渐成熟,科学技术的力量已经得到了最广大人民在思想上的认可。尤其是计算机的有效利用,在当今社会各行各业的各个方面起到了越来越重要的作用。书店管理也是一样,特别是大中型书店,信息管理也越是显得尤为重要。如果没有一个好的书店管理系统,对于书店的经营是非常不利的。在信息时代,传统的书店管理方式必然被计算机为基础的信息管理系统所取代。因为作为计算机应用的一部分,使用计算机对图书信息进行管理,具有着人工管理所无法比拟的优点。例如:检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。这些优点能够极大地提高书店管理的效率。为了跟上信息时代的步伐,数字化书店管理系统的出现将是必然。它将为人民的生活提供更好的帮助。

根据所学知识,创建一个小型书店管理系统,为书店管理人员提供更为便捷的管理方式,提高书店运行的效率,同时也为读者提供方便。

本系统主要是改善对书店管理者、供应商以及客户之间的繁琐的管理方式,不过,界面美化还需改善。

1.2设计范围及相关领域

本管理系统的设计主要针对书店管理人员在购书和租、售书方面的管理。而设计主要涉及数据库方面的知识,对于界面的创建、美化等可以运用Dreamweaver、VB或者C#等方面的知识进行扩充。

设计分析与研究

小型书店管理系统主要用于书店的管理,主要包括以下几种基本表:图书信息表:图书名称、订购数量、订购时间、订购单价、金额、出版社名称、作者名称;供应商名称等;供应商信息表:供应商名称、地址、电话,联系人等;客户信息表:客户编号、名称、年龄、性别、累计购书金额等;销售信息表:时间、销售名称、数量、销售单价、客户编号、客户名称、金额等。

本书店管理系统则主要依赖以上几个表,而这几个表也反映出了本系统所要实现的

基本功能。但要实现本系统的各项功能,则还要考虑其他很多方面,如开发环境、应用环境等等。我主要运用SQL server 2008来创建本数据库。

SQL Server 2008 Developer Edition(32 位和64 位)

Developer Edition 使开发人员可以在SQL Server 上生成任何类型的应用程序。它包括SQL Server 2008 Enterprise Edition 的所有功能,但有许可限制,只能用于开发和测试系统,而不能用作生产服务器。Developer Edition 是独立软件供应商(ISV)、咨询人员、系统集成商、解决方案供应商以及创建和测试应用程序的企业开发人员的理想选择。Microsoft SQL Server 2008 是一个完整的商务智能(BI) 平台,其中为用户提供了可用于构建典型和创新的分析应用程序所需的各种特性、工具和功能。

1.3预期结果及意义

基本实现基本表中所有的功能,保证基本安全性能的有效性。符合本次课程设计的基本要求。

我认为有两方面的意义:一是通过书店管理系统的设计,进一步加深自己对数据库的认识,熟悉数据库的基本操作,理论联系实际。二是运用书店管理系统,排出了一系列不必要的繁琐步骤,节省时间,将极大地提高书店管理人员的工作效率,方便了人们。

2需求分析

2.1功能需求

对于书店管理系统,书店管理人员可以对图书的进与出进行管理,与此同时,读者也可以对要阅读的书进行查询。本系统的查询操作主要包括:

(1)查询当月书店销售金额、营业金额;

(2)查询某种图书库存数量;

(3)查询当月销量最好的图书信息;

(4)按供应商名称查询订购信息;

(5)查询购买次数超过3次的客户信息。

本管理系统可以及时更新信息,保证数据的准确性。

2.2数据流图及数据字典

. (1) 数据流图

2-2-1数据流图

(2) 数据字典

3概念结构设计

概念结构设计就是将需求分析得到的用户需求抽象为信息结构。

3.1局部设计

(1)图书E-R图:

图3-1-1 (2)供应商E-R图:

图3-1-2 (3)客户E-R图:

图3-1-3 (4)供应E-R图:

图3-1-4 (5)销售E-R图:

图3-1-5-1

图3-1-5-2

3.2整体设计

图3-2-1

4逻辑结构设计

4.1逻辑结构设计的含义

数据库逻辑设计就是将概念模型转换成特定的DBMS所支持的数据库模型的过程。

逻辑结构设计一般分为三步进行:

(1)从E-R图向关系模式转化

数据库的逻辑设计主要是将概念模型转换成一般的关系模式,也就是将E-R图中实体、实体的属性和实体之间的联系转化为关系模式

(2) 数据模型的优化

数据库逻辑设计的结果并不是唯一的,为了提高数据库应用系统的性能,还应该适

当的修改数据模型的结构,提高查询速度。

(3) 关系视图的设计

关系视图的设计又叫外模式设计,也叫用户模式设计,是用户可以直接访问的书记模式。

4.2关系模式的转换及规范化

图书信息(图书名称、供应商名称、订购数量、订购时间、订购单价、金额、出版社名称、作者名称)

供应商信息(供应商名称、地址、电话,联系人)

客户信息(客户编号、图书名称、名称、年龄、性别)

销售信息(销售图书名称、客户编号、客户名称、销售单价、数量、时间、金额) 带有下划线的表示主键。

通过分析以上模式的转换,可以将部分信息属性细化,重新划分属性分布,组建新的信息表,可以减少冗余,使结构更加简洁。

以下是经过规范化后的关系模式:

图书信息(图书分类编号、图书名称、出版社名称、作者名称)

供应商信息(供应商名称、地址、电话,联系人)

供应信息(图书分类编号、供应商名称、订购时间、订购数量、金额、订购单价) 客户信息(客户编号、名称、年龄、性别)

销售信息(图书分类编号、客户编号、销售单价、数量、时间、金额等)

其他销售信息(图书分类编号、销售月份、销售总量)

5物理结构设计

5.1物理结构设计的含义

对于给定的逻辑数据模型,选取一个最适合应用环境的物理结构的过程,称为数据库物理结构设计。数据库物理设计阶段的任务是根据具体计算机系统(DBMS和硬件等)的特点,为给定的数据库模型确定合理的存储结构和存取方法。实现的是数据库系统的

内模式,它的质量直接决定了整个系统的性能。

5.2数据表

(1)图书表(BD)

(5)销售表(BCD)

(6)销售单表(BSD)

表5-2-6 BSD表

6数据库实施6.1建立实例数据库

6.1.1创建一个书店数据库BS

CREATE DATABASE [BS] ON

(

NAME = BS_data,

FILENAME ='D:\BSdata.mdf',

SIZE = 10,

MAXSIZE = 100,

FILEGROWTH = 10

)

LOG ON

(

NAME =BS_log,

FILENAME = 'D:\BSdata.ldf',

SIZE = 5,

MAXSIZE = 25,

FILEGROWTH =5

)

6.1.2创建各种数据表

(1)创建图书信息表(BD表)

create table BD

(

B_identifier char(8)not null constraint B_prim primary key, B_name varchar(50)not null,

B_auther varchar(20)not null,

B_publish varchar(50)not null

)

(2)创建供应商信息表(GD表)

create table GD

( provider varchar(50)not null constraint G_prim primary key, address varchar(50),

linkman varchar(20),

telephone bigint not null )

(3)创建供应信息表(BGD表)

create table BGD

(

B_identifier char(8) not null constraint fk_bd_bgd foreign key references bd(b_identifier),

provider varchar(50)not null,

constraint BGD_Prim primary key(B_identifier,provider),

order_count int not null constraint CK_BGD check(order_count>=0),

order_time smalldatatime not null,

order_price smallmoney not null,

order_money smallmoney not null

(4)创建客户信息表(CD表)

create table CD

(

C_identifier char(8)not null constraint C_prim primary key,

C_name varchar(20),

C_sex char(2) not null default'男',

C_age int constraint C_age_Chk check(C_age between 1 and 100)

)

(5)创建销售信息表(BCD表)

create table BCD

(

B_identifier char(8)not null constraint fk_bd_bcd foreign key references bd(b_identifier),

C_identifier char(8)not null,

constraint BCD_Prim primary key(B_identifier,C_identifier),

sell_count int not null,

sell_time_year int not null,

sell_time_mon int not null,

sell_time_day int not null,

sell_price smallmoney not null,

sell_money smallmoney not null

)

(6)创建销售单表(BSD表)

create table BSD

(

B_identifier char(8)not null constraint fk_bd_bsd foreign key references bd(b_identifier),

sell_time_mon int not null,

sell_counts int not null constraint CK_BSD check(sell_counts>=0) )

(7)各表之间的联系

6.2加载数据及运行测试

6.2.1加载数据

(1) 图书信息表(BD表)

insert into BD(B_identifier,B_name,B_auther,B_publish)

values ('00001','计算机操作系统(第三版)','张默','电子工业出版社')

insert into BD(B_identifier,B_name,B_auther,B_publish)

values ('00002','数据库原理(第二版)','汤默','清华大学出版社')

insert into BD(B_identifier,B_name,B_auther,B_publish)

values ('00003','Java面向对象编程','杨默','人民邮电出版社')

insert into BD(B_identifier,B_name,B_auther,B_publish)

values ('00004','计算机网络','单默','西安电子科技大学出版社')

insert into BD(B_identifier,B_name,B_auther,B_publish)

values ('00005','七龙珠','斯默','电子工业出版社')

(2)供应商信息表(GD表)

insert into GD(provider,address,linkman,telephone)

values ('电子工业出版社','北京市七八街','赵六',152********)

insert into GD(provider,address,linkman,telephone)

values ('清华大学','北京市五六街','王五',152********)

insert into GD(provider,address,linkman,telephone)

values ('人民邮电出版社','北京市三四街','李四',152********)

insert into GD(provider,address,linkman,telephone)

values ('西安电子科技大学','北京市一二街','张三',152********)

(3)供应信息表(BGD表)

insert into BGD(B_identifier,provider,order_count,order_time,order_price,order_money) values ('00001','电子工业出版社',20,'2009-11-12',20,400)

insert into BGD(B_identifier,provider,order_count,order_time,order_price,order_money) values ('00002','清华大学',20,'2009-11-15',30,600)

insert into BGD(B_identifier,provider,order_count,order_time,order_price,order_money)

values ('00003','人民邮电出版社',20,'2009-11-20',50,1000)

insert into BGD(B_identifier,provider,order_count,order_time,order_price,order_money) values ('00004','西安电子科技大学',20,'2009-11-22',40,800)

insert into BGD(B_identifier,provider,order_count,order_time,order_price,order_money) values ('00005','电子工业出版社',20,'2009-11-23',30,600)

通过上述方式继续输入其他三个表信息,截图如下:

(4)客户信息表(CD表)

(5)销售信息表(BCD表)

(6)销售单表(BSD表)

6.2.2运行测试

(1)查询某月书店销售金额及营业总额查询7月份书店销售金额:

select sum(sell_money)as '当月收入' from BCD

where sell_time_mon=7

select sum(sell_money)as'总收入' from BCD

(2)查询某种图书库存数量

查询编号是00002的图书库存数量:select order_count

from BGD

where B_identifier='00002'

(3)查询某月销售最好的图书信息

查询7月份销售最好的图书信息:

select BD.B_identifier,B_name,B_auther,B_publish,sell_counts from BD,BSD

where BD.B_identifier=BSD.B_identifier

group by BD.B_identifier,B_name,B_auther,B_publish,sell_counts having max(sell_counts)=

(select max(sell_counts)

from BSD

group by sell_time_mon

having sell_time_mon=7)

(4)按供应商名称查询订购信息

查询供应商名为电子工业出版社的订购信息:

select*

from BGD

where provider='电子工业出版社'

(5)查询订购次数超过3(包括3)次的客户信息

select CD.C_identifier,C_name,C_sex,C_age

from CD,BCD

where CD.C_identifier=BCD.C_identifier

group by CD.C_identifier,C_name,C_sex,C_age

having count(CD.C_identifier)>=3

7数据库的运行和维护

7.1安全性与完整性

7.1.1安全性

数据库的安全性是指保护数据库以防止非法使用造成的数据泄漏、更改或破坏。

我们可以通过创建服务器登入账号来实现其安全性。如:

创建了一个名为“mch”的登陆账号,其密码为000000,与BS数据库相连

EXEC sp_addLogin 'mch','000000','BS',NULL

EXEC sp_adduser 'mch'

为登陆账号“mch”设置一个名为“mch”的数据库用户账号,设置为db_owner角色。

EXEC sp_adduser 'mch','mch','db_owner'

7.1.2完整性

数据库的完整性是之保护数据库中数据的正确性、有效性和相容性,防止错误的数据进入数据库造成无效的操作。而实施数据库完整性的方法有五种:约束、默认值、规则、存储过程和触发器。

(1)约束

约束是SQL Server自动强制数据库完整性的方式,约束定义了列中允许的取值。

(2)默认值

默认是向用户输入记录时没有指定具体数据的列中自动插入的数据。

(3)规则

规则是数据库对存储在表中的列或用户自定义数据类型中的值的规定和限制。

(4)存储过程

相关主题
文本预览
相关文档 最新文档