gpt4 book ai didi

database - 功能依赖是 DBMS - 关键

转载 作者:搜寻专家 更新时间:2023-10-30 23:14:45 27 4
gpt4 key购买 nike

我正在读 Ramakrishnan 的书数据库管理系统,在模式细化和范式相关的章节中,我看到一句话说:

K is a candidate key for R means that K ----> R , where R is the relation.

我们还有分解规则:

If X ---->YZ, then X----->Y and X----->Z

然后,我的问题是,例如让 R=XABCDE 和 X 成为关键。然后,由于 X--->XABCDE,重复使用第二条规则,我们可以说 X--->A,X--->B,等等。那么这意味着 X 决定了所有的属性。但我在这里很困惑:那么我们不能在表中有一行,使得对于相同的 X 值,有不同的 A 值。例如,设X是一个人属性的id号,A是这个人所拥有的汽车的型号。那么一个人不能拥有两辆车,但是我们没有这样的约束,它必须能够拥有两辆车或者更多。

我在这里做错了什么?谁能帮忙?

谢谢

最佳答案

For example, let X be the id number of a person attribute, and A be the model of the car that person has. Then a person cannot have two cars, but we do not have such a constraint, it must be able to have two or more cars.

What am i doing wrong here? Can anyone help?

开始规范化 R 之前,您出错了。

数据库设计者的部分工作是决定数据库应该存储什么。这与规范化无关。在教科书问题中,这部分是在问题呈现给您之前完成的。

如果您以 R{XABCDE} 开头,其中“X”是一个人的身份证号码,“A”是一种汽车,则 R 的示例数据可能如下所示。

person_id   car_model      B  C  D  E
--
1 Buick Wildcat ...
2 Toyota Corolla ...
3 Honda Accord ...

或者它可能看起来像这样。

person_id   car_model                     B  C  D  E
--
1 Buick Wildcat, Nissan Sentra ...
2 Toyota Corolla ...
3 Honda Accord ...

或者它可能看起来像这样。

person_id   car_model      B  C  D  E
--
1 Buick Wildcat ...
1 Nissan Sentra ...
2 Toyota Corolla ...
3 Honda Accord ...

第一个示例表明您只想为每个人存储一辆车。这是一个站得住脚的设计决策(除非数据库需要知道每个人拥有多少辆汽车)。大学很少关心你有多少辆车;他们只想知道哪一个应该有 parking 贴纸。

决定存储什么与规范化无关。

其他示例表明您希望每人存储多于一辆汽车,在这种情况下,您至少需要进行一些规范化(在第二个示例中)或至少重新考虑您对主键的选择(在第三个例子中)。

一旦决定要存储什么,就可以开始规范化了。真的,在决定存储什么之前您如何开始规范化?那是不可能的。

关于database - 功能依赖是 DBMS - 关键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15860223/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com