问题标签 [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.
database - 主键如何在 DBMS 的联结表中工作?复合键如何成为主键?
在 DBMS 中,我们有
- Superkey - 唯一标识表中行的一个属性或一组属性。
- 候选键 - 唯一标识表中行的属性或属性集。超级密钥和候选密钥之间的区别在于,候选密钥的任何子集都不能作为候选密钥。
- 主键 - 选择的候选键,成为唯一标识行的属性。
如果我们想识别两个表之间的多对多关系,我们可以定义一个联结表,例如:
表:
要创建两者之间的关系:
我在想 bookID 和 authorID 在他们自己方面都是主键。
由于候选键(因此也是主键)不能有包含候选键的子集,那么 authorID 加上 BookID 怎么能是主键呢?这似乎打破了主键的定义。
我知道这可能是现实世界和理论之间的区别,但是由于我读过的 DBMS 教科书似乎以这种方式定义联结表并以这种方式定义主键,因此那里似乎存在脱节。
我误解了这个概念吗?
relational-database - 主键与候选键 - 关系 DBMS
我的理解是,从理论角度来看,主键是随机选择的候选键。
根据这个定义
' 候选键 - 候选键可以是任何列或列组合,可以作为数据库中的唯一键。一张表中可以有多个候选键。每个候选键都可以作为主键。
主键 - 主键是唯一标识记录的列或列组合。只有一个候选键可以是主键。
句子“每个候选键都可以作为主键”。和“只有一个候选键可以是主键。” 只有从候选键中任意选择主键时,逻辑上才不会矛盾。这个对吗?
主键有哪些候选键没有的特殊属性?
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)
让我知道是否需要任何其他信息。谢谢你。
sql - “引用表中没有主键或候选键”,我没有看到什么?
我正在尝试创建两个简单的表,并且在外键上出现此错误。不知道为什么,我正在做的事情非常简单。也许只是我太新手了,看不到明显的东西。错误出现在“REFERENCES Empregado(CodEmp)”上
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。
但是,该练习的解决方案是以下属性集:
- {讲座、工具、日期}
- {房间、工具、日期}
- {讲师,工具,日期}
我想知道为什么要添加另一个属性?这一步不是使属性集只是部分功能依赖吗?
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)?
python - 如何从 csv 文件中推断出候选键
我有一个包含 csv 文件的文件夹,其中包含以下文件:car.csv、person.csv、student.csv....每个文件都有列。
我正在尝试读取列值并将它们放入列表中。
这是我的功能:
这个函数给了我这样的输出 Data1\vehicle.csv model,price,engine-size 我想打印列值,例如 model:camery,altima,aclass,....
database - 候选键中的 NULL 值
我想知道一个属性是否可以有多个 NULL 值并且仍然是候选键。假设我们有一个包含 3 列的表,airport_id、airport_name、IATA_code。Primary_key 是一个 airport_id。并非总是为机场提供 IATA_code,但如果提供,它会唯一标识一个机场。因此,我可以说 IATA_code 是候选键(但不能是主键),因此 IATA_code --> airport_id 之间存在功能依赖关系吗?
database - 从 fd 中找到候选键
嗨,我需要一些帮助来使用 FD查找候选键:
给定关系:R{x,y,z,s,t,u,w}
FD: {s->x , t->y , x->y ,xy->tuz}
是候选键 {s,w} 吗?
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 中。所以这不会使它保持依赖关系吗?