第1讲 系统分析和数据库设计_第1页
第1讲 系统分析和数据库设计_第2页
第1讲 系统分析和数据库设计_第3页
第1讲 系统分析和数据库设计_第4页
第1讲 系统分析和数据库设计_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、-1-数据库应用编程数据库应用编程课程介绍-2-课程介绍课程介绍n 课程代码:课程代码:ND2002n 课程学时:课程学时:34课时n 学分:学分:2n 先修课程:先修课程: C#, 数据库系统原理/SQL Server-3-课程介绍课程介绍n 教学目的和要求:教学目的和要求:p数据库应用是当今软件行业中比重最大的领域。绝大部分软件企业招聘员工都要求具有数据库应用程序的开发能力。p本课程的教学目标是使学生掌握使用C#.NET进行数据库编程的基本技术,了解系统分析、设计、实现的一般软件工程步骤,加强编程能力,巩固数据库知识。p通过学习,要求学生掌握用C#语言和SQLServer进行数据库设计、用

2、户界面设计、数据库应用程序编程等技能,能对小规模的数据管理问题设计并实现结构清晰的应用软件。-4-课程介绍课程介绍n 教学内容教学内容p系统分析与数据库设计(4小课)p概要设计-模块划分与UI设计(4小课)pADO.NET数据库访问 (8小课)p三层架构设计(4小课)pLINQ及EF(4小课)p数据库程序安全设计(2小课)p报表打印(2小课)p复习与课程设计(3小课)-5-课程介绍课程介绍n考核的方式、要求、标准考核的方式、要求、标准p本课程以总评成绩为最终考核成绩,总评成绩为百分制,满分为100分。总评成绩由2部分组成,其中平时成绩占50%,考试成绩占50%。p平时成绩包括考勤成绩和作业成绩

3、。考勤总评成绩的10%;作业占总评成绩的25%。作业共三次,分别占8%,8%,9%。课程设计占15%。p考试采用闭卷笔试方式。考核知识基础和综合应用。对数据库结构、SQL、ADO.NET等关键知识点能够理解,可算合格;能够针对小的功能模块写出结构清晰的程序代码,可算良好;对具体的数据库应用问题知道如何分析和设计,并能从程序上实现,可算优秀。-6-课程介绍课程介绍n 教学资源教学资源p课程负责人:袁志课程负责人:袁志p办公地点:办公地点:综合楼网络工程系p电话:电话:87818806pE-mail: p答疑时间:答疑时间:星期二 上午;星期四上午-7-第第1讲讲 系统分析与数据库设计系统分析与数

4、据库设计事务事务系统分析系统分析数据库设计数据库设计UI设计设计数据库连接数据库连接数据库查询数据库查询离线数据管理离线数据管理多层架构设计多层架构设计报表报表程序发布部署程序发布部署-8-教学内容教学内容l 用一个真实的数据库应用程序BookStore为例,讲解需求分析方法与数据库编程的基本步骤,然后开始第一步工作:数据库设计。l 目录:1. 系统分析2. 数据库编程步骤3. 数据库设计-9-1. 系统分析系统分析n 洁是某系教务员,管理专业书籍是她的日常工作之一。她找到三个学生组成的“枫小组”,请他们帮助开发一套图书管理程序(BookStore)。他们围坐在一起,开始以下对话:重要的是清楚

5、要做什么-10-1. 系统分析系统分析洁:你们走进办公室的时候都看到了,那几个大柜子,全都放满了书,管起来太难了。希望有一个软件来帮助我管理。枫:说说你的需求吧,你希望软件提供哪些功能。洁:我列了几条主要的工作:p要记住谁借了书p要求统计所有书的价值p想知道哪些书借阅的人最多p书掉了之后要进行赔偿p超过借阅期限要催还p图书要能分类统计管理-11-1. 系统分析系统分析枫:哪些人可以借书?洁:一般都是老师,每个老师都有一个工号。枫:一种书只有一本吗?洁:多数只有一本,也有的有几本,我给每本书一个编号,从1开始。现在编到一千多了枫:你刚才说到图书分类,是怎样的分类的。洁:现在有这样几类:编程语言,

6、软件工程,网络技术,电子技术,人工智能,信息安全,数据库。以后可能还有其他的。-12-1. 系统分析系统分析枫:你刚才说借阅有期限,期限是多长?到期了怎么办?洁:一般借阅期限约3个月,到期之后我会去催还。但有时候我会忘记去催了。枫:我们觉得用电子邮件自动催还的方式可能对你有帮助。还有,掉了书要罚款,怎么罚?洁:罚款比例是由领导决定的,现在是按照2倍罚款。由系里专门管财务的老师负责收款,要开一张收据。(拿出了一张罚款单的存根)-13-1. 系统分析系统分析丢失图书赔款收据丢失图书赔款收据书名原价赔款比例赔款金额(小写) 赔款金额(大写)赔款人签名: 经办人签名: 日期:-14-1. 系统分析系统

7、分析枫:那你现在是怎么管这些图书的呢?洁:我没有好的方法,只能每隔一段时间打一份一个EXCEL表格,然后利用Excel来做一些统计,但做起来太费功夫。枫:你想统计一些什么数据?洁:主要是按出版社、出版年份、图书类型统计书的册数和价值。枫:软件是你一个人用吗?有没有其他用户?洁:现在是我使用,但我的计算机放在公共场合,所以要有保护方法,另外我觉得,如果软件好用,其他系的教务员也会感兴趣的。我建议将所有系的图书数据集中管理。 (会话还在继续)-15-1. 系统分析系统分析n 枫小组画了一张草图 统计分析管理参数设置图书信息管理借出图书催还收回图书丢书赔付打印Excel财务管理员操作员发送邮件打印收

8、据-16-1. 系统分析系统分析n 此外,枫小组把一些关键的词写成一份清单p名词操作员读者图书管理规定图书类型图书事件记录p动词新书登记借书还书催还丢书罚款统计-17-2. 数据库编程步骤数据库编程步骤n 如果我们接到这样一个问题,我们的基本想法是:开发一个管理系统,用数据库来存放数据,用一种编程语言来编程。工作的主要过程包括:p需求分析p数据库设计p用户界面设计p程序编码p测试p软件交付实际工作过程往往有反复。-18-2. 数据库编程步骤数据库编程步骤n 涉及到的技能点包括:p数据库知识(本课程选用SQL Server)p用户界面设计(本课程选用Windows Form)p编程语言(本课程选

9、用C#)p数据库访问技术(本课程选用ADO.NET)-19-3. 数据库设计数据库设计n 数据库设计包括三个主要的阶段p概念设计明确信息模型,一般用E-R图表示p逻辑设计从信息模型转换到DBMS支持的数据模型,一般用表格表示p物理设计对数据的逻辑模型,在DBMS上实现存储,此外根据数据应用的要求,设计约束、索引、视图、存储过程。数据库设计是数据库应用程序的基石。-20-3. 数据库设计数据库设计n 本讲直接描述在SQL Server Express上完成BookStore数据库的逻辑设计和物理设计的过程。包括:p新建一个SQL Server数据库文件p设计表p设计表间关系p输入初始数据p根据业

10、务要求设计视图和存储过程-21-3. 数据库设计数据库设计n DBMS选择p由于BookStore数据规模较小,开始时我们将其设计为一个单机版的应用程序,采用SqlServer 数据库文件存放数据,用Sql2005 Express来管理数据库文件,数据库文件命名为BookStore.mdfp当规模上升到一定的程度,比如从一个系的图书上升到所有系的图书管理时,这时需要设计成多用户应用程序,可以将数据库文件附加到SqlServer 2005中。-22-3. 数据库设计数据库设计n3.1 用VS2008新建SQL Server 数据库文件BookStore.mdf,步骤如下:1.在D:下新建一个文件

11、夹BookStore2.打开VS2005,在服务器资源管理器中,新建连接3.数据源更改为Microsfot SQL Server数据库文件4.数据库文件名写为D:BookStoreBookStore,5.此时可以看到服务器资源管理器的数据连接下多了一项BookStore.mdf,展开BookStore.mdf,如右图-23-3. 数据库设计数据库设计n 3.2 设计表pBookStore数据库中应该包含的表有:TUser(图书管理员表)TReader(读者表)TBookDetail(图书详细表)TLendInfo(借阅信息表)TLostInfo(丢失信息表)TCategory(书类型表)TAr

12、g(参数表)TLog(历史记录表)p注意到了吗:表名要尽量表意,表名用T开头(建议但不强制)。p现在开始设计每张表给出表的列保证实体完整性:每个表都有主键、保证值域完整型:列类型、Check约束、是否允许空值保证引用完整性:表间关系-24-3. 数据库设计数据库设计n 3.2 设计表设计表pTUserUserId(操作员号), nchar(10),主键Pwd(登录口令), nchar(10),Not NullUserName(操作员名), nchar(10), Not NullpTReaderReaderID(读者ID),nchar(20),主键Name(姓名),nchar(20), Not

13、NullEmail(邮箱), nchar(40), Not NullpTBookDetailBookID(图书编号),int,标示,主键ISBN(ISBN),nchar(20), Not NullTitle(书名),nchar(40), Not NullPrice(单价),moneyPublisher(出版社),nchar(20),Not NullAuthor(作者),nchar(50),Not NullPublishYear(出版年份),nchar(4), Not NullBookType(图书类型),nchar(20),Not NullStatus(状态),nchar(20), Not N

14、ull-25-3. 数据库设计数据库设计n 3.2 设计表pTCategoryBookType(图书类型),nchar(20),主键Summary(摘要),nchar(100)pTLendInfoBookId(图书编号),int,主键ReaderId(读者编号),nchar(20),Not NullLendDate(借出日期),DateTime,Not NullpTLostInfoBookId(图书编号),int,主键ReaderId(读者编号),nchar(20),Not NullLostDate(报失日期),DateTime,Not NullHasPay(已赔付金额),money-26-3

15、. 数据库设计数据库设计n 3.2 设计表pTLogLogID,int,标示,主键UserId(操作员编号),nchar(20),Not NullReaderID(读者编号),nchar(20),Not NullBookID(图书编号),int,Not NullEvent(事件),nchar(20)EventDate,Not NullpTArgLimitDay(借书期限),intPunishRate(赔款百分比),intSMTPServer(发送邮件服务器),nchar(20)SMTPUid(邮件用户),nchar(10)ManageEmail(系统邮箱),nchar(40)-27-3. 数据

16、库设计数据库设计n 3.2 设计表p添加CHECK约束TBookDetail 要求Status=“借出” or=“丢失” or=“在库” 右键点击TBook,选择表定义 右键点击设计界面,选择CHECK约束 在表达式中输入 (Status=丢失 OR Status=借出 OR Status=在库) 或者 Status in (丢失 , 借出 , 在库)TLog 要求Event=“登记” or=“借出” or=“丢失” or=“归还”or=“赔偿”TArg 要求LimitDay大于30小于180,PunishRate大于等于100小于等于200-28-3. 数据库设计数据库设计n 3.3 设计表

17、间关系p表间关系反映的是两个表之间关联值之间的关系。比如说TCategory.BookType与TBookDetail.BookType一对多,反印了一种类型的书有很多本,一种书属于一个已经存在的类型。p在表间关系上,可以实施参照完整性(Insert和Update规范),应用参照完整性可以保证数据库的引用完整性。参照完整性包括:级联更新和级联删除。举TReader和TLog之间的关系来说明这几个关联概念。当修改TReader中某个 ReaderId的值,TLog中的ReaderId自动作相应修改,这就是级联修改;当删除TReader中某ReaderID值时,TLog中相应的行应该被删除,这就是

18、级联删除。当然,主表的修改和删除操作时,从表并非只能级联修改和删除,也可以用“无操作”、“设置空值”、“设置默认值” 。p依照下图设计BookStore数据库的表间关系右击数据库关系图,添加新关系图-29-3. 数据库设计数据库设计n 3.3 设计表间关系BookStore数据库表间关系图-30-3. 数据库设计数据库设计n 3.4 添加初始数据pTArg赔偿率:200,限定天数90,SMTPServer:,SMTPUid:Null,管理邮箱NullpTCategory编程技术电子通信计算机网络数据库人工智能操作系统pTReader0111,张三,0222,李四,0333,王五,0444,赵六

19、,pTUser001,001001,洁-31-3. 数据库设计数据库设计n 3.5 设计视图p视图的作用主要体现在:简单性。经常使用的查询可以被定义为视图,用户不必为每次都编写查询。 安全性。通过视图用户只能查询和修改他们所能见到的数据。逻辑数据独立性。视图可帮助用户屏蔽基本表结构变化带来的影响。p下面我们先设计四个视图,以后的开发过程中还可以再添加新的视图。读者借书视图-VLend借阅逾期视图-VLendOverDue分类统计视图-VTotal丢失赔款视图-VPayForLost-32-3. 数据库设计数据库设计n3.5 设计视图p读者借书视图-VLendSELECT a.BookId, a

20、.Title, b.ReaderId, b.LendDate, c.NameFROM TBookDetail aINNER JOIN TLendInfo b ON b.BookId = a.BookIdINNER JOIN TReader c ON c.ReaderId = b.ReaderIdp借阅逾期视图-VOverDueSELECT a.BookId, a.TBook.Title, b.ReaderId, b.LendDate c.Name, c.Email, FROM TBookDetail aINNER JOIN TLendInfo b ON a.BookId = b.BookId

21、INNER JOIN TReader c ON c.ReaderId = b.ReaderIdWHERE (DATEDIFF(day, b.LendDate, GETDATE() (SELECT LimitDay FROM TArg)-33-p分类统计视图-VTotalSELECT count(*) as TotalCount, sum(price) as TotalPriceFROM TBookdetailGROUP by BookTypep丢失赔付视图-VPayForLost SELECT a.BookId, a.Title, a.Price, b.ReaderId, b.LostDate

22、, b.HasPay, c.Name FROM TBookDetail a INNER JOIN TLostInfo b ON a.BookId = b.BookId INNER JOIN TReader c ON c.ReaderId = b.ReaderId-34-3. 数据库设计数据库设计n 3.6 设计存储过程p存储过程的作用:(1)封装事务(2)简化操作(3)提高执行效率p我们先设计两个存储过程,以后的开发过程中还可以添加新的存储过程。借书存储过程-proc_LendBook还书存储过程-proc_ReturnBook-35-n 借书存储过程proc_LendBookCreate P

23、ROCEDURE proc_LendBookreaderId nvarchar(20),bookId intAS Begin Tranupdate TBook set status=借出 where BookId=bookIdInsert Into TLend (BookId,ReaderId,LendDate) values (bookId,readerId, getDate()Insert Into TLog(BookId,ReaderId,Event,EventDate) values(bookId,readerId,借出,getDate()if error0 Rollback tranelseCommit TranGO-36-n 还书存储过程:proc_ReturnBookCreate PROCEDURE proc_ReturnBookreaderId nvarchar(20),bookId intAS Begin Tran Delete TLendInfo Where BookId=bookIdupdate TBookDetail set status=在库 where BookI

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论