问题标签 [candidate-key]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
117 浏览

database - 主键如何在 DBMS 的联结表中工作?复合键如何成为主键?

在 DBMS 中,我们有

  1. Superkey - 唯一标识表中行的一个属性或一组属性。
  2. 候选键 - 唯一标识表中行的属性或属性集。超级密钥和候选密钥之间的区别在于,候选密钥的任何子集都不能作为候选密钥。
  3. 主键 - 选择的候选键,成为唯一标识行的属性。

如果我们想识别两个表之间的多对多关系,我们可以定义一个联结表,例如:

表:

要创建两者之间的关系:

我在想 bookID 和 authorID 在他们自己方面都是主键。

由于候选键(因此也是主键)不能有包含候选键的子集,那么 authorID 加上 BookID 怎么能是主键呢?这似乎打破了主键的定义。

我知道这可能是现实世界和理论之间的区别,但是由于我读过的 DBMS 教科书似乎以这种方式定义联结表并以这种方式定义主键,因此那里似乎存在脱节。

我误解了这个概念吗?

0 投票
1 回答
172 浏览

relational-database - 主键与候选键 - 关系 DBMS

我的理解是,从理论角度来看,主键是随机选择的候选键。

根据这个定义

' 候选键 - 候选键可以是任何列或列组合,可以作为数据库中的唯一键。一张表中可以有多个候选键。每个候选键都可以作为主键。

主键 - 主键是唯一标识记录的列或列组合。只有一个候选键可以是主键。

句子“每个候选键都可以作为主键”。和“只有一个候选键可以是主键。” 只有从候选键中任意选择主键时,逻辑上才不会矛盾。这个对吗?

主键有哪些候选键没有的特殊属性?

0 投票
1 回答
88 浏览

database - 3NF归一化和分解

我目前在 DB 类中并正在通过规范化工作,并且遇到了一些麻烦。我希望我能得到一些帮助来解决这个问题。我已经搜索了最后 30 分钟,但没有找到任何有助于解决我的问题的东西,但希望我没有在寻找错误的东西。

问题如下:

考虑普遍关系

具有以下功能依赖集 F

识别候选键并将 Employee 分解为 3NF 中保留依赖关系的关系。

对于候选键,我很挣扎,因为在做边图时,每个属性都有传入的依赖项。没有没有出现在依赖项的 RHS 上的属性。我认为可能让我感到困惑的是,虽然ID确实决定了一切,但First, Last决定了ID. 那么ID两者First, Last都将成为候选键吗?

我知道解构,Last -> Team并且Salary -> Dept是可传递的,但ID具有直接依赖关系ID -> Dept并且ID-> Salary已经给出。

这是否意味着我只需要两张桌子, (ID, First, Last, Salary) 并且 (Last, Team)

或者基于上面的候选键问题,我需要 (ID, First, Last) (ID, Salary, Dept) (Last, Team)

让我知道是否需要任何其他信息。谢谢你。

0 投票
0 回答
32 浏览

sql - “引用表中没有主键或候选键”,我没有看到什么?

我正在尝试创建两个简单的表,并且在外键上出现此错误。不知道为什么,我正在做的事情非常简单。也许只是我太新手了,看不到明显的东西。错误出现在“REFERENCES Empregado(CodEmp)”上

0 投票
1 回答
61 浏览

database - 从功能依赖中确定候选键:我们不使用最小超级键的例外情况?

我目前正在尝试了解功能依赖关系以及如何从中派生候选键。在一项作业中,我得到了以下关系 R

演讲 房间 日期 学生 讲师 工具
图形 DP 209 星期三。1 53 0210 开销-公关。
图形 DP 209 神父。3 53 0210 开销-公关。
C 413 周二。1 86 0111 个人电脑
C 413 周二。1 86 0111 开销-公关。
C 413 星期三。3 86 0111 个人电脑
C 413 星期三。3 86 0111 开销-公关。
数学 418 月 1 76 0342 木板
数学 318 星期四。2 76 0342 木板
数据结构 310 神父。2 32 0550 木板
数据结构 310 神父。2 32 0550 开销-公关。

第一个任务是在关系 R 中找到所有有意义的函数依赖。

函数依赖在我们的讲座中定义为

对于具有任意属性集 X 和 Y 的关系 R,如果对于所有 (x1,y1) 和所有 (x2,y2) 具有 x1,x2∈X 和 y1,Y 在功能上依赖于 X(我们也说 X 确定 Y), y2∈Y 成立:x1=x2 ⇒ y1=y2,即 X 中任何相同的值组合必须以 Y 中的相同值组合为条件。

使用此定义,我确定了以下一组功能依赖项

FD = {Lecture -> (NStudents, Lecturer), (Room, Date) -> (Lecture, Lecturer), (Lecture, Date) -> (Room, Lecturer), (Date, Lecturer) -> Lecture, (Date,工具)-> 讲座}

但是,我不知道它们是否有意义,因为没有指定有意义的确切含义。

下一个任务是识别候选键。

在我们的讲座中,超级键被定义为

令 A 为关系 R 的所有属性的集合,令 K 为 R 的任意属性集。

如果 K->A,则 K 称为超级键

全功能依赖在我们的讲座中定义为

如果没有 Z->Y 成立的 Z⊂X,则函数依赖 X -> Y 是完全函数依赖,否则 X->Y 是部分函数依赖。

因此,候选键定义为

如果 K->A 是全函数依赖,那么 K 称为 R 的候选键

接下来,我构造了属性闭包集来找到一组满足候选键定义的属性

  • (讲座)+ = {NStudents, Lecturer}
  • (房间,日期)+ = {房间,日期,讲座,讲师}

由于 NStudents 可以从 Lecture 派生,因此我将属性添加到闭包集 (Room, Date)+

  • (房间,日期)+ = {房间,日期,讲座,NStudents,讲师}
  • (讲座,日期)+ = {讲座,日期,房间,讲师}

由于 NStudents 可以从 Lecture 派生,我再次将 NStudents 添加到属性闭包集中

  • (讲座,日期)+ = {讲座,日期,房间,讲师,NStudents}
  • (日期,讲师)+ = {日期,讲师,讲座}

因为 NStudents 可以从 Lecture 和 Room 派生自 Lecture 和 Date 我将这些属性添加到闭包集中

  • (日期,讲师)+ = {日期,讲师,讲座,NStudents,房间}
  • (日期,工具)+ = {日期,工具,讲座}

NStudents 和 Lecturer 可以从 Lecture 派生,Room 可以从 Date and Lecturer 或 Date and Lecture 派生,所以我将这些属性添加到闭包集中

  • (日期,工具)+ = {日期,工具,讲座,NStudents,讲师,房间}

如果我没有遗漏任何东西,属性集 {Date, Tool} 是一个全功能依赖项,因为没有 Z->Y 的 Z⊂X。

但是,该练习的解决方案是以下属性集:

  • {讲座、工具、日期}
  • {房间、工具、日期}
  • {讲师,工具,日期}

我想知道为什么要添加另一个属性?这一步不是使属性集只是部分功能依赖吗?

0 投票
0 回答
21 浏览

key - 如何确定关系中的候选键?

R(A,B,C,D,E,G,H)
函数依赖是

候选键是否只有 GAB,因为那里的功能依赖 (AB->C,AB->E,B->D,G->H) 涵盖了所有设置?候选键是否也可能是 GAC,在这种情况下,D & E 不被覆盖(依赖 AC->B,G->H)和 GBC,E 不被覆盖(B->D,BC->A ,G->H)?

0 投票
1 回答
38 浏览

python - 如何从 csv 文件中推断出候选键

我有一个包含 csv 文件的文件夹,其中包含以下文件:car.csv、person.csv、student.csv....每个文件都有列。

我正在尝试读取列值并将它们放入列表中。

这是我的功能:

这个函数给了我这样的输出 Data1\vehicle.csv model,price,engine-size 我想打印列值,例如 model:camery,altima,aclass,....

0 投票
1 回答
75 浏览

database - 候选键中的 NULL 值

我想知道一个属性是否可以有多个 NULL 值并且仍然是候选键。假设我们有一个包含 3 列的表,airport_id、airport_name、IATA_code。Primary_key 是一个 airport_id。并非总是为机场提供 IATA_code,但如果提供,它会唯一标识一个机场。因此,我可以说 IATA_code 是候选键(但不能是主键),因此 IATA_code --> airport_id 之间存在功能依赖关系吗?

0 投票
0 回答
26 浏览

database - 从 fd 中找到候选键

嗨,我需要一些帮助来使用 FD查找候选键:

给定关系:R{x,y,z,s,t,u,w}

FD: {s->x , t->y , x->y ,xy->tuz}

是候选键 {s,w} 吗?

0 投票
1 回答
36 浏览

relational-database - 数据库 - 这个关系 R 是否在 BCNF 中并保留依赖关系?

R(A,B,C,D,E,G,H)是最小的封面:

候选键:

根据 BCNF 的定义,左侧的属性都不是 SK 或 CK。因此,它不在 BCNF 中。是否可以得出所有 FD 都违反 BCNF 的结论?如果是,在分解为BCNF的过程中,按照算法所说,取违反BCNF的FD,例如:X->Y,做R1(XY)和R2( R- Y)的过程

在我们的例子中,我是否需要在整个 FD 上都这样做?如果我这样做,我最终会得到

但是仍然缺少 G->C 和 H->D 并且 R6 从一开始就不在 FD 中。所以这不会使它保持依赖关系吗?