大型数据库课程设计 火车站票务管理系统(3)

2018-12-22 22:01

3.1 类和对象向关系模式转换

车次信息(车次号、座位数、发时、车种)

业务员信息(员工编号、姓名、性别、年龄) 员工奖励表(员工编号、工作站点、奖励等级)

车站信息(车次号、始发站、途径车站、途径车站、终点站) 车票信息(车票编号、车次号、座位号、价格、发车时间、座位种类) 退票信息(车票编号、车次号、退票日期)

售票信息(员工编号、车次号、车票编号、售票日期) 余票信息(车次号、发车时间、剩余票数)

第4章 数据库物理结构设计

4.1 存取方法设计

数据库系统是多用户共享的系统,对同一个关系要建立多条存储路径才能满足多用户的多种应用要求。对于火车站票务管理系统来说,为了提高某些属性(如:车票编号、车次号、座位号、座位类型等)的查询速度,可以选择聚簇存取的方法,即把这些属性上具有相同值的元组集中放在连续的物理块上。这样在查询时就会大大提高查询速度。因此,该系统中选择聚簇存取方法。

4.2 存储结构设计

火车站票务管理系统是一个大型复杂的计算机网络信息系统,采用基于浏览器/服务器(B/S),客户端/服务器(C/S)混合的应用体系结构来建设教务管理系统。数据库管理系统采用Microsoft 公司推出的SQL Server 2000 或以上版本,并用SQL进行数据库的建立和数据库中数据的维护和查询。

4.3 物理设计

实现该设计的环境为Windows XP Professional + MS SQL Server 2005 或以上版本。 一:建立火车站车票管理数据库

create database 火车站车票管理数据库

--1、创建管理员表: create table 管理员 (

管理员编号char(6) not null primary key, 姓名char(8) , 级别char(10) )

--2、创建乘客表:

9

create table 乘客表 (

身份证号char(18) not null primary key, 姓名char(8) , 车票编号char(5), )

--3、建立业务员表:

create table 业务员 (

员工编号char(6) not null primary key, 姓名char(8) , 性别bit, 年龄int, )

--4、创建员工奖励表 create table 员工奖励表 (

员工编号char(6) not null references 业务员(员工编号), 工作站点char(20), 奖励等级char(10),

primary key (员工编号) )

--5、建立车次表: create table 车次表 (

车次号char(5) not null primary key, 座位数int,

发车时间char(5) null , 车种 char (4) )

--6、建立车站表: Create table 车站表 (

车次号char(5) not null references 车次表(车次号), 始发站char(20) not null, 途径车站char(20) not null, 途径车站char(20) not null, 途径车站char(20) null, 途径车站char(20) null,

10

途径车站char(20) null, 终点站char(20) not null, primary key (车次号) )

--7、建立车票表:

CREATE TABLE 车票表 (

车票编号char(5) not null primary key ,

车次号char(5) not null references 车次表(车次号), 发车时间datetime not null, 座位编号char(5) not null, 价格float not null, 座位种类char(4) )

--8、建立售票表: create table 售票表 (

员工编号char(6) not null references 业务员(员工编号), 车票编号char(5) not null references 车票表(车票编号), 车次号char(5) not null references 车次表(车次号), 售票日期datetime ,

primary key (员工编号,车票编号) )

--9、建立退票表: create table 退票表 (

车票编号char(5) not null primary key,

车次号char(5) not null references 车次表(车次号), 退票时间datetime null ,

foreign key (车票编号) references 车票表(车票编号) )

--10、建立余票表: create table 余票表 (

车次号char(5) not null primary key, 剩余票数int not null, 发车时间datetime,

foreign key (车次号) references 车次表(车次号) )

11

第5章 数据库完整性设计

5.1 主键及唯一性索引

表名 车次表 业务员 车站表 主键 (车次号) (员工编号) (车站号) 建立唯一性索引 create unique index 车次表 on 车次表(车次号 asc) create unique index 业务员 on 业务员(员工编号 asc) create unique index 车站表 on 车站表(车站号 asc) create unique index 售票表 售票表 (车票号) on 售票表(车票号 asc) create unique index 车票表 车票表 退票表 余票表 (车票编号,车次号) (车票号) (车次号) on 车票表(车票编号 asc,车次号 asc) create unique index 退票表 on 退票表 (车票号 asc) create unique index 余票表 on 余票表(车次号 asc) 5.2 参照完整性设计

12

5.3 Check约束

1、业务员表中将性别进行check约束:

alter table 业务员

add constraint sex check(性别in('1','0'))

2、车票表中将座位编号进行check约束:

alter table 车票表

add constraint zum check (座位编号>=12000 and 座位编号<=15000)

3、车次表中车种进行check约束:

alter table 车次表

add constraint ccz check (车种in('普快','快车','特快','动车','高铁')) 5.4 Default约束

1、售票表中售票日期默认值设为:2013-11-19 00:00。default('2013-11-19 00:00') 2、业务员表中将员工性别族默认值设为:女。default('女') 3、员工奖励表中将奖励等级默认值设为:null。default('null')

5.5 触发器设计

--1、车票销售时不能超员,并自动修改剩余的座位数 create trigger tri_ticket on 售票表 after insert as begin

declare @p_num char(5),@seat_sum int,@t_num char(5) select @p_num=车票编号,@t_num=车次号from inserted select @seat_sum=剩余票数from 余票表 update 余票表

set 剩余票数=剩余票数-1 where 车次号=@t_num end go

--触发检验: insert into 售票表

values('111011','20136','1234','12:00')

--2、业务员售出车票后,自动更新员工售票情况表和员工奖励表 create trigger 业务员售票触发器on 售票表after insert as begin

declare @员工编号char(5)

13


大型数据库课程设计 火车站票务管理系统(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:火山中学2017年体育工作评估自评报告

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: