函数依赖和规范化
我正在尝试寻找一个很好的资源来研究函数依赖性和规范化。
有人知道我应该去哪里吗?我很难区分 FD 属于 1NF、2NF 还是 3NF?
我一直在阅读维基百科并使用谷歌搜索来找到好的研究,但找不到任何简单的解释。
也许你们也可以分享一下您在生活中是如何学习FD和正常化的。
I am trying to find a great resource to study for functional dependency and normalization.
Anyone have any idea where should I look to? I am having difficulty differentiating whether a FD is in 1NF, 2NF or 3NF?
I've been reading Wikipedia and used Google search to find good research, but can't find any that explains it in simple terms.
Maybe you all can share on how you learned FD's and normalization during your life as well.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
函数依赖定义了属性之间的函数关系。例如:
PersonId
在功能上确定BirthDate
(通常写为PersonId -> BirthDate
)。另一种说法是:一个人的任何给定实例都有一个出生日期。请注意,相反的情况可能成立,也可能不成立。许多人可能是同一天出生的。给定一个BirthDate
,我们可能会发现许多PersonId
共享该日期。函数依赖集可用于合成关系(表)。的定义
前 3 个范式,包括 Boyce Codd 范式 (BCNF),用以下形式表示
给定的一组关系如何表示函数依赖关系。第四范式和第五范式涉及多值依赖(又一个问题)。
这里有一些关于函数依赖、规范化和数据库设计的免费资源。
在学习本材料时,准备好锻炼你的大脑和数学技能。
以下是来自各个学术网站的“幻灯片”...
以下为学术论文。阅读量较大,但值得付出努力。
如果你对这个主题非常感兴趣,我建议你花点钱买一本好书
关于关系数据库设计的主题。例如:CJ Date 的数据库系统简介
A functional dependency defines a functional relationship between attributes. For example:
PersonId
functionally determinesBirthDate
(normally written asPersonId -> BirthDate
). Another way of saying this is: There is exactly one Birth Date for any given instance of a person. Note that the converse may or may not be true. Many people may have been born on the same day. Given aBirthDate
we may find manyPersonId
sharing that date.Sets of functional dependencies may be used to synthesize relations (tables). The definition of
the first 3 normal forms, including Boyce Codd Normal Form (BCNF) is stated in terms of
how a given set of relations represent functional dependencies. Fourth and fifth normal forms involve Multi-Valued dependencies (another kettle of fish).
Here are a few free resources about Functional Dependencies, Normalization and database design.
Be prepared to exercise your brain and math skills when studying this material.
The following are "slide shows" from various academic sites...
The following are academic papers. Heavier reading but well worth the effort.
If you are seriously interested in this subject I suggest you put out the cash for a good book
on the subject of Relational Database Design. For example: An Introduction to Database Systems by C.J. Date
函数依赖是表的列之间的约束。例如,在表 person 中:
这里,SSN(社会安全号码)列中的值决定了姓名、出生日期、地址和电话号码列中的值。这意味着,如果两行 SSN 列中的值相同,则姓名、出生日期、地址和电话号码列中的值将相等。 SSN 为 123-98-1234 的人始终称为 Cindy Cry,出生日期为 15-05-1983,依此类推。这种情况称为函数依赖。
函数依赖的概念用于定义第二、第三范式以及 Boyce-Codd 范式 (BCNF)。
要了解有关函数依赖性和规范化的更多信息,您可以阅读当时著名的学术书籍,例如 CJ Date 的《数据库简介》,或任何 H. Garcia 的书籍-莫利纳、J.Ullman、J.Widom 三人组。
如果您想要一种不太正式的方法,我们在我们的公司博客上开始发布一系列有关数据标准化的帖子。
A functional dependency is a constraint between columns of your table. For example in the table person:
Here, the value in the column SSN (Social Security Number) determines the values in columns name, date of birth, address and phone number. This means that if we had two rows with the same value in the SSN column, then values in columns name, date of birth, address and phone number would be equal. A person with SSN 123-98-1234 is always called Cindy Cry, is born on 15-05-1983, and so on. A situation like this is called functional dependency.
The notion of functional dependencies is used to define second, and third normal form, and the Boyce-Codd normal form (BCNF).
To read more about functional dependencies and normalization you can go to then well-known academic books like Introduction to Databases by C.J. Date, or any of the books by the H. Garcia-Molina, J.Ullman, J.Widom trio.
If you want a less formal approach, we're starting a series of posts on data normalization on our company blog.
功能依赖性是规范化过程的基础。功能依赖性描述了表中属性(列)之间的关系。
换句话说,依赖关系 FD:X→Y 意味着 Y 的值由 X 的值决定。共享相同 X 值的两个元组必然具有相同的 Y 值。
数据库规范化是一个逐步的正式过程,它允许我们以最小化数据冗余和更新异常(有关更新异常的更多信息,请参见上文)的方式分解数据库表。
礼貌
Functional Dependencies are fundamental to the process of Normalization Functional Dependency describes the relationship between attributes(columns) in a table.
In other words, a dependency FD: X → Y means that the values of Y are determined by the values of X. Two tuples sharing the same values of X will necessarily have the same values of Y.
Database Normalization is a step wise formal process that allows us to decompose Database Tables in such a way that both Data Redundancy and Update Anomalies(see above for more info on update anomalies) are minimized.
Courtesy
函数依赖不具有任何正常形式。范式是满足某些给定 FD 集的关系的属性。
不要依赖维基百科或谷歌。在线资源中有太多错误信息和垃圾。尝试:
Chris Date 的数据库系统简介
Fabian Pascal 的数据库管理实际问题
A functional dependency isn't in any normal form. Normal Form is a property of a relation that satisfies some given set of FDs.
Don't rely on Wikipedia or Google. There is too much misinformation and rubbish from online sources. Try:
Introduction to Database Systems by Chris Date
Practical Issues in Database Management by Fabian Pascal
我们可以通过假设我们有两个属性并且一个属性完全依赖于另一个属性的方式来理解函数依赖,这称为函数依赖。
举一个现实生活中的例子。我们知道每个人都有一个与个人姓名对应的社会安全号码。假设弗兰克是一个人,我们想知道这个人的社会安全号码,但数据库将无法帮助提供此信息,因为可能有很多名为弗兰克的人,但我们可以根据社会安全号码确定人的姓名,因此姓名该人的功能完全取决于社会安全号码。
We can understand functional dependency in a way that assume we have two attribute and one attribute in totally dependent on the other is called functional dependency.
Say take a real life example. We know that everybody has a social security number against the name of the person . Say Frank is a person and we want to know the social security number of this person but database will be unable to help out with this information because there may be many persons named frank but we can determine name of person against social security number so name of the person is totally functional dependent on Social security number.
功能依赖
功能依赖可以定义为关系中的属性之间存在的关系。函数依赖用于创建 Boyce Codd 范式(缩写为 BCNF)中的关系。如果C和D是关系R的属性并且属性C在功能上确定属性D,则两个属性之间的功能依赖可以被表达为C→D。
示例:在人员架构下方
person(national_id, name, address);
这里national_id在功能上决定了person_name。所以功能依赖是national_id ->姓名;
为了消除冗余,函数依赖在关系数据库设计中很重要。
Functional Dependency
Functional dependency can be defined as relationship that exits between attributes in relation. Functional dependencies are used to create relation in Boyce Codd Normal Form abbreviated as BCNF. If C and D are the attributes of relation R and attribute C functionally determines attributes D then the functional dependency between both attribute can be expressed as C->D.
Example : Below the person schema
person(national_id, name, address);
Here national_id functionally determines the person_name. So functional dependency is national_id -> name;
Functional dependency is important in relational database design for the purpose of eliminating redundancy.