4

我不确定我是否使用了好的术语,所以我会先尝试解释我的问题。

我有一个交叉引用表,CompetenceCollab其中包含人们与其能力之间的关联。该表有两个主键,人员 ID 和权限 ID。至此,一切正常。

但是,我必须添加的新功能如下:人们必须能够为其他人的能力添加评级。基本上,这意味着我必须添加一个新表,其中将包含注释、谁给它以及以某种方式指向该CompetenceCollab表的链接。一位同事告诉我,我可以使用他所谓的“备用键”,定义两个外键,一个用于 的每个主列CompetenceCollab,并以某种方式告诉数据库每个评级与能力和人员相关联。

所以我的问题如下:

  • 首先,这个设计看起来是不是完全疯了,如果是这样,我该怎么办?
  • 我必须在 Symfony 中使用 Doctrine ORM。这种事情可以使用吗?如果是,有人可以为我提供一种如何在 YAML 文件中定义它的方法吗?

感谢您的帮助,请随时在评论中提出问题,我不知道我是否真的那么清楚。

4

2 回答 2

4

我意识到这是一个老问题,但自 Docrine 2.1 起就支持复合外键。请参阅:http ://readthedocs.org/docs/doctrine-orm/en/latest/tutorials/composite-primary-keys.html

于 2012-04-30T14:23:34.140 回答
1

这是2个问题,但我只回答第一个问题,因为我对问题中的ORM工具一无所知。

我不太确定“备用键”是什么意思,但我会考虑的选择是(按优先顺序):

1) 在 CompetenceCollab 上定义一个代理主键并使用它从新表中创建一个外键

2) 在新表中同时拥有人员 ID 和能力 ID 字段,并为 CompetenceCollab 创建复合外键

如果 Doctrine ORM 有一个不错的特性集,它至少应该处理 (1),因为这是一个非常常见的场景。

于 2010-05-20T13:58:39.743 回答