首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Server将外键引用到非主键列

Server将外键引用到非主键列
EN

Stack Overflow用户
提问于 2013-05-21 08:38:27
回答 1查看 877关注 0票数 0

最近,我们遇到了以下情况:

我们正在设计一个数据库,并预测数据将在6个月内大幅度增长到数百万记录。我们希望每一行都有一个Guid作为唯一的ID,这使我们以后可以将数据移动到OLAP/Archive数据库中,在多次关于标识和Guid键的参数之后,我们提出了Guid作为唯一的ID。然而,Guid作为一个主键总是一个坏主意,因此表的主键是一个标识列。设计如下

用户

代码语言:javascript
复制
| Id (PK, Identity)                                                 |
| UserId (Guid, Unique-constraint, non-clustered index)             |  
| Name                                                              |
| Email                                                             |
| ...                                                               |

Notes

代码语言:javascript
复制
| Id (PK, Identity)                                                 |
| NoteId (Guid, Unique-constraint, non-clustered index)             |
| UserId (Guid, Foreign Key to Users(UserId)                        |
| Title                                                             |
| Text                                                              |
| ...                                                               |

当将数据移动到存档时,我们不再需要关心标识密钥了。

这个设计有什么问题吗?表演怎么样?请给我建议,谢谢。

EN

回答 1

Stack Overflow用户

发布于 2013-05-21 08:50:55

即使您没有将GUID作为主键,您仍然会将它用于连接,从而为服务器带来更多的工作。

你为什么不使用Users.Id作为FK的目标呢?

代码语言:javascript
复制
UserId (INT, Foreign Key to Users(Id)

请记住,您还需要对上面的列进行索引,所以您的方式仍然是表上的两个GUID索引,很可能是零碎的,因为我打赌程序员在应用程序层中随机生成GUID,而不是在DB中生成NEWSEQUENTIALID()?

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

https://stackoverflow.com/questions/16665536

复制
相关文章

相似问题

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