我正在尝试一个数据库问题,但是此时我陷入困境,可以说我有两个实体RP和FP。 RP的属性为A,B和C,其中A为主键。对于FP,属性为X,Y,Z主键X。
FP是依赖于RP的弱实体,因此在创建我的关系模式后,FP的主键是(A,X),而A是引用RP主键的外键,我的问题是FP的示例具有多个组成一个FP的A的值。
例如,FP'FP01'由RP'RP01'制成,而RP'RP02'..... Y和Z只是FP的描述。
我的元组看起来像这样...是重复的数据,因为两行都需要对同一FP进行相同的描述
| .... X .... | ..A .... | ........ Y ........ | ......... Z ....... |
| .FP01。| .RP01。| descrition1 | description2 |
| .FP01。| .RP02。| descrition1 | description2 |
我曾考虑过将A设为多值属性,但A是主键的一部分,我不确定是否可以针对此问题进行处理或纠正。我该如何处理?
最佳答案
如果RP
和FP
之间的关系是一对多的,则可以。FP.A
不是唯一的,对于FOREIGN KEY
是RP(A)
FP(A,X)
是唯一的(它是PRIMARY KEY
),所以没有问题。
尽管如果属性Y
和Z
仅取决于X
,而不取决于整个主键(A,X)
,则不会对表进行规范化。在这种情况下,您需要将FP
表拆分为两个表。
关于mysql - 多值主键?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8712895/