算了,把需求这里帖出来。这里先100分,等下再开个100分的。
------------------------------------------------------------------功能就象qq的加减朋友。有这么一个user表:
id name
------------------------------
1 A
2 B
3 C
4 D
.......有这么一个friend表:
user1 user2
--------------------------
A B
B A
A C
C A
B C
.......他们可以互相加为好友。
例如:当A加B为好友,那么,B可以 1)拒绝、2)接受、3)接受并且加A为好友。
如果选1,那么他们(指A和B)就不是朋友了;在friend表不增加记录;
如果选2,那么B就是A的好友,而A不是B的好友;当然B还可以再加A为好友;在friend表增加一条记录:user1是A,user2是B;
如果选3,那么B不需要等A验证了,他们就互相是朋友关系了;在friend表增加两条记录:user1是A,user2是B;user1是B,user2是A。。这样的话,如果user表有n个用户,如果他们都互相加为好友,
那么,friend表就有n*(n-1)条记录。
如果user表有10000个用户,那么friend表就有10000*(10000-1)=99990000条记录,这肯定不现实。
所以,请教各位,怎么设计 这种需求的关系 ???
谢谢。
------------------------------------------------------------------功能就象qq的加减朋友。有这么一个user表:
id name
------------------------------
1 A
2 B
3 C
4 D
.......有这么一个friend表:
user1 user2
--------------------------
A B
B A
A C
C A
B C
.......他们可以互相加为好友。
例如:当A加B为好友,那么,B可以 1)拒绝、2)接受、3)接受并且加A为好友。
如果选1,那么他们(指A和B)就不是朋友了;在friend表不增加记录;
如果选2,那么B就是A的好友,而A不是B的好友;当然B还可以再加A为好友;在friend表增加一条记录:user1是A,user2是B;
如果选3,那么B不需要等A验证了,他们就互相是朋友关系了;在friend表增加两条记录:user1是A,user2是B;user1是B,user2是A。。这样的话,如果user表有n个用户,如果他们都互相加为好友,
那么,friend表就有n*(n-1)条记录。
如果user表有10000个用户,那么friend表就有10000*(10000-1)=99990000条记录,这肯定不现实。
所以,请教各位,怎么设计 这种需求的关系 ???
谢谢。
我倒觉得friend表应该包涵〔id userAId userBId relationId〕四个段
再新建一张 关系的表(relation),friend就引用用户表和关系表!