报刊订阅数据库设计(共31页).doc

上传人:飞****2 文档编号:14220776 上传时间:2022-05-03 格式:DOC 页数:31 大小:813.50KB
返回 下载 相关 举报
报刊订阅数据库设计(共31页).doc_第1页
第1页 / 共31页
报刊订阅数据库设计(共31页).doc_第2页
第2页 / 共31页
点击查看更多>>
资源描述

《报刊订阅数据库设计(共31页).doc》由会员分享,可在线阅读,更多相关《报刊订阅数据库设计(共31页).doc(31页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、精选优质文档-倾情为你奉上数据库系统原理课程设计报告设计题目 报刊订阅数据库设计 专业班级 计算机科学与技术 # 学 号 姓 名 成 绩 评 语: 二零一五年七月八日专心-专注-专业目录 1 系统开发概述 1.1系统开发背景.3 1.1.1 系统开发意义.31.2 系统功能需求分析.31.3 系统性能需求分析.41.4 系统数据流程分析.4 2 数据库概念结构设计2.1 基本项构思ERD的四条基本原则.62.2 设计数据项和数据结构.6 3 数据库逻辑结构设计3.1 一般逻辑模型设计.83.2 具体逻辑模型设计.9 4 数据库物理结构设计4.1 SQL Server数据库及数据表的创建.104

2、.1.1 数据库创建.10 4.1.2 数据表的创建.114.2 数据完整性设计.13 4.2.1 主键约束的创建.13 4.2.2 DEFAULT约束的创建.13 4.2.3 外键约束的创建.14 4.2.4 UNIQUE约束的创建.16 4.2.5 CHECK约束的创建.174.3 索引的创建.184.4 视图的创建.185 数据库的操作5.1数据操纵.21 5.1.1表结构的修改.21 5.1.2 数据插入.215.1.3数据更新.235.1.4数据删除.235.2 数据查询.24 5.2.1 单表查询.24 5.2.2多表查询.265.3 存储过程的创建.295.4 触发器的创建.29

3、 6 总结1 系统开发概述1.1系统开发背景 1.1.1 系统开发意义现在随着网络、计算机以及数据库的快速发展,报刊的订阅也不再是传统低效的纸笔记录了,已经转向网络。当人们收集了大量的数据后,应该把它们保存起来进入近一步的处理,进一步的抽取有用的信息。当年人们把数据存放在文件柜中,可现在随着社会的发展,数据量急剧增长,现在人们就借助计算机和数据库技术科学的保存大量的数据,以便能更好的利用这些数据资源为人们服务。 本系统就是面向一个企业的报刊订阅管理系统。此系统是一种比较智能化的管理系统,它面向所有企业部门的职工用户,但具有比较高的安全性能。它能够实现报刊订阅的基本功能,包括新报刊信息的录入、订

4、阅、查询等操作以及后台数据库的备份和恢复。用户合法注册后必须输入有效密码才能成功进入此系统,可以进行订阅报刊,查询信息,统计信息等操作。对于非法操作,系统有识别和防护措施。1.2 系统功能需求分析本系统主要面向的用户有系统管理员、读者。下面分角色对该系统的不同操作范围做说明。本系统主要有以下功能模块:(1)登陆功能:登陆系统为身份验证登录。分为管理员登录和一般用户登录。分别通过不同的用户名和密码进入报刊订阅管理界面,新的用户需要注册。(2)录入新信息功能:对于管理员,包括新用户信息和新报刊信息的录入功能,信息一旦提交就存入到后台数据库中;普通用户自行注册进行可以修改个人信息。(3)订阅功能:用

5、户可以订阅报刊,系统自动计算所需金额,并显示在界面上;管理员不可订阅报刊,必须以用户身份订阅报刊。(4)查询功能:用户可以查询并显示自己所订阅的信息;管理员可以按人员、报刊、部门分类查询。查询出的信息显示在界面上,并且可以预览和打印出结果。(5)统计功能:管理员可以按用户、部门、报刊统计报刊的销售情况,并对一些重要的订阅信息进行统计;普通用户可以统计出自己的订阅情况,并且可以预览和打印出结果。(6)系统维护功能:数据的安全管理,主要是依靠管理员对数据库里的信息进行备份和恢复,数据库备份后,如果出了什么意外可以恢复数据库到当时备份的状态,这提高了系统和数据的安全性,有利于系统的维护。1.3 系统

6、性能需求分析通过调查,该系统在性能方面有以下需求: 界面美观友好,信息查询灵活、方便、快捷、准确。数据保密性强,用户对应不同的操作级别。 对用户输入的数据进行过滤,当输入有误时提示用户。系统最大限度地实现易维护性和易操作性。 应有较高的稳定性。 系统应有较高的容错性。 速度上要求前台要能够很快地响应订阅用户所发出的请求。 负荷能力强,防止数据量过大而影响速度。数据备份功能,保证数据在丢失之后可以得到及时的补救。1.4 系统数据流程分析下图为该系统的业务流程图表1-1 业务流程图管理员的相关操作是后台进行的,管理员只有通过登录才可进入后台管理界面,此界面包括后台登录、管理员信息维护(指定管理员、

7、删除管理员、修改管理员、查询管理员)、注册用户信息维护(删除用户、查询用户)、报刊信息维护(报刊类别管理、报刊管理)、管理员订单信息维护(订单审核、订单列表查看、订单查询)、注销登录等。 游客可以进入到主页面,可以浏览与查询报刊信息,但有局限性,不能进行订阅购买等操作。用户只有通过注册,成为会员,在主页面进行登录后,才可以进行订阅购买,也可以进入个人主页面,在此可以进行密码修改和个人信息修改、查看购物车、用户订单信息维护等操作。2 数据库概念结构设计2.1 基本项构思ERD的四条基本原则:原则1 (确定实体):能独立存在的事物,例如人、物、事、地、团体、机构、活动、事项等等,在其有多个由基本项

8、描述的特性需要关注时,就应把它作为实体。原则2 (确定联系):两个或多个实体间的关联与结合,如主管,从属,组成,占有,作用,配合,协同等等,当需要予以关注时,应作为联系。实体间的联系可分为一对一、一对多、多对多等三类,在确定联系时还要确定其类型。原则3 (确定属性):实体的属性是实体的本质特征。实体应有标识属性(能把不同个体区分开来的属性组),并指定其中一个作为主标识。联系的属性是联系的结果或状态。原则4(一事一地):信息分析中得到的基本项要在且仅在实体联系图中的一个地方作为属性出现。2.2 经过上述系统功能分析和需求总结,设计如下面所示的数据项和数据结构。l 管理员表(Administrat

9、or):用于存放管理员的数据记录,包括数据项:管理员名、密码。l 部门表(Department):用来存放部门的相关记录,包括数据项:部门号,部门名。l 用户表(Users):用于存放注册用户的记录,包括数据项:用户账号、密码、真实姓名、身份证号、联系电话,联系地址,部门号(和部门表有关)等。l 报刊类别表(Newspaper Class):用于存放初始的报刊类别记录,包括数据项:分类编号、分类名称。l 报刊信息表(Newspaper):用于存放报刊记录,包括数据项:报刊代号、报刊名称、出版报社、出版周期、季度报价、内容介绍、分类编号(和报刊类别表有关)等。l 订单表(Order):用于存放用

10、户下达的订阅报刊的基本信息,包括数据项:订单编号、用户编号(用户表的主码)、报刊代号(报刊信息表的主码)、订阅份数、订阅月数等。2.3 根据上面的设计规划出来的实体有部门实体、管理员实体、用户实体、报刊类别实体、报刊信息实体和订单实体。部门实体的E-R图如下图所示: 管理员实体的E-R图如下图所示: 用户实体的E-R图如下图所示: 报刊信息实体的E-R图如下图所示: 订单实体的E-R图如下图所示: 报刊类别实体的E-R图如下图所示: 所有实体之间的关系E-R图如下图所示:3 数据库逻辑结构设计3.1 一般逻辑模型设计关系模型的逻辑结构是一组关系模式的集合。将E-R图转换为关系模型就是要将实体型

11、、实体的属性和实体型之间的联系转换为关系模式。由ERD导出一般关系模型的四条原则;一个1:1联系可以转换为一个独立的关系模式,也可以与任意一端对应的关系模式合并。如果软换为一个独立的关系模式,则与该联系相连的各实体的码以及联系本身的属性均转换为关系的属性,每个实体的码均是该关系的候选码。如果与某一端实体对应的关系模式何明,则需要在该关系模式的属性中加入另一个关系模式的码和联系本身的属性。一个1:n联系可以转换为一个独立的关系模式,也可以与n端对应的关系模式合并。如果转换为一个独立的关系模式,则与该联系相连的各实体的码以及联系本身的属性均转换为关系的属性,而关系的码为n端实体的码。一个m:n联系

12、转换为一个关系模式。与该联系相连的各实体的码以及联系本身的属性均转换为关系的属性,各实体的码组成关系的码或关系码的一部分。3个或3个以上实体间的一个多元联系可以转换为一个关系模式。与该多元联系项链呢的各实体的码以及联系本身的属性均转换为关系的属性,各实体的码组成关系的码或关系码的一部分。根据以上原则将E-R图转换成的关系模式如下:部门(部门号,部门名称)用户(用户账号,密码,用户真实姓名,联系电话,联系地址,部门号)管理员(管理员名,密码)报刊类别(分类编号,分类名称)报刊(报刊代号,报刊名称,出版报社,出版周期,每月订价,内容介绍,分类编号)订单(用户编号,报刊代号,订阅份数,订阅月数,订阅

13、总额)3.2 具体逻辑模型设计 在SQL Server2000数据库中,首先创建newspaper数据库,然后根据数据库的逻辑结构分析创建表3-13-6的6张数据表。表3-1 department部门表结构字段名称字段类型允许空说明depNumber(主码)Char(10)否部门号depNameChar(50)是部门名称表3-2 users用户表结构字段名称字段类型允许空说明userNo(主码)Char(10)否用户帐号userNameChar(20)是真实姓名passWordChar(10)否用户密码addressChar(150)是用户联系地址phoneChar(20)是用户联系电话dep

14、NumberChar(10)否用户所属部门号表3-3 newspaperClass报刊分类表结构字段名称字段类型允许空说明classid(主码)Int(4)否报刊分类编号classNameChar(30)是报刊分类名称表3-4 newspaper报刊表结构字段名称字段类型允许空说明newsNo(主码)Char(10)否报刊代号newsNameChar(40)否报刊名称classidInt(4)否报刊分类编号publishChar(150)是出版报社pubPeriodChar(30)是出版周期contentChar(4000)是内容介绍priceFloat(8)否每月报价表3-5 book订单表

15、结构字段名称字段类型允许空说明userNo(主码)Char(10)否用户帐号newsNo(主码)Char(10)否报刊代号orderAmountInt(4)否订阅份数orderMonthInt(4)否订阅月数totalPriceFloat(8)是订阅总额表3-6 adminuser管理员表结构字段名称字段类型允许空说明adminUser(主码)Char(20)否管理员用户名adminPassChar(10)否管理员密码4 数据库物理结构设计4.1 SQL Server数据库及数据表的创建4.1.1 数据库创建使用T-SQL语句创建数据库单击“常用”工具栏中的“新建查询”按钮,就可以新建一个数据

16、库引擎查询文档,在查询文档中输入创建数据库的T-SQL语句。如下所示:create database BKDY on primary ( name=BKDY_data, filename=D:BKDY_data.mdf, size=5mb, maxsize=100mb, filegrowth=15% ) log on ( name=BKDY_log, filename=D:BKDY_log.ldf, size=2mb, filegrowth=1mb )图4-1 数据库的创建4.1.2 数据表的创建(1)使用SQL Server Management Studio创建表 在BKDY数据库中,使用

17、SQL Server Management Studio建立users、newspaper两个表,其结构如下4-24-3所示。步骤如下:在“对象资源管理器”中单击“BKDY”前面的“+”号,选择“表”并右键单击,在弹出的快捷菜单中选择“新建表”命令,打开设计表字段对话框。 在设计表对话框中分别输入“列名”、“数据类型”和“允许NUll值”3个参数的值。 设计完表的字段后,单击“保存”按钮,弹出保存对话框,在输入表名称中更改表名。 (2)使用T-SQL语句创建数据库在报刊订阅数据库BKDY中,利用T-SQL语句创建department数据表。SQL语句如下所示:图4-2 users表图4-3 n

18、ewspaper表use BKDYgocreate table department( depNumber char(10) primary key not null, depName char(50), ) 4.2 数据完整性设计4.2.1 主键约束的创建 (1)在SQL Server Management Studio中设置和修改主键 在表设计器中,单击要定义为主键的列的行选择器(如果要选择多列,在单击其他列的行选择器时按住Ctrl键)。然后右键单击该列的行选择器,选择“设置主键”命令,自动创建名为“PK_”(后跟表名)的主键索引。图4-4 book表主键创建 (2)利用T-SQL语句定义

19、和修改主键 在数据库引擎查询文档中输入以下语句:USE BKDYGOALTER TABLE departmentADD CONSTRAINT PK_ depNumber PRIMARY KEY clustered(depNumber)GO单击“执行”按钮则执行程序段。4.2.2 DEFAULT约束的创建 DEFAULT约束为列提供默认值,它提供了域完整性。 (1)使用SQL Server Management Studio创建DEFAULT约束 为newspaper中的单价字段price设置默认值为“10”。打开表设计器窗口,单击price字段,然后在窗口下部的“默认值或绑定”单元格中输入“1

20、0”。修改完毕,保存该表。图4-5 default约束创建(2)用T-SQL语句创建DEFAULT约束 在数据库引擎查询文档中输入以下语句: USE BKDY GO ALTER TABLE newspaper ADD price float CONSTRAINT price DEFAULT 10, GO单击“执行”按钮则执行程序段。4.2.3 外键约束的创建 在对两个相关联的表进行数据插入和删除时,通过参照完整性保证它们之间数据的一致性。通常利用FOREIGN KEY约束定义参照表的外键,利用Primary Key和Unique约束定义主表中的主键或唯一键,可实现主表与从表之间的参照完整性。

21、(1)使用SQL Server Management Studio创建FOREIGN KEY约束 步骤如下: 在对象资源管理器中,右键单击BKDY数据库的“数据库关系图”,在弹出的菜单中选择“新建数据库关系图”。 在弹出的对话框中将所涉及的6个表添加到数据库关系图中。选中book表中的newsNo字段,将其拖到newspaper表上选中book表中的userNo字段,将其拖到users表上 选中users表中的depNumer字段,将其拖到department表上选中newspaper表中的classId字段,将其拖到newspaperClass表上图4-6 外键约束的创建 也可使用T-SQL

22、语句创建FOREIGN KEY约束 定义newspaper表中外键 在数据库引擎查询文档中输入以下语句: USE BKDYGOALTER TABLE newspaperCONSTRAINT FK_classId FOREIGN KEY(classId) REFERENCES newspaperClass(classId)GO单击“执行”按钮则执行程序段。 4.2.4 UNIQUE约束的创建 为了确保列中的值是唯一的,需要设置唯一性约束。用户可以对一列或者多列定义唯一性约束,但这些列必须都定义为NOT NULL。 (1)使用SQL Server Management Studio在newspap

23、er中的newsNo,classId和newsName列上设置UNIQUE约束。步骤如下:在newspaper表设计器中右键单击,在弹出的快捷菜单中选择“索引/键”命令,弹出“索引/键”对话框。在弹出的“索引/键”对话框中单击“添加”按钮,然后在“常规”栏的“类型”右边选择“唯一键”,选择列名newsNo,classId,newsName和排序规律ASC(升序)。设置完成后,单击“关闭”按钮返回表设计器窗口,然后单击工具栏中的“保存”按钮,完成唯一性约束的创建。图4-7 unique约束创建(2)用T-SQL语句定义或修改唯一性约束在定义数据表book时没有定义userNo,newsNo上的唯

24、一性约束,用SQL语句添加唯一性约束。在数据库引擎查询文档中输入以下语句:USE BKDYGOALTER TABLE bookADD CONSTRAINT UN_userNo UNIQUE (userNo)ADD CONSTRAINT UN_newsNo UNIQUE (newsNo)GO单击“执行”按钮则执行程序段。4.2.5 CHECK约束的创建CHECK约束将用户输入到特定列的数据限制为指定的值。可以在单列或多列上声明CHECK约束,只有单列CHECK约束可以和列一起定义,而且一列只能定义一个CHECK约束,涉及多列的CHECK约束作为CREATE TABLE语句中单独的元素。一个约束可

25、以有多种逻辑表达式,它们可以和and或or一起使用。 (1)使用SQL Server Management Studio创建CHECK约束为book表中添加订阅份数为0100的约束。打开表设计器窗口,可以单击工具栏中的 ,此时会弹出一个对话框,用来设置CHECK约束。然后设置该CHECK约束是否强制用于Insert和Update,是否强制用于复制,是否在创建或重新启用时检查现有数据。选择“是”,然后将该数据表保存。 (2)也可在在已经创建的表book上,添加订阅份数为0100的约束。在数据库引擎查询文档中输入以下语句:USE BKDYGOALTER TABLE bookADD CONSTRAI

26、NT CK_orderAmount CHECK(orderAmount=0 AND orderAmount=60图5-13 查询45.2.2多表查询(一)连接查询(1)利用T-SQL语句在BKDY数据库中实现连接查询操作。 查询所有客户的姓名、性别、地址、所订阅的报刊名称。Select userName,address,phone,newsNameFrom users,book,newspaperWhere users.userNo=book.userNo And book.newsNo=newspaper.newsNo单击“执行”按钮则执行程序段。图5-15 查询1查询李华的姓名、地址、电话

27、,所订阅的报刊名称。Select userName,address,phone,newsNameFrom users,book,newspaperwhere userName=李华 and users.userNo=book.userNo And book.newsNo=newspaper.newsNo 单击“执行”按钮则执行程序段。图5-16 查询2(二)嵌套查询 (2)利用T-SQL语句在EDUC数据库中实现嵌套查询操作。 查询订阅了电脑爱好者的客户编号和姓名。Select userNo,userNameFrom usersWhere userNo In (Select userNo Fr

28、om book Where newsNo= (select newsNo From newspaper Where newsName=电脑爱好者单击“执行”按钮则执行程序段。)图5-17 查询3查询订单号为1002且订单总价高于李毅该订单总价的客户编号和订单总价。Select userNo,totalPriceFrom bookWhere newsNo=1002 and totalPrice (Select totalPrice From book Where newsNo=1002 And userNo= (Select userNo From users Where userName=李毅

29、 )单击“执行”按钮则执行程序段。图5-18 查询45.3 存储过程的创建5.4 触发器的创建6 总结 在我看来,数据库课程设计主要的目标是利用课程中学到的数据库知识和技术较好的开发设计出数据库应用系统,去解决各行各业信息化处理的要求。通过这次的课程设计,可以巩固我们对数据库基本原理和基础理论的理解,掌握数据库应用系统设计开发的基本方法,进一步提高我们综合运用所学知识的能力。通过完成本次课程设计,在对系统的分析、设计中,碰到很多概念上很模糊的问题,通过查阅相关资料,问题得到了解决,设计工作也顺利进行。由于才刚开始接触数据库的学习,学到的都是基础知识,加之上课学到的东西没好好的消化,所以做着有点

30、辛苦。好在在课程设计前有数据库的实验,要不得付出更大的努力。但在设计过程中也获得了很多乐趣学到了很多知识。我遇到错误的时候,感到很受打击。值得欣慰的是,在同学的帮助和大量参考书的查阅下,我把自己的模块做好了。这就是我收获最大的地方。而且,我明白了遇到困难永不放弃的重要性。也因为没有接触PHP,所以最后一部分没有做。希望通过以后的学习掌握这方面知识,同时对基本的软件设计流程和设计思想也有了更深一步的理解。知识的获得是无止境的,只要你想学,只要你行动,没有什么会难倒我们的。回首这近两个星期的课程设计,我很欣慰。因为我有了动力,有了勇气。这些美好的回忆美好的东西将永远伴随着我。再谈谈学习数据库这门课程的体会 经过一个学期的数据库课程的学习,我们掌握了创建数据库以及对数据库的操作的基础知识。数据库这门课涉及到以前的知识不多,是一门从头学起的课程,即使基础不是很好,只要认真听讲、复习功课,还是一门比较容易掌握的课。课堂上讲的知识比较理论化,如果不动手就无法将知识转化为技能,而动手去做能够让我们将学过的知识在实践中运用,找到知识漏洞,并且能学到更多关于实际操作的知识和技巧。并且培养了我们的自学能力。第一次接触SQL语言,虽然陌生,但是可以让我从头开始学,就算没有基础的人也可以学得很好。刚开始练习SQL语言的时候,并不是很

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁