内容发布更新时间 : 2024/11/16 21:26:39星期一 下面是文章的全部内容请认真阅读。
性别身份证号付款情况姓名联系方式旅客 总体E-R图及各个实体之间的关系如下图所示
业务员航班对应输入旅客信息旅客m购买n机票缴纳票费nn
6
11
2.2 逻辑结构设计 E-R图向关系模型的转换
关系模型的逻辑结构是一组关系模式的集合。E-R图则是由实体,实体的属性和实体间的联系三个要素组成。所以将E-R图转换为关系模型实际上就是要将实体,实体的属性和实体间的联系转换为关系模式。转换原则如下。
1. 实体类型的转换:一个实体型转换成一个关系模式。实体的属性就是关系的属性,实体的码就是关系的码。
2.联系类型的转换,根据不同的情况做不同的处理。
⑴ 一个1:1的联系可以转换为一个独立的关系模式,也可以与任意一端对应的关系模式合并。如果转换为一个独立的关系模式,则与该联系相连的各实体的码以及联系本身的属性均转换为关系的属性,每个实体的码均是该关系的候选码。如果与某一端实体对应的关系模式合并,则需要在该关系模式的属性中加入另一个关系模式的码和联系本身的属性。
⑵ 一个1:N的联系可以转换为一个独立的关系模式,也可以与N端对应的关系模式合并。如果转换为一个独立的关系模式,则与该联系相连的各实体的码以及联系本身的属性均转换为关系的属性,而关系的码为N端实体的码。
⑶ 一个M:N联系转换为一个关系模式。与该联系相连的各实体的码为各实体码的组合。
⑷ 三个或三个以上实体间的一个多元联系可以转换为一个关系模式。与该多元联系相连的各实体的码以及联系本身的属性均转换为关系的属性,而关系的码为各实体码的组合。
⑸ 具有相同码的关系模式可合并。
3. 根据销售信息管理系统的E-R图转换为关系模型如下。
将每一个实体转换成一个关系(关系就是给出关系名,属性就是实体属性,并标明该
7
关系的主键用下划线来表示)
关系模式:
航班(航班编号,飞机名,机舱数量,容客量),主码为航班号,符合三范式。 航线(航班号,起点,目的地,票价),主码航班号符合三范式。
机票(航班号,起飞时间,机舱等级,座位号,票价,折扣,预售状态,业务员),主码座位号,符合三范式。
旅客(姓名,性别,身份证号,付款情况,联系方式),主码为身份证号,符合三范式。
2.3 物理结构设计
表3-1 旅客表
字段名 Pname Psex ID Pment Pphone 中文名称 姓名 性别 身份证号 付款情况 联系方式 类型长度 Char 10 Char 2 Char 10 Cahr 10 Cahr 10 取值范围 男、女 00000~99999 是否非空 N N N N N 主关键字 N N Y N N 备注 主码 表3 -2 航班表 字段名 Pno Aname Clevel Ac 中文名称 航班号 飞机名 机舱等级 容客量 类型长度 Char 10 Char 10 Char 10 Int 取值范围 0000~9999 是否非空 N N N N 主关键字 Y N N N 备注 主码 N N N
表3 -3 航线表 字段名 Pno Spoint Dt Fare 中文名称 航班号 起点 目的地 票价 类型长度 Char 10 Char 10 Cahr 10 int 取值范围 0000~9999 是否非空 N N N N 主关键字 Y N N N 备注 主码 表3 -4 机票表 字段名 Pno Ptime Clevel Sno
中文名称 航班号 起飞时间 机舱等级 座位号 类型长度 Char 10 Char 10 Char 10 Int 取值范围 0000~9999 00:00 001~999 是否非空 N N N N 主关键字 Y N N Y 备注 主码 主码 8
Fare 票价 Char 10 N N Discount 折扣 Cahr 10 N N Rstate 预票状态 Cahr 10 N N Sman 业务员 Cahr 10 N N
3数据库实现
3.1建库、建表
创建数据库:
create database 机票购销 创建基本表:
(1)旅客表:(姓名,性别,身份证号,付款情况,联系方式) create table 旅客
(姓名 char (10) not null, 性别 char (2) not null,
身份证号 char (10) primary key not null, 付款情况 char (10) not null, 联系方式 char (10) not null) 在旅客表中输入数据:
insert into 旅客 values('黄汉杰','男','46001','付','26510310') insert into 旅客 values('李浩','男','46002','付','26601101') insert into 旅客 values('李思','女','46003','付','26665544') insert into 旅客 values('赵刚','男','46005','付','25510315')
9
insert into 旅客 values('王可嘉','女','46006','付','26510317') insert into 旅客 values('王霞','女','46007','付','26689988') insert into 旅客 values('张平','男','47001','待付','26668888') insert into 旅客 values('吴晗','女','47002','待付','26667474') insert into 旅客 values('高飞','男','47003','付','25558989') insert into 旅客 values('黄莉','女','47004','付','26060303')
(2)航班表:(航班号,飞机名,机舱等级,容客量) create table 航班
( 航班号 char(10) primary key not null, 飞机名 char(10) not null, 机舱等级 char(10) not null, 容客量 int not null) 在航班表输入数据:
insert into 航班 values('','','','')
insert into 航班 values('0001','飞龙号','二等','100') insert into 航班 values('0002','飞鹰号','一等','120') insert into 航班 values('0003','和谐号','三等','110') insert into 航班 values('0004','海南号','一等','120') insert into 航班 values('0005','创新号','二等','100') insert into 航班 values('0006','北京号','一等','110') insert into 航班 values('0007','南京号','二等','110') insert into 航班 values('0008','上海号','一等','120') insert into 航班 values('0009','世界号','一等','100') insert into 航班 values('0010','美丽号','二等','150') insert into 航班 values('0011','追梦号','三等','150') (3)航线表:(航班号,起点,目的地,票价)
10