车票管理系统数据库.pdf
车票管理系统数据库 实验报告 题目:车票管理系统数据库 指导老师:邱 骋 班级:2011 年(秋)计算机 学号:姓名:张 彪 1 实验目的 以车票订票管理数据库为例,完成用户需求分析、概念设计阶段的 E/R 图绘制、逻辑设计、物理设计,并通过 SQL 实现数据库设计。通过上述过程,理解并掌握数据库设计的有关知识。2 实验要求 1)需求分析阶段要求明确数据库应用系统设计的具体需求。2)概念设计阶段要求设计针对数据库应用系统的 E/R 图。3)逻辑设计阶段要求明确这个阶段的目的和任务,方法和步骤。4)物理设计阶段根据前面的内容,给出具体的数据库表结构。3 需求分析 3.1 需求分析的任务 调查火车票管理系统应用领域涉及的内容,对涉及到领域的各个应用的信息要求和操作要求进行详细分析,形成需求分析说明书。最重要的是调查、收集信息、分析购票人信息和流程。处理要求、数据的安全性与完整性要求。要求系统能有效、快速、安全、可靠和无误的完成上述操作。并要求客户机的界面要简单明了,易于操作,服务器程序利于维护 3.2 需求分析的过程 铁路局为方便旅客,需开发一个机票车票管理系统。为便于旅客由旅行社代替铁路局把预定车票的旅客信息,包括身份证号码、身高、年龄、旅行时间、旅行目的地,输入火车票预定系统的客户端程序,系统经过查询管理系统内的车次数据服务器后,为旅客安排车次。系统校对无误后即印出车票给旅客。如果某方面出现问题,旅客可以持有效证件去火车站退票。要求系统能有效、快速、安全、可靠和无误的完成上述操作。并要求客户机的界面要简单明了,易于操作,服务器程序利于维护。3.3 数据字典与流程图 经过可行性分析和初步需求调查,抽象出该系统业务流程图,结合该实例具体情况,给出旅客信息、车票信息的具体需求。去火车站买车票去售票窗口买票窗口核对相关信息确认乘车车次打印车票图 1 旅客购票流程图 3.3.1 调查用户需求 3.3.1.1 火车站办公需求 功能:旅客持个人证件去火车站购买车票。希望能通过旅客车票查到该旅客的车票编号及基本信息。统计功能:按车票统计买票人数 3.3.1.2 旅客购票需求 交费功能:交费、退费 3.3.1.3 车次信息需求 查询功能:车次号(始发站、终到站、发车时间)3.4 系统框架 在调查完了用户需求之后,就要开始分析用户需求。在此,我们采用自顶向下的结构化分析方法(SA 方法)。首先,定义全局概念结构的框架,如图 2 所示。火车票管理系统乘客信息系统车次信息系统退票信息系统补票信息系统 图 2 车票管理系统总框架图 各子系统需要进一步细化。旅客信息系统为例进一步细化,如图3 所示。旅客信息系统统计人数查询旅客信息 图 3 旅客信息系统细化 以其中的查询旅客信息功能为例进一步细化,如图 4 所示。乘客信息身份证号身高年龄工作单位 图 4 查询乘客信息功能 车次信息车次号始发站终到站发车时间 图 5 车票信息系统能查询到的内容 退票信息车次号上车地下车地价格 图 6 退票信息系统细化 补票信息车次号上车地下车地价格 图 7 退票信息系统细化 将所有子系统全部细化。将所有用户需求分析完毕之后,就要开始构造数据字典了。经分析之后,本系统要用到五个基本表:退票信息表,乘客信息表,车次信息表,补票信息表,车次座位信息表。数据结构定义如表 1 所示。表 1 数据结构定义 数据结构名 含义说明 组成 退票信息 定义了乘客退票的有关信息 车次,上车地,下车地,价格 乘客 定义了乘客有关信息 身份证号,年龄,工作单位,身高 车次信息表 定义了车次 的有关信息 车次,始发站,终到站,发车时间 补票信息 定义了乘客补票的有关信息 车次,上车地,下车地,价格 车票座位息表 定义了座位有关信息 车次,座位号,身份证号,车票类型 4 概念结构设计 4.1 概念结构设计的方法与步骤 4.1.1 概念结构设计的方法 概念设计阶段我采用自底向上的方法,即自顶向下的进行需求分析,然后再自底向上的进行概念结构设计。对已经细化到无法再分的阶段逐步集成在一起,最终合成一个全局概念模式。4.1.2 概念结构设计的步骤 第一步是进行局部视图的设计:由于高层的数据流图只能反映系统的概貌,而中层流图能较好的反映系统中各局部应用的子系统组成。因此我们先逐一的设计分 E-R 图。第二步是进行视图的集成:各子系统的 E-R 图设计好之后,下一步就是要将所有的分 E-R 图合成一个系统的总 E-R 图,一般有两个方式,多个分 E-R 图一次集成,另一种是一次集成两个分 E-R 图。我想采用一次集成两个分 E-R 图的方式。4.2 数据抽象与局部视图设计 按照图 2 火车票管理系统总框架图,设计实体属性图以及局部E-R 图。补票信息上车地下车地价格车次号 图 9 补票信息实体属性图 退票信息上车地下车地价格车次号 图 10 退票信息实体属性图 乘客信息身高年龄工作单位身份证号 图 11 乘客实体属性图 补票信息上车地下车地车次价格 图 12 补票实体属性图 图 13 车次实体属性图 座位信息车票类型座位号车次身份证号 图 14 座位实体属性图 图 15 乘客购票局部 E-R 图 图 16 乘客退票局部 E-R 图 去火车站补票补票信息 图 17 乘客补票局部 E-R 图 车次包含座位信息 图 18 乘客座位局部 E-R 图 4.2.1 视图的集成 经过逐步细化再进行每两个一集成初步形成一个 E-R 图,最后得到图总体概念结构 E-R 图。乘客退票信息补票信息车次信息座位信息退票补票购买包含工作单位身高身份证号年龄车次上车地下车地价格车次上车地下车地价格车次座位号身份证号车票类型车次始发站发车时间终到站n1m1un1n 图 19 系统总体结构 E-R 图 5 逻辑结构设计 5.1 E-R 图向关系模型的转换 将图 19 总体概念结构 E-R 图转化成关系模型。乘客(身份证号,工作单位,身高,年龄)车次信息(车次,始发站,终到站,发车时间)退票信息(下车地,车次,上车地,价格)补票信息(上车地,车次,下车地,价格)座位信息(座位号,身份证号,车次,车票类型)5.2 数据模型的优化 将转化的关系模式进行优化,最终达到第三范式。1、确定数据依赖 乘客信息(身份证号,工作单位,身高,年龄)根据这个关系写出数据依赖 身份证号工作单位,身份证号年龄 车次信息(车次,始发站,终到站,发车时间)车次始发站,车次终到站,车次发车时间 退票信息(下车地,车次,上车地,价格)(下车地,车次)上车地,(下车地,车次)价格 补票信息(上车地,车次,下车地,价格)(上车地,车次)下车地,(上车地,车次)价格 座位信息(座位号,身份证号,车次,车票类型)座位号身份证号,座位号车次,座位号车票类型 2、对各关系模式间数据依赖进行极小化处理,消除冗余 身份证号工作单位,身份证号年龄 车次始发站,车次终到站,车次发车时间(下车地,车次)上车地,(下车地,车次)价格(上车地,车次)下车地,(上车地,车次)价格 座位号身份证号,座位号车次,座位号车票类型 3、看这些模式是否符合要求,确定是否要对某些模式进行合并或者分解 最终分解成第三范式:(身份证号,工作单位,年龄)(车次,始发站,终到站,发车时间)(下车地,车次)(下车地,价格)(上车地,车次)(上车地,价格)(座位号,身份证号,车次,车票类型)5.3 数据库的结构 给出机票预定系统基本表结构图。Get off placeGet on placeTrain numberpriceTrain numberTake off placedestinationTrain timeGet on placeTrain numberGet off place priceSeat number IdTrain numberTrain ticket typeIdagestatusWork department退票信息车次信息乘客信息补票信息座位信息 图 20 各表的结构 根据总体结构图设计各表的结构,其相应标的定义如下:表 2 乘客信息系统的结构 字段名 数据类型 长度 约束 描述 id decimal 20 主键 身份证号 age decimal 3 不为空 年龄 status varchar 50 不为空 身高 Work_department Varchar 50 工作单位 表 3 退票信息系统的结构 字段名 数据类型 长度 约束 描述 Trainnumber decimal 5 主键 车次 Get_on_place varchar 50 不为空 上车地 Get_off_place decimal 50 主键 下车地 price decimal 4 不为空 价格 表 4 车次信息表系统的结构 字段名 数据类型 长度 约束 描述 Trainnumber decimal 5 主键 车次 Take_off_place varchar 50 不为空 始发站 destination varchar 50 不为空 终到站 Train_time time time 不为空 发车时间 表 5 补票通知单系统的结构 字段名 数据类型 长度 约束 描述 Trainnumber decimal 10000 主键 车次 Get_on_place varchar 50 主键 上车地 Get_off_place decimal 50 不为空 下车地 price decimal 1000 不为空 价格 表 6 车次座位信息表 字段名 数据类型 长度 约束 描述 Seat_number decimal 6 主键 座位号 Trainnumber decimal 5 不为空 车次 Id decimal 20 不为空 身份证号 Trian_ticket_type varchar 50 不为空 车票类型 6 数据库的实施 6.1 表的建立与数据的载入 CREATE TABLE ADMINISTRATOR.PASSENGER(ID DECIMAL(20,0)NOT NULL,AGE DECIMAL(2,0)NOT NULL,STATAS VARCHAR(50)NOT NULL,WORK DEPARTMENT VARCHAR(50),CONSTRAINT IDNO PRIMARY KEY(ID)CREATE TABLE (TRAIN NUMBER DECIMAL(5,0)NOT NULL,GET ON PLACE VARCHAR(50)NOT NULL,TAKE OFF PLACE VARCHAR(50)NOT NULL,PRICE DECIMAL(5,0)NOT NULL ,CONSTRAINT CC PRIMARY KEY(TRAIN NUMBER)CREATE TABLE (TRAIN NUMBER VARCHAR(5)NOT NULL,GET ON PLACE VARCHAR(50)NOT NULL,TAKE OFF PLACE VARCHAR(50)NOT NULL,TIME TIME NOT NULL ,CONSTRAINT CC PRIMARY KEY(TRAIN NUMBER)CREATE TABLE (TRAIN NUMBER DECIMAL(5,0)NOT NULL,GET ON PLACE VARCHAR(50)NOT NULL,TAKE OFF PLACE VARCHAR(50)NOT NULL,PRICE DECIMAL(5,0)NOT NULL ,CONSTRAINT CC PRIMARY KEY(TRAIN NUMBER)CREATE TABLE (SEAT NUMBER DECIMAL(6,0)NOT NULL,TRAIN NUMBER DECIMAL(5,0)NOT NULL,ID DECIMAL(20,0)NOT NULL,TRAIN SEAT NUMBER VARCHAR(50)NOT NULL ,CONSTRAINT CC PRIMARY KEY(SEAT NUMBER)需要明确数据库需要建立几张表,以及每个表中所要包括的属性。在建立表的过程中。要对每个表进行字段属性的设置。