BCNF范式及其分解方法(对一次Lab作业的总结)
BCNF是比第三范式更严格一个范式。它要求关系模型中所有的属性(包括主属性和非主属性)都不传递依赖于任何候选关键字。也就是说,当关系型表中功能上互相依赖的那些列的每一列都是一个候选关键字时候,该满足BCNF。
BCNF实际上是在第三范式的基础上,进一步消除了主属性的传递依赖。
一次Lab的作业题目如下:
A luxury car-rental company has been tracking their rental data in a simple spreadsheet, but now wants to migrate to a proper database. Consider the table given below, containing some sample data.

(a) Identify at least 10 functional dependencies (non-trivial with minimal LHS) that hold on the table above.
(b) Classify the functional dependencies found as either ‘sensible’ or ‘accidental’.
给了个这个租车表,要求写函数依赖关系,这里只写sensible的,accidental的没有固定标准,不写。
依赖如下:
plate->make
make ->daily_rate
license_nr->dob
license_nr->name
plate+start_date ->* (*表示除这两项之外的剩余部分都可以表示)
考虑到一个人(一个驾照可以租很多车,所以还需要租车的开始时间或者结束时间来区分)
其他的不用解释了
这里为了突出传递函数依赖,将plate,make,daily_rate分开,理解为车牌号决定厂家,厂家决定该车型每日收入,同一车型收费应该都相同,所以为互相依赖。
剩余的依赖关系都为部分函数依赖
建表如下:
建立4个表
table1
plate start_date end_date license_nr (plate start_date为主键)
table 2
name dob license_nr (license_nr为主键)
table3和table4传递关系 分开写
table 3
plate make
table 4
make daily_rate
转载一篇博文,有关BCNF的分解算法的:
https://blog.csdn.net/panxiqie___/article/details/38899021
这里根据这个dalao写的试着分析一下自己的:
plate->make
make ->daily_rate
license_nr->dob
license_nr->name
plate+start_date ->*

结束
BCNF范式及其分解方法(对一次Lab作业的总结)的更多相关文章
- bcnf范式
3.5范式--bcnf范式到底是什么呢? 对于bcnf范式,通过查阅资料,我的理解是--主键依赖的去除.比如说:一个仓库管理的表格,有以下属性(管理员编号,仓库号,货物编号,货物数量)其中每个管理员管 ...
- SQL 第一范式、第二范式、第三范式、BCNF范式
一.第一范式 1NF 要求:每一个分量必须是不可分的数据项. 特点: 1)有主键,且主键不能为空. 2)字段不能再分. 示例:(以下例子 不满足 第一范式) /*学号 年龄 信 ...
- 基于One-Class的矩阵分解方法
在矩阵分解中. 有类问题比較常见,即矩阵的元素仅仅有0和1. 相应实际应用中的场景是:用户对新闻的点击情况,对某些物品的购买情况等. 基于graphchi里面的矩阵分解结果不太理想.调研了下相关的文献 ...
- 重构第22天 分解方法(Break Method)
理解:如果一个功能,里面比较复杂,代码量比较多,我们就可以把这个功能分解成多个小的method,每个方法实现该功能的一个小小的部分,并且方法命名成容易理解,和方法内容相关的名称,更有助于维护和可读性提 ...
- BCNF/3NF的判断方法
判断是否是 3NF 的条件: 对于 R 上的每个函数依赖 X->A (X 是关系 R 属性的一个子集,A 是 R 的一个属性) ,以下条件中的一个成立:1 X ∈ A2 X 是超码3 A 是 R ...
- [MySQL] 关系型数据库的设计范式 1NF 2NF 3NF BCNF
一.缘由: 要做好DBA,就要更好地理解数据库设计范式.数据库范式总结概览: 为了更好地理解数据库的设计范式,这里借用一下知乎刘慰老师的解释,很通俗易懂.非常感谢! 二.具体说明: 首先要明白”范 ...
- 数据库范式(1NF 2NF 3NF BCNF)
http://blog.csdn.net/xuxurui007/article/details/7738330 http://www.cnblogs.com/laodao1/archive/2009/ ...
- 数据库范式1NF 2NF 3NF BCNF(实例)通俗易懂的讲解
[转] 数据库范式1NF 2NF 3NF BCNF(实例)通俗易懂的讲解 本文对大多数初学数据库原理的同学绝对是个大福利,哈哈,完完整整的看完此篇博文一定能够清晰地理解数据库的四大范式. ...
- 数据库的范式(1NF、2NF、3NF、BCNF)转载
文章属于转载:https://www.cnblogs.com/hi-bazinga/archive/2012/06/05/2536806.html 第一范式:关系模式中,每个属性不可再分.属性原子性第 ...
随机推荐
- iis配置asp.net常见问题解决方案
很多朋友在用IIS6架网站的时候遇到不少问题,而这些问题有些在过去的IIS5里面就遇到过,有些是新出来的,俺忙活了一下午,做 了很多次试验,结合以前的排错经验,做出了这个总结,希望能给大家帮上忙:) ...
- Jupyter notebook 使用多个Conda 环境
conda install nb_conda_kernels
- web 应用请求乱码问题
背景 作为非西欧语系的国家,总是要处理编码问题 使用java编码解码 @Test public void coderTest() throws UnsupportedEncodingException ...
- Storm并行度
1.Storm并行度相关的概念 Storm集群有很多节点,按照类型分为nimbus(主节点).supervisor(从节点),在conf/storm.yaml中配置了一个supervisor有多个槽( ...
- ahjesus Axure RP 8.0注册码,亲测可用
ahjesus Axure RP 8.0注册码 ahjesus Axure RP 8.0注册码 用户名:aaa注册码:2GQrt5XHYY7SBK/4b22Gm4Dh8alaR0/0k3gEN5h7F ...
- deep learning深度学习之学习笔记基于吴恩达coursera课程
feature study within neural network 在regression问题中,根据房子的size, #bedrooms原始特征可能演算出family size(可住家庭大小), ...
- HDFS pipeline写 -- datanode
站在DataNode的视角,看看pipeline写的流程,本文不分析客户端部分,从客户端写数据之前拿到了3个可写的block位置说起. 每个datanode会创建一个线程DataXceiverServ ...
- [翻译] ZLHistogramAudioPlot
ZLHistogramAudioPlot A hardware-accelerated audio visualization view using EZAudio, inspired by Audi ...
- 解决Oracle11g密码180天过期,账号锁住的问题
1.查看用户的proifle是哪个,一般是default: sql>SELECT username,PROFILE FROM dba_users; 2.查看指定概要文件(如default)的密码 ...
- 铁乐学python_day04-作业
1,写代码,有如下列表,按照要求实现每一个功能 li = ['alex', 'wusir', 'eric', 'rain', 'alex'] 计算列表的长度并输出 print(len(li)) 答:结 ...