如何将多个外键从ER模型映射到关系模型?

时间:2012-02-16 08:23:21

标签: sql database foreign-keys entity-relationship

我有一个问题,将ER模型映射到关系模型。我试着简化我的案子。 假设有3个实体,A,B和C,以及2个关系,R1和R2

[A] ---(1,n) <<R1>>(1,1) === [[B]] === (1,n)<<R2>> (1,1) ==== [[C]]

A具有键,ak和其他属性。 B很弱并且由ak和bk标识(这是一个wek /部分密钥) 到目前为止..一切都可以映射,我将有两个关系

  • A(ak,a1,....,an)ak作为主键
  • B(bk,ak,b1,...,bn),其中(bk,ak)为主键,ak外键引用A(ak)

C是什么? 我认为C有像部分键的ck,但是如何映射新关系?

c(ck,bk,ak,c1,...,cn)

  • (ck,bk,ak)作为主键,bk作为外键引用B(bk)和ak引用B(ak)?
  • (ck,bk,ak)作为密钥,bk作为外键引用B(bk)和ak引用A(ak)?

或其他类似的例如:

  • C(ck,bk,c1,...,cn)以(ck,bk)为键,bk作为外键引用B(bk)?

对最终SQL的思考没有多大帮助,因为我认为不允许多个foreign_keys(例如FOREIGN KEY(bk,ak)参考文献B(bk,ak)

我在很多书上搜索过但没有找到类似的情况。我此时真的很困惑...... 我希望你能帮助我:-) 提前致谢

1 个答案:

答案 0 :(得分:1)

PRIMARY KEY的{​​{1}}为B,因此您应该(bk, ak)引用C关系:

1:n

这在SQL中是允许的:

(ck, bk, ak) as PRIMARY KEY,
(bk, ak) as FOREIGN KEY referencing B(bk, ak)