我不确定我是否使用了良好的条款,所以我会首先尝试解释我的问题。
我有一个交叉引用表CompetenceCollab
,其中包含人与其能力之间的关联。此表有两个主键,人员ID和权限ID。到目前为止,一切都还可以。
但是,我必须添加的新功能如下:人们必须能够为其他人的能力添加评级。基本上,这意味着我必须添加一个新表,其中包含提供它的注释,以及某种方式指向CompetenceCollab
表的链接。一位同事告诉我,我可以使用他所谓的“备用密钥”,定义两个外键,每个主要列CompetenceCollab
一个,并以某种方式告诉数据库每个评级与能力和人员相关联。
所以我的问题如下:
感谢您的帮助,请随时在评论中提问,我不知道我是否真的那么清楚。
答案 0 :(得分:4)
我意识到这是一个老问题,但自Docrine 2.1以来支持复合外键。请参阅:http://readthedocs.org/docs/doctrine-orm/en/latest/tutorials/composite-primary-keys.html
答案 1 :(得分:1)
这是两个问题,但我只会回答第一个问题,因为我对问题中的ORM工具一无所知。
我不确定“替代密钥”是什么意思,但我会考虑的选择(按优先顺序排列):
1)在CompetenceCollab上定义代理主键,并使用它来从新表创建外键
2)在新表中同时拥有一个人员ID和能力id字段,并为CompetenceCollab创建一个复合外键
如果Doctrine ORM有一个不错的功能集,它至少应该处理(1),因为这是一种非常常见的情况。