您好,欢迎来到[编程问答]网站首页   源码下载   电子书籍   软件下载   专题
-->
当前位置:首页 >> 编程问答 >> MSSQL >> 数据库建表疑问,是否要用复合主键?

数据库建表疑问,是否要用复合主键?

来源:网络整理     时间:2018/1/22 6:36:32     关键词:

关于网友提出的“ 数据库建表疑问,是否要用复合主键?”问题疑问,本网通过在网上对“ 数据库建表疑问,是否要用复合主键?”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:

问题: 数据库建表疑问,是否要用复合主键?
描述:

我需要建一张表:

OrderId*  UserId  OrderDate  Total
1          1      2017-1-1  100
2          1      2017-1-1  120
3          9      2017-1-1  20
4          12     2017-1-1  88

一般情况下我们就用OrderId作为主键,查询的时候也是where UserId='x'作为条件查询的。

但是我想知道是否有必要建立这样的结构:

UserId* OrderId*  OrderDate  Total
1          1      2017-1-1  100
1          2      2017-1-1  120
9          3      2017-1-1  20
12         4      2017-1-1  88

同时把UserId和OrderId作为复合主键,当用户1在更新的数据的时候,用户9来查询时能够立即返回结果,而不用等1锁表结束?

是否这样设计在多用户需求的场景下可以划分数据的操作细粒度?

求大神来帮忙,小的感谢!


解决方案1:

不建议在数据库层面加锁,建议通过服务端的内存锁(锁主键)。当某个用户要修改某个id的数据时,把要修改的id存入memcache,若其他用户触发修改此id的数据时,读到memcache有这个id的值时,就阻止那个用户修改。原文详情

解决方案2:

毫无必要,根据主键更新数据只会锁定一行数据,而不是锁定整个表。

解决方案3:

沉下去了呢,没有人搞这个吗?这里难道都是JS专区?


以上介绍了“ 数据库建表疑问,是否要用复合主键?”的问题解答,希望对有需要的网友有所帮助。
本文网址链接:http://www.codes51.com/itwd/4532645.html

相关图片

相关文章