国开《数据库基础与应用》第五章 5-1-3:逻辑设计和物理设计阶段
5-1-3:逻辑设计和物理设计阶段
逻辑设计阶段的主要任务和目标是:根据概念设计阶段得到ER图,进行数据库的逻辑结构模式的设计,它包括对全局模式和各个外模式的设计。
物理设计阶段的任务和目标是:根据数据库的逻辑设计结果,设计出相应的数据库内模式。
进行数据库的逻辑结构模式设计时,首先要设计好全局模式,然后再设计好各个外模式,或者叫做子模式。
在设计数据库的全局模式时,就是要确定该模式需要包含哪些基本表,每个基本表包含哪些属性,每个属性应采用什么合适的名称、类型和长度,每个属性的完整性约束包含那些方面等有关内容。
在上面列举的购物活动中,能够得到在数据库全局模式中,应包括两个基本表,即商品表和销售表,它们分别对应概念设计中的商品实体和销售实体。
为了营业员销售商品和收款员收款的需要,应在全局模式的基础上建立外模式,一是为营业员建立销售视图,二是为收款员建立收款视图。
下面给出每个基本表和视图的定义:
(1)商品表
create table 商品表
(
商品代号 char(8) primary key,
名称 char(8) not null,
品牌 char(6),
体积 char(14),
颜色 char(6),
单价 float check(单价>0),
库存数量 int default 0 check(库存数量>=0)
)
(2)销售表
create table 销售表
(
单据号 int check(单据号>0),
商品代号 char(8) not null,
购买数量 int check(购买数量>=0),
折扣 float default 1.0 check(折扣>0 and 折扣<=1),
营业员 char(8),
收款否 int default 0 check(收款否=0 or 收款否=1),
收款员 char(8),
primary key(单据号, 商品代号),
foreign key(商品代号) references 商品表(商品代号)
)
(3)销售视图
create view 销售视图(单据号,商品代号,单价,折扣,购买数量,付款金额,营业员)
as select 单据号,x.商品代号,单价,折扣,购买数量,单价*折扣*购买数量,营业员
from 销售表 x inner join 商品表 y on x.商品代号=y.商品代号
(4)收款视图
create view 收款视图(单据号,商品代号,收款金额,收款否,收款员)
as select x.单据号,x.商品代号,y.付款金额,x.收款否,x.收款员
from 销售表 x inner join 销售视图 y
on x.单据号=y.单据号 and x.商品代号=y.商品代号