G**U 发帖数: 180 | 1 userID <-> articleID
n:n mapping
又要支持双向查找
读写都要快
有什么比较好的方案吗? |
ET 发帖数: 10701 | 2 joining table?
【在 G**U 的大作中提到】 : userID <-> articleID : n:n mapping : 又要支持双向查找 : 读写都要快 : 有什么比较好的方案吗?
|
C********g 发帖数: 1548 | 3 may not be a relational database. |
s********r 发帖数: 394 | 4 加个pivot表存储vote,
pk: id
fk: userID
fk: articleID
voteType
这就双向,又支持多种投票了
要是一个用户只能投一票,再把两个foreign key绑起来搞唯一就行了
效率不是这种小查询需要考虑的
★ 发自iPhone App: ChineseWeb 8.7
【在 G**U 的大作中提到】 : userID <-> articleID : n:n mapping : 又要支持双向查找 : 读写都要快 : 有什么比较好的方案吗?
|
N********n 发帖数: 8363 | 5
allow dirty read/write
【在 G**U 的大作中提到】 : userID <-> articleID : n:n mapping : 又要支持双向查找 : 读写都要快 : 有什么比较好的方案吗?
|
f******2 发帖数: 2455 | 6 没看懂, 请教
1、pk:id是指每个vote定义为一个entry嘛?
2、这个设计怎么count一个article的所有upvotes?
【在 s********r 的大作中提到】 : 加个pivot表存储vote, : pk: id : fk: userID : fk: articleID : voteType : 这就双向,又支持多种投票了 : 要是一个用户只能投一票,再把两个foreign key绑起来搞唯一就行了 : 效率不是这种小查询需要考虑的 : : ★ 发自iPhone App: ChineseWeb 8.7
|
s********r 发帖数: 394 | 7 1. 对,这样就可以允许用户反悔,更改投票了
2. 比如upvotes定义为1,downvotes定义为-1,你就select count(*)from votes
where voteType = 1
多对多关系一般都是用pivot table实现
★ 发自iPhone App: ChineseWeb 8.7
【在 f******2 的大作中提到】 : 没看懂, 请教 : 1、pk:id是指每个vote定义为一个entry嘛? : 2、这个设计怎么count一个article的所有upvotes?
|