0

考虑以下带有相关有效负载信息的多对多连接表:

| (键)FK_File_ID | (键)FK_Status_ID | 日期时间 |

我的问题是给定文件可能会多次进入特定状态。在其整个生命周期。但是,它永远不可能同时处于相同的状态;日期时间将始终确保这两个条目是唯一的。

我的问题是我无法将 DateTime 设置为键,因为如果用户在将文件置于该状态时出错,我需要能够更新它。(目前,我无法控制的客户端程序让用户选择将文件置于该状态的时间)。我正在使用实体框架,如果它被标记为键,它不会让我更新该日期列。

在这种情况下,我应该给连接表它自己的ID列吗?我不知道这样做是否有后果。如果它有自己的ID列,我想这意味着主键不再需要复合,现在可以简单地使用该ID列作为主键吗?

解决这个问题的最佳方法是什么?

4

1 回答 1

1

只要您需要向连接表添加另一个属性,那么它就不再只是一个连接表,您需要一个实体。

在此示例中,自然键是所有 3 列的组合。但是为复合键创建外键更加困难,特别是如果您必须像这里那样更新主键。

我会添加一个 ID 字段作为主键,并在自然键上添加一个唯一索引。

于 2013-10-28T17:36:41.677 回答