首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >向查找表中添加主键

向查找表中添加主键
EN

Stack Overflow用户
提问于 2015-06-05 22:01:30
回答 1查看 708关注 0票数 0

我们正在工作中对所有SQL表使用GUID,并要求我在两个现有表之间创建一个查找表,因为这些表之间有很多到多个关系。假设原始表是Account和AccountOwner。帐户可以有多个所有者,AccountOwners可以拥有多个帐户。

因此,我将查找表创建为:

AccountOwnerAccount

代码语言:javascript
运行
复制
AccountId , GUID, (not null)
AccountOwnerId, GUID, (not null)

几天后,我被要求在这个表中添加一个主键字段。这似乎是完全多余的,因为AccountIdAccountOwnerId的组合总是独一无二的。

新的表如下所示:

AccountOwnerAccount

代码语言:javascript
运行
复制
Id, GUID, (not null) 
AccountId , GUID, (not null) 
AccountOwnerId, GUID, (not null)

我能看到的唯一逻辑原因是,这样做将允许此表在实体框架.EDMX中显示。没有它,EDMX已经知道如何使用查找表,但不允许您获取AccountOwnerAccount实体。对我来说应该是这样。

我想知道其他人是否认为添加一个新的主键字段是一个好主意还是坏主意?还是应该要求我们停止这种做法?我不是想让人们站在我这边,我只是想知道这里的最佳做法。

提前谢谢你。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-06-05 22:25:55

在纯SQL术语中,连接键是完美的。

但是,正如您所提到的,对于PK还有其他非SQL考虑。我遇到了各种软件的问题,您可以使用这些软件来构建用于数据库部署的自动化脚本。我遇到的主要问题是,如果根本没有定义PK (visual studio数据库项目模式比较工具只会忽略没有PK的任何表,甚至不会告诉您它的情况),但我已经看到连接键会导致脚本问题或完全跳过。如果您手动编写数据库部署脚本或充分了解您的发布工具以纠正不必要的行为,则这是一个没有意义的问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30676466

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档