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)属于第三范式。每一个属性都是原子属性,没有部分函数依赖于主键,没有传递依赖于主键

目录
相关文章
|
2月前
|
SQL Go
SQL编程
SQL编程
10 0
|
10月前
|
存储 SQL 关系型数据库
SQL—什么是数据库?范式有哪些?模型有哪些?
在学校里,我们总是会把学生的个人信息,如:姓名、性别、家庭住址、成绩、年龄、所在班级等数据组成一张张表,最后它们形成一个数据库(当然一张表也可以形成一个数据库)。当我们想要数据库中的某条数据时,你只用告诉服务器你想要什么,它就给你找什么。大大降低人工操作的时间,保障了数据的准确。
|
12月前
|
SQL Go
sql编程
sql编程
88 0
|
SQL 网络协议 Ubuntu
简单学习SQL语言
简单学习SQL语言
119 0
|
存储
SQL3范式练习
商品(Product)信息包括编号(P_id)、名称(P_Name)、类别(P Category)、价格(P Price)、生产厂家(P_Facturer)、入库时间(P_time)、详细信息(P Descn)、缩略图(P Image)。
79 0
|
SQL Oracle 安全
SQL 概念|学习笔记
快速学习 SQL 概念
65 0
SQL 概念|学习笔记
|
SQL 存储 关系型数据库
|
SQL JavaScript 前端开发
《SQL与关系数据库理论——如何编写健壮的SQL代码》一3.2 SQL中的行
本节书摘来华章计算机《交互式程序设计 第2版》一书中的第3章 ,第3.2节,Joshua Noble 著 毛顺兵 张婷婷 陈宇 沈鑫 任灿江 译更多章节内容可以访问云栖社区“华章计算机”公众号查看。 3.2 SQL中的行 SQL支持数据行而不是元组;具体来说,SQL支持行类型、行类型构造器和行值构造器。
1132 0
|
SQL 数据库
《SQL与关系数据库理论——如何编写健壮的SQL代码》一2.6 SQL中的标量类型
本节书摘来华章计算机《SQL与关系数据库理论——如何编写健壮的SQL代码》一书中的第2章 ,第2.6节 C. J. Date 著 单世民 何英昊 许侃 译 更多章节内容可以访问云栖社区“华章计算机”公众号查看。</span> 2.
1156 0