ImageVerifierCode 换一换
格式:DOC , 页数:16 ,大小:131.50KB ,
资源ID:10762154      下载积分:10 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.docduoduo.com/d-10762154.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录   微博登录 

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(SQL Server数据库课程设计.doc)为本站会员(精品资料)主动上传,道客多多仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知道客多多(发送邮件至docduoduo@163.com或直接QQ联系客服),我们立即给予删除!

SQL Server数据库课程设计.doc

1、软 件 学 院课程设计报告书课程名称 SQL Server 数据库课程设计 设计题目 出租车管理系统 专业班级 软件工程(1)班 学 号 201002505123 姓 名 朱阳阳 指导教师 亓春霞 2012 年 10 月1 设计目的此设计项目是对学习 SQL Server 数据库课程后进行的一次全面的综合练习。目的在于加深对数据库基础理论和基本知识的理解,掌握使用数据库进行软件设计的基本方法,提高运用数据库解决实际问题的能力,最终实现对于给定的应用环境,构造最优的数据库模式,建立数据库及其应用系统,使之能够有效地存储数据,满足各种用户的应用需求(信息要求和处理要求)。同时,此设计对于将来的毕业

2、设计和具体工作实践将有重要的意义。2 设计任务出租车管理系统3 设计内容 3.1 需求分析任务 3.1.1 需求分析设计 司机和出租车是出租车公司最要的资源,是创造效益的资源。要想提高出租车公司的效益和服务质量,首先从做好对司机和出租车的管理着手。一是对出租车司机的信息的管理,二是对出租车信息和租赁的管理。出租车管理系统将很大程度上解决出租车公司在此工作上的难度。3.1.2 需求分析过程功能需求简介:针对出租车行业的特点开发的出租车管理系统,实现出租车公司内部及时准确地采集内部各种数据信息,处理高速化和网络办公自动化。实现对出租车公司司机的信息记录,操作,出租车管理,提供精确查询等多种查询方式

3、。3.1.3 调查需求基本操作:对出租车信息表、司机信息表、租赁表、违章表的查询、添加、更新、删除等功能。特别操作:对租赁表的功能。3.1.4 系统数据分析表 2-1 数据结构定义数据结构名 含义说明 组成出租车信息表定义了出租车有关信息 车牌号 入户时间 车型 颜色 出租情况 营业时间司机信息表定义了司机有关信息 司机编号 姓名 性别 地址 身份证号 驾驶证号 发证时间 驾龄租赁表定义了租赁的有关信息 司机编号 车牌号 期限 开始日期 截止日期 租赁费 车保费违章表定义了违章的有关信息 司机编号 姓名 扣分 违章时间违章地点出车记录表定义了每天哪些司机的出车情况司机编号 车牌号 出车日期3.

4、2 概念结构设计3.2.1 概念结构设计的方法概念设计阶段我采用自底向上的方法,即自顶向下的进行需求分析,然后再自底向上的进行概念结构设计。对已经细化到无法再分的阶段逐步集成在一起,最终合成一个全局概念模式。3.2.2 概念结构设计的步骤第一步是进行局部视图的设计:由于高层的数据流图只能反映系统的概貌,而中层流图能较好的反映系统中各局部应用的子系统组成。因此我们先逐一的设计分 E-R 图。第二步是进行视图的集成:各子系统的 E-R 图设计好之后,下一步就是要将所有的分 E-R 图合成一个系统的总 E-R 图,一般有两个方式,多个分 E-R 图一次集成,另一种是一次集成两个分 E-R 图。我想采

5、用一次集成两个分 E-R 图的方式。出车记录表车牌号司机编号出车日期图 3-1 出车记录 E-R 图图 3-2 出租车 E-R 图图 3-3 司机 R-R 图司机驾驶证号驾龄姓名性别地址司机编号身份证号 发证时间出租车颜色 出租情况车牌号入户时间车型营业时间图 3-4 租赁 E-R 图租赁表租赁费车牌号期限开始日期司机编号截止日期 车保费违章表姓名 扣分司机编号违章时间 违章地点图 3-5 违章 E-R 图租赁司机驾驶证号驾龄姓名性别地址司机编号身份证号发证时间出租车颜色 出租情况车牌号入户时间车型营业时间租赁表租赁费车牌号期限开始日期司机编号截止日期车保费违章表姓名 扣分司机编号违章时间 违

6、章地点违章出车记录表车牌号司机编号出车日期出车情况出车情况图 3-6 总体概念结构 E-R 图3.3 逻辑结构设计E-R 图向关系模型的转换将上述总体概念结构 E-R 图转化成关系模型,根据这个关系写出数据依赖,确定数据依赖。司机与出租车是一对一的关系,司机、出租车与租赁是一对一的关系,司机与违章是一对一的关系。司机(司机编号,姓名,性别,地址,身份证号,驾驶证号,发证时间,驾龄)出租车(车牌号,入户时间,车型,颜色,出租情况,营业时间)租赁表(司机编号,车牌号,期限,开始日期,截止日期,租赁费,车保费)出车记录表(司机编号,车牌号,出车日期)违章表(司机编号,姓名,扣分,违章时间,违章地点)

7、3.4 物理设计物理表结构如下表 3-7 司机表(Driver)列标示 数据类型 长度 约束 列意义DriverNumber char 6 主键 司机编号Name char 10 不为空 姓名Sex bit 默认 不为空 性别Address varchar 40 不为空 地址IDumber char 20 不为空 身份证号LincenseNumber char 10 不为空 驾驶证号CertificateDate datetime 默认 不为空 发证时间DriverAge tinyint 默认 不为空 驾龄表 3-8 出租车表(Taxi)列标示 数据类型 长度 约束 列意义TaxiNumber

8、 char 6 主键 车牌号StartDate datetime 默认 不为空 入户时间TaxiShape char 10 不为空 车型Color char 10 不为空 颜色RentSituation bit 默认 不为空 出租情况BusinessTime tinyint 默认 不为空 营业时间表 3-9 租赁表(Rent)列标示 数据类型 长度 约束 列意义DriverNumber char 6 主键 司机编号TaxiNumber char 6 不为空 车牌号LimitTime tinyint 默认 不为空 期限StartDate datetime 默认 不为空 开始日期EndDate d

9、atetime 默认 不为空 截止日期RentFee float 默认 不为空 租赁费ProtectionFee Float 默认 不为空 车保费表 3-10 违章表(Violate)列标示 数据类型 长度 约束 列意义DriverNumber char 6 主键 司机编号Name char 10 不为空 姓名Points tinyint 默认 不为空 扣分ViolateDate datetime 默认 不为空 违章时间ViolateAddress varchar 40 不为空 违章地点表 3-11 出车记录表(Notes)列标示 数据类型 长度 约束 列意义DriverNumber char

10、 6 主键 司机编号Name char 10 不为空 姓名DriveDate datetime 默认 不为空 出车日期3.5 数据库的实施3.5.1.创建表/*创建数据库*/CREATE DATABASE TAXI /*数据库名*/ON (NAME=TAXI_DATA,FILENAME=D:Microsoft SQL ServerMSSQL10_50.SQLEXPRESSMSSQLDATATAXI.mdf,SIZE=10MB,MAXSIZE=100MB,FILEGROWTH=10%)LOG ON(NAME=TAXI_log, /*日志*/FILENAME=D:Microsoft SQL Ser

11、verMSSQL10_50.SQLEXPRESSMSSQLDATATAXI_Log.ldf,SIZE=10MB,MAXSIZE=100MB,FILEGROWTH=1MB)/*创建基本表*/*创建司机表*/USE TAXICREATE TABLE Driver(DriverNumber char(6)NOT NULL PRIMARY KEY, /*司机编号*/Name char (10), /*姓名*/Sex bit NOT NULL, /*性别*/Address varchar(40)NOT NULL, /*地址*/IDNumber char(18)NOT NULL, /*身份证号*/lice

12、nseNumber char(10)NOT NULL, /*驾驶证号*/CertificateDate datetime NOT NULL, /*发证时间*/DriverAge tinyint NOT NULL /*驾龄*/)/*创建出租车表*/CREATE TABLE Taxi(TaxiNumber char(6)NOT NULL PRIMARY KEY, /*车牌号*/StartDate datetime NOT NULL, /*入户时间*/TaxiShape char(10)NOT NULL, /*车型*/Color char(10)NOT NULL, /*颜色*/RentSituati

13、on bit NOT NULL DEFAULT 1, /*出租情况*/BusinessTime tinyint NOT NULL /*营业时间*/)/*创建租赁表*/CREATE TABLE Rent(DriverNumber char(6)NOT NULL, /*司机编号*/TaxiNumber char(6)NOT NULL, /*车牌号*/LimitTime tinyint NOT NULL, /*期限*/StartDate datetime NOT NULL, /*开始日期*/EndDate datetime NOT NULL, /*截止日期*/RentFee float NOT NU

14、LL, /*租赁费*/ProtectionFee float NOT NULL, /*车保费*/PRIMARY KEY(DriverNumber,TaxiNumber)/*创建违章表*/CREATE TABLE Violate(DriverNumber char(6)NOT NULL PRIMARY KEY, /*司机编号*/Name char(10), /*姓名*/Points tinyint NOT NULL, /*扣分*/ViolateDate datetime NOT NULL, /*违章时间*/ViolateAddress varchar(40)NOT NULL /*违章地点*/)/

15、*创建出车表*/CREATE TABLE Notes(DriverNumber char(6)NOT NULL, /*司机编号*/TaxiNumber char(6)NOT NULL, /*车牌号*/DriverDate datetime NOT NULL /*出车日期*/)3.5.2.创建主要视图视图是从一个或多个表导出的表。视图是数据库的用户使用数据库的观点。司机和出租车是主要的实体,而这两个实体的信息又在不同的表中,作为出租车公司对司机和出租车有时关心的数据又是不同的,即使是相同的数据,也可能又不同的操作。有时候仅有的表的列属性名是不能满足需求的,于是根据不同的需求,在物理的数据库上定义

16、他们对数据库所要求的数据结构。(1)创建Driver_VIEW视图,包含司机所有的信息USE TAXIGOCREATE VIEW Driver_VIEW(司机编号,姓名,性别,地址, 身份证号,驾驶证号, 发证时间, 驾龄)ASSELECT * FROM DriverGO (2)创建Taxi_VIEW视图,包含出租车的所有信息。USE TAXIGOCREATE VIEW Taxi_VIEW(车牌号,入户时间, 车型,颜色,出租情况, 每天营业时长)ASSELECT * FROM TaxiGO(3)创建Rent_VIEW视图,包含租赁的所有信息。USE TAXIGOCREATE VIEW Ren

17、t_VIEW(司机编号,车牌号,期限,开始日期,截止日期, 租赁费,车保费)ASSELECT * FROM RentGO(4) 建租赁表平均租赁费视图Violate_VIEW_AVG,列名为平均租赁费,试图中列名为RentFee_avg。USE TAXIGOCREATE VIEW Violate_VIEW_AVG(平均租赁费)ASSELECT AVG(RentFee)FROM Rent3.5.3.创建索引索引是根据表中一列或若干列按照一定顺序建立的列值与记录行之间的对应关系表。(1)为Driver 表的姓名创建唯一索引 Driver_nameUSE TAXIGOCREATE UNIQUE IN

18、DEX Driver_nameON Driver(Name)GO(2)根据Rent 表的司机编号和车牌号创建复合索引。USE TAXIGOCREATE INDEX Rent_INDON Rent(DriverNumber,TaxiNumber)GO3.5.4.创建表字段的约束关系数据完整性包括实体完整性,域完整性和参照完整性。租赁表中的期限的取值肯定要有一定的范围,违章表中的扣分也有范围,租赁表的截止日期必须在开始日期的之后,都可以通过CHECK约束来实现,这就体现了域的完整性。租赁表中的司机编号和车牌号都由司机表和出租车表中对应,当删除或修改司机表中的司机编号和出租车表中的车牌号也应当对应修

19、改租赁表中的司机编号和车牌号,这体现了表与表之间的参照完整性。(1)添加Rent 表中期限的约束条件。USE TAXIGOALTER TABLE Rent ADD CONSTRAINT LimitTime_constraint CHECK(LimitTime=0 AND LimitTime=0 AND Points=12)GO(3) 在Rent表中的TaxiNumber列添加外键约束,参照Taxi表中的列USE TAXIGOALTER TABLE RentADD CONSTRAINT FK_TaxiNumber FOREIGN KEY(TaxiNumber)REFERENCES Taxi(Ta

20、xiNumber)GO(4)在 Rent表中添加日期的约束。3.5.5.创建存储过程存储过程分为系统存储过程、扩展存储过程和用户存储过程。存储过程可以接收参数、返回表格或标量结果和消息,执行存储过程后,就驻留在高速缓冲存储器,在以后的操作中,只需从高速缓冲存储器中调用已编译好的二进制代码执行,提高了系统性能。当给定了一个司机的编号或出租车的车牌号时想直接返回该司机或该出租车的信息情况,不需要任何参数,或者使用给定的参数返回信息。(1)创建返回000001 司机的信息情况。USE TAXIGOCREATE PROCEDURE driver_infoAS SELECT * FROM Driver

21、WHERE DriverNumber=000001GO/*执行存储过程driver_info*/EXECUTE driver_infoGO/*或者*/driver_infoGO(2) 创建返回出租车的信息情况。USE TAXIGOCREATE PROCEDURE taxi_infoAS SELECT * FROM Taxi WHERE TaxiNumber=010001GO/*执行存储过程taxi_info*/EXECUTE taxi_infoGO(3) 从Rent表中查询指定司机编号的租赁信息USE TAXIGOCREATE PROCEDURE rent_info number char(6

22、)ASSELECT * FROM Rent WHERE DriverNumber=numberGO/*执行存储过程rent_info*/EXECUTE rent_info 000002(4) 从Violate表中查询指定司机编号的违章情况USE TAXIGOCREATE PROCEDURE violate_info number char(10)=000001ASSELECT Points AS 扣分 FROM Violate WHERE DriverNumber=numberGO/*执行存储过程*/EXECUTE violate_info /*参数私用默认值*/EXECUTE violate

23、_info000002 /*传递给number的实参为*/GO3.5.6.创建触发器当查询一个表中是否存在信息时,或者向表中添加数据时,想显示有无要查的信息或想知道到底有没有执行,可以用触发器对相应的表做更改和显示操作与否。(1)在 Drivr表上创建触发器,每次修改操作时,定义一个变量,让它显示插入成功。USE TAXIGOCREATE TRIGGER driver_updateON Driver AFTER UPDATEASBEGINDECLARE str char(20)SET str=修改成功 PRINT strENDGO/*对Driver表更新信息*/UPDATE Driver SE

24、T IDNumber=372929199106033619 WHERE DriverNumber=000004(2)当修改Driver 表中的司机编号时,修改 Rent表中对应的司机编号, 同时修改Violate表和Notes表中的司机编号。USE TAXIGOCREATE TRIGGER rent_update1ON Driver AFTER UPDATEASBEGINDECLARE old_number char(6),new_number char(6)SELECT old_number=DriverNumber FROM deletedSELECT new_number=DriverN

25、umber FROM insertedUPDATE Rent SET DriverNumber=new_number WHERE DriverNumber=old_numberUPDATE Violate SET DriverNumber=new_number WHERE DriverNumber=old_numberUPDATE Notes SET DriverNumber=new_number WHERE DriverNumber=old_numberENDGO /*对Taxi表更新信息 */UPDATE Driver set DriverNumber=000009 WHERE Drive

26、rNumber=000001查看三个表中的变化。3.5.7.创建用户定义的函数和表值函数当用户在编程时常常需要将一个或多个T-SQL 语句组成子程序,以便反复调用。这就要用到用户定义的标量值函数和表值函数。标量值函数返回一个标量值,表值函数返回一个整表。当想计算得出Rent表中出租车的平均车保费时可以创建一个标量值函数,当想通过给定的司机编号查询已经创建好的Driver_VIEW视图上给定司机编号的相关信息时可以创建一个返回整个表或视图的表值函数来实现。(1)创建用户定义函数,实现计算出租车的平均车保费。USE TAXIGOCREATE FUNCTION ProtectorFee()RETUR

27、NS intASBEGINDECLARE fee intSELECT fee=(SELECT avg(ProtectionFee) FROM Rent)RETURN feeENDGO/*调用定义的ProtectionFee函数。*/USE TAXIGODECLARE fee intSELECT fee=dbo.ProtectorFee()SELECT fee AS 出租车的平均租赁费(2)创建一个表值函数,实现查询给定司机编号的相关信息。USE TAXIGOCREATE FUNCTION fn_view(number char(6)RETURNS tableAS RETURN(SELECT 司

28、机编号 ,姓名,性别,地址, 身份证号,驾驶证号 FROM TAXI.dbo.Driver_VIEWWHERE 司机编号=number)GO/*调用定义好的标志函数*/SELECT * FROM fn_view(000003)3.5.8.创建数据库的安全管理角色数据库的安全性管理是数据库服务器应实现的重要功能和之一。对用户登录进行身份验证,当用户登录到数据库系统时,系统对该用户的账户和口令进行验证,包括确认用户账户是否有效以及能否访问数据库系统。对用户进行的操作进行权限控制,当用户登录到数据库后,只能对数据库中的数据在允许的权限内进行操作。(1)创建SQL Server登录名sql_tao,密

29、码为123456。USE TAXICREATE LOGIN sql_taoWITH PASSWORD=123456,DEFAULT_DATABASE=TAXI/*将sql_tao用户添加到sysadmin 固定服务器角色中。*/EXEC sp_addsrvrolemembersql_tao,sysadmin(2)创建数据库用户davidCREATE USER david FOR LOGIN sql_taoWITH DEFAULT_SCHEMA=dbo/*将david用户添加到sysadmin 固定数据库角色中db_owner。*/EXEC sp_addrolememberdb_owner,david(3) 在TAXI数据库上的用户 david授予创建表的权限 */USE TAXIGOGRANT CREATE TABLE TO davidGO/*在TAXI数据库上的用户 yangyang授予Driver表操作的权限*/GRANT UPDATE,INSERT ON Driver TO yangyangWITH GRANT OPTION

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报