什么是KISS(保持简单,笨)的方式来记住什么BC范式,以及如何采取非标准化表和BCNF呢?

维基百科的信息:不是非常有帮助,我

有帮助吗?

解决方案

克里斯日期的定义实际上是相当不错的,只要你明白他的意思:

的每个属性

您的数据必须被分解成单独的,不同的属性/列/值,其不依赖于任何其他属性。您的全名是一个属性。你的生日是一个属性。您的年龄不是一个属性,这取决于这是不是您的生日的一部分,当前日期。

必须代表一个事实

每个属性是一个事实,而不是事实的集合。在属性更改一个位变化的全部意义。你的生日是事实。是您的全名是事实?那么,在某些情况下,它是,因为如果你改变你的姓你的全名是不同的,对不对?然而,对于一个系谱你有一个姓氏和姓氏,如果你改变你的姓你的姓不改变,那么它们是独立的事实。

有关密钥,

一个属性是特殊的,它是一个键。关键是,必须是在你的数据的所有信息唯一,必须永远不会改变的属性。您的全名不是关键,因为它可以改变。你的社会保险号码不是关键,因为他们得到重用。您的SSN加上生日不是关键,即使组合不能被重用,因为属性不能是两个事实的组合。 GUID是一个关键。你增加也不可重复使用数量是一个关键。

整个键,

单独密钥必须是足够的[和必要的!],以确定你的价值观;你不能有不同的键上表示相同的数据,也不能键列的一个子集足以识别的事实。 假设你有一个地址簿与一个GUID键,名称和地址的值。它是确定有不同的密钥出现两次相同的名字,如果他们代表着不同的人,是不是“相同的数据”。 如果玛丽·琼斯在会计政策变更的她的名字玛丽·史密斯,玛丽·琼斯的销售并没有改变她的名字为好。 在另一方面,如果玛丽·史密斯和约翰·史密斯有相同的街道地址,它确实是同一个地方,这是不允许的。你必须创建一个新的键/值对与街道地址和一个新的密钥。

您也不允许使用密钥对这个新的单一街道地址在地址簿中的值,因为现在同样的街道地址键将表示两次。 相反,你必须做出第三键/值对地址簿键和街道地址键的值;你会发现这组值的匹配他们的著作键和地址键一个人的街道地址。

,而且只键

有必须比识别你的价值观的关键没事别。例如,如果你被允许“泰姬陵”(假设只有一个),你是不是在同一个记录允许一个城市价值的地址, 因为如果你知道地址,你也知道的城市。这也将开辟在不同的城市存在多于一个泰姬陵的可能性。 相反,你必须重新创建一个像泰姬陵,白宫DC,等等,和他们的城市唯一值的次要位置的关键。 或禁止特有的城市“地址”。

那么帮助我,科德。

其他提示

下面是从维基百科页面了一些有用的摘录于第三范式

比尔肯特限定第三范式这样:

  

每个非关键属性“必须提供   一个关于关键的事实,整个键,   并没有什么,但键“。

     

要求非键属性是   依赖于“整体键”保证   一个表是在2NF;进一步   要求非关键属性是   依赖于“不过是关键”   确保该表是在3NF。

克里斯日期适应肯特的助记符定义BC范式:

  

“每个属性必须代表一个事实   有关密钥,整个键和   不过关键。”在这里,   需要关注的是每   属性表中,而不仅仅是   非键属性。

此进场当一个表具有多个化合物候选键,和一个候选键内的属性有另一个候选键上的部分的相关性。第三范式不会禁止这一点,因为它排除了关键属性。但是BCNF将规则应用于关键属性以及

至于如何使表符合BCNF,则需要代表额外的依赖,另一个属性,并可能通过拆分属性到另一个表。

我GOOGLE“BC正规化”和维基百科后这是第二个结果。我的课本给出了一个非常简单的定义,关系型数据库管理系统方面:

  

<强>每非平凡FD的左侧必须是超密钥。

- “数据库系统完全书”由加西亚 - 莫利纳,乌尔曼和代表智慧

我读过的最好的非正式的答案是,在BCNF,在每一个函数依赖每一个“箭头”是“箭”出一个候选键。我不记得来源,但它可能是一些克里斯日期写道。

基本上博伊斯-科德是“第五正常形式”。它是通过在数据模型“定语实体”,对于像类型(例如角色,状态,处理状态,位置型,电话型等)是否存在等视觉上可识别。 定语实体(子亚型)是有限集,进一步分类的一类实体的水平值的列表。所以,你可能有一个电话型(“移动”,“桌子”,“VOIP”)的电子邮件帐户类型(“业务”,“个人”,“游戏”),角色(项目经理,数据建模,超级模特)等。 另一种形态的线索是超类型是否存在等,(亦称主类,超类,元实体),如缔约方(亚型为公司,个人等)。

它基本上分类狂野(..no视频不是令人兴奋的),以原子或叶级;看到上面的更技术性的解释草案Karwin的评论。

博伊斯-科德级模型基本上是非常详细的逻辑模型,从更简单的基于业务的概念模型的。 **它们通常不版本在物理模型batim实现,因为性能(或功能简单),PDM优化可能导致超类型和属性的实体进行管理,如用户界面的下拉列表中,或者在场景背后的逻辑在应用程序中,或者在数据库约束和方法来实施参照完整性。 (即,它们可能最终如在PDM模式的查找表,或者它们可通过代码来处理并在数据库中未示出)。

那么 - 为什么他们,如果他们可能不会在PDM结束了?出于同样的原因,你建立一个良好的3NF模型,你之前“优化”,从而使数据库结构反映了现实世界,因此是比我们继承了典型的组装机更稳定,更需要做的英勇行为,使工作作为我们的业务/客户要求的变化。

很多时候,它是最容易听你的直觉,这自然会到来。一般来说,如果你满足3NF你见过BCNF。这并不覆盖ERD的详细分析或有例子,但也有13条根据科德规则。我觉得最好还是遵循这些规则,但始终记得有做事情,所以跟着他们松散的没有一个正确的方式。所以对于RDBMS,这里的规则:

http://www.87android.com / 12-规则的的关系数据库模型逐科德/

这可能不是直接回答这个问题,但如果你是询问如何去BCNF或一个简单的方法来记住它,那么你不明白规范化不够好。这是不用担心的,虽然。关系数据库采取多种形式,极少数是做得很好。你能做的最好的事情是知道它的意思是关系,按照上面的规则,不用担心正常化的水平。归一化的方法,消除了数据的重复。每个级别更因此被移动进入函数依赖的迁移。记住这一点,你会好起来的,你的勇气和智慧将做休息。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top