SQL3范式练习

简介: SQL3范式练习

练习

规范化案例分析与设计



假设对电子商务系统的业务描述如下:


商品(Product)信息包括编号(P_id)、名称(P_Name)、类别(P_ Category)、价格(P_ Price)、生产厂家(P_Facturer)、入库时间(P_time)、详细信息(P_ Descn)、缩略图(P_ Image)。

订单(Order)信息包括:编号(O_id)、提交时间(O_Time)和当前状态(O_Status)。

购买人(Customer)信息包括姓名(C_Name)、性别(C_Sex)、联系方式(C_Contact)、电子邮箱(C_Email)。

其中,电子邮箱确定唯一购买人,联系方式统一存储了购买者的送货地址(C_Addr)、邮政编码(C_Zip)和购买人的手机号码(C_phone)。 订单的购买商品信息包括:商品的名称(P_Name)、商品的类别(P_Category)、商品的缩略图(Image)、商品的购买数量(Qty)、商品的销售单价(P_ Price1)。上述信息需与商品信息对应。 销售过程为:购买人下单生成订单(Generate),然后再挑选(Pick)商品加入到订单中。


根据以上描述定义如下关系模式:


Product (P_id,P_Name,P_ Category,P_ Price,P_Facturer,P_time,P_ Descn,P_ Image)

Order(O_id,O_Time,O_Status,C_Email)

Customer(C_Name,C_Sex,C_Contact,C_Email)

Pick(O_id,P_id,Qty,P_ Price1)

1 写出每个关系的最小依赖集(基本的函数依赖集,不是导出的函数依赖);指出是否存在传递函数依赖;对于函数依赖左部是多属性的情况,讨论其函数依赖是完全函数依赖还是部分函数依赖,指出各关系的候选码。


(1)Product


函数依赖集:{P_id->P_Name,P_id->P_Category,P_id->P_Price,P_id->P_Facturer,P_id->P_time,P_id->P_Descn,P_id->P_Image}


传递函数依赖:无


部分函数依赖:无


完全函数依赖:{P_id->P_Name,P_id->P_Category,P_id->P_Price,P_id->P_Facturer,P_id->P_time,P_id->P_Descn,P_id->P_Image}


候选码:P_id


(2)Order


函数依赖集:{O_id->O_Time,O_id->O_Status,O_id->C_Email}


传递函数依赖:无


部分函数依赖:无


完全函数依赖:{O_id->O_Time,O_id->O_Status,O_id->C_Email}


候选码:O_id


(3)Customer


函数依赖集:{C_Email->C_Contact,C_Contact->C_Name,C_Contact->C_Sex}


传递函数依赖:C_Name对C_Email传递函数依赖;C_Sex对C_Email传递函数依赖


部分函数依赖:无


完全函数依赖:{C_Email->C_Contact,C_Contact->C_Name,C_Contact->C_Sex}


候选码:C_Email


(4)Pick


函数依赖集:{(O_id,P_id)->Qty,(O_id,P_id)->P_Price1}


传递函数依赖:无


部分函数依赖:无


完全函数依赖:{(O_id,P_id)->Qty,(O_id,P_id)->P_Price1}


候选码:(O_id,P_id)


2.使用数据规范化分析方法,分析每个关系模式属于第几范式。


(1)属于第三范式。每一个属性都是原子属性,没有部分函数依赖于主键,没有传递依赖于主键


(2)属于第三范式。每一个属性都是原子属性,没有部分函数依赖于主键,没有传递依赖于主键


(3)非范式模式。C_Email属性还可以再分为其他的属性,第一范式不满足。


(4)属于第三范式。每一个属性都是原子属性,没有部分函数依赖于主键,没有传递依赖于主键

目录
相关文章
|
5月前
|
SQL 关系型数据库 MySQL
sql 学习
sql 学习
|
7月前
|
SQL Go
YI
|
SQL 存储 关系型数据库
SQL学习总结
SQL学习总结
YI
87 0
|
7月前
|
SQL
SQL高阶学习
SQL高阶学习
37 0
|
SQL Oracle 安全
SQL 概念|学习笔记
快速学习 SQL 概念
106 0
SQL 概念|学习笔记
|
存储
SQL3范式练习
商品(Product)信息包括编号(P_id)、名称(P_Name)、类别(P Category)、价格(P Price)、生产厂家(P_Facturer)、入库时间(P_time)、详细信息(P Descn)、缩略图(P Image)。
106 0
|
SQL 关系型数据库 MySQL
sql学习
SQL DML 和 DDL 可以把 SQL 分为两个部分:数据操作语言 (DML) 和 数据定义语言 (DDL)。 SQL (结构化查询语言)是用于执行查询的语法。但是 SQL 语言也包含用于更新、插入和删除记录的语法。
1368 0
|
SQL JavaScript 前端开发
《SQL与关系数据库理论——如何编写健壮的SQL代码》一3.2 SQL中的行
本节书摘来华章计算机《交互式程序设计 第2版》一书中的第3章 ,第3.2节,Joshua Noble 著 毛顺兵 张婷婷 陈宇 沈鑫 任灿江 译更多章节内容可以访问云栖社区“华章计算机”公众号查看。 3.2 SQL中的行 SQL支持数据行而不是元组;具体来说,SQL支持行类型、行类型构造器和行值构造器。
1183 0