我们正在工作中对所有SQL表使用GUID,并要求我在两个现有表之间创建一个查找表,因为这些表之间有很多到多个关系。假设原始表是Account和AccountOwner。帐户可以有多个所有者,AccountOwners可以拥有多个帐户。
因此,我将查找表创建为:
AccountOwnerAccount
AccountId , GUID, (not null)
AccountOwnerId, GUID, (not null)
几天后,我被要求在这个表中添加一个主键字段。这似乎是完全多余的,因为AccountId
和AccountOwnerId
的组合总是独一无二的。
新的表如下所示:
AccountOwnerAccount
Id, GUID, (not null)
AccountId , GUID, (not null)
AccountOwnerId, GUID, (not null)
我能看到的唯一逻辑原因是,这样做将允许此表在实体框架.EDMX
中显示。没有它,EDMX已经知道如何使用查找表,但不允许您获取AccountOwnerAccount
实体。对我来说应该是这样。
我想知道其他人是否认为添加一个新的主键字段是一个好主意还是坏主意?还是应该要求我们停止这种做法?我不是想让人们站在我这边,我只是想知道这里的最佳做法。
提前谢谢你。
发布于 2015-06-05 22:25:55
在纯SQL术语中,连接键是完美的。
但是,正如您所提到的,对于PK还有其他非SQL考虑。我遇到了各种软件的问题,您可以使用这些软件来构建用于数据库部署的自动化脚本。我遇到的主要问题是,如果根本没有定义PK (visual studio数据库项目模式比较工具只会忽略没有PK的任何表,甚至不会告诉您它的情况),但我已经看到连接键会导致脚本问题或完全跳过。如果您手动编写数据库部署脚本或充分了解您的发布工具以纠正不必要的行为,则这是一个没有意义的问题。
https://stackoverflow.com/questions/30676466
复制相似问题