SQL3范式练习

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

练习


规范化案例分析与设计


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


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

目录
相关文章
|
存储 SQL 数据库
SQL——三大范式
SQL——三大范式
|
存储 SQL 关系型数据库
SQL—什么是数据库?范式有哪些?模型有哪些?
在学校里,我们总是会把学生的个人信息,如:姓名、性别、家庭住址、成绩、年龄、所在班级等数据组成一张张表,最后它们形成一个数据库(当然一张表也可以形成一个数据库)。当我们想要数据库中的某条数据时,你只用告诉服务器你想要什么,它就给你找什么。大大降低人工操作的时间,保障了数据的准确。
|
SQL 数据库
关于SQL数据库中的范式
范式:英文名称是 Normal Form,它是英国人 E.F.Codd(关系数据库的老祖宗)在上个世纪70年代提出关系数据库模型后总结出来的,范式是关系数据库理论的基础,也是我们在设计数据库结构过程中所要遵循的规则和指导方法。
1075 0
|
3月前
|
关系型数据库 MySQL 网络安全
5-10Can't connect to MySQL server on 'sh-cynosl-grp-fcs50xoa.sql.tencentcdb.com' (110)")
5-10Can't connect to MySQL server on 'sh-cynosl-grp-fcs50xoa.sql.tencentcdb.com' (110)")
|
5月前
|
SQL 存储 监控
SQL Server的并行实施如何优化?
【7月更文挑战第23天】SQL Server的并行实施如何优化?
135 13
|
5月前
|
SQL
解锁 SQL Server 2022的时间序列数据功能
【7月更文挑战第14天】要解锁SQL Server 2022的时间序列数据功能,可使用`generate_series`函数生成整数序列,例如:`SELECT value FROM generate_series(1, 10)。此外,`date_bucket`函数能按指定间隔(如周)对日期时间值分组,这些工具结合窗口函数和其他时间日期函数,能高效处理和分析时间序列数据。更多信息请参考官方文档和技术资料。
|
5月前
|
SQL 存储 网络安全
关系数据库SQLserver 安装 SQL Server
【7月更文挑战第26天】
74 6
|
5月前
|
存储 SQL C++
对比 SQL Server中的VARCHAR(max) 与VARCHAR(n) 数据类型
【7月更文挑战7天】SQL Server 中的 VARCHAR(max) vs VARCHAR(n): - VARCHAR(n) 存储最多 n 个字符(1-8000),适合短文本。 - VARCHAR(max) 可存储约 21 亿个字符,适合大量文本。 - VARCHAR(n) 在处理小数据时性能更好,空间固定。 - VARCHAR(max) 对于大文本更合适,但可能影响性能。 - 选择取决于数据长度预期和业务需求。
471 1
|
5月前
|
SQL Oracle 关系型数据库
MySQL、SQL Server和Oracle数据库安装部署教程
数据库的安装部署教程因不同的数据库管理系统(DBMS)而异,以下将以MySQL、SQL Server和Oracle为例,分别概述其安装部署的基本步骤。请注意,由于软件版本和操作系统的不同,具体步骤可能会有所变化。
394 3
|
4月前
|
SQL 安全 Java
驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接。错误:“The server selected protocol version TLS10 is not accepted by client
驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接。错误:“The server selected protocol version TLS10 is not accepted by client
539 0