【发布时间】:2014-01-28 07:39:09
【问题描述】:
我有一些表,我使用 MySQL Workbench 创建了role_has_action 表。
创建的字段为:(role_id,action_id,action_controller_id):
(为简洁起见,我将action_controller_id 重命名为controller_id):
我知道这是role_has_action 和action 表之间的识别关系。 action 表本身和控制器表有一个复合键。因此,role_has_action 表现在有一个三重复合主键来维护可识别的关系。
然而,我声称,如果 role_has_action 仅具有 (role_id,action_id) 字段,那么在实践中将保留可识别性,尽管可能不是严格的理论意义上的。我这么说是因为控制器是独一无二的;动作对于控制者来说是唯一的;而role_has_action 可以通过使用action.id 列将role 表中的角色唯一地绑定到一个动作,因此controller_id 键在role_has_action 表中是多余的。
我错过了什么吗?删除该列 (controller_id) 会使 MySQL Workbench 将此关系标记为不可识别,所以我有点担心。我可以举一个反例说明这如何变成不可识别的关系,或者我可以在实践中删除该列并且不太担心失去可识别性吗?
【问题讨论】: