2012-12-01 26 views
0

有人可以告诉我用户注册系统的数据模型哪个用户可以最喜欢的或黑名单(禁止)对方?我正在寻找最好的方式,但没有人回答我的问题,直到now.by最好的方式我的意思是我们有更少的加入编程。用户注册系统的数据模型与黑名单和偏好列表?

我的用户表到现在为止

uid(pk) | name | family | blah blah blah .. 

我只是不知道如何这DESGIN最喜欢和黑名单,我们只是有一个连接还是少了?

我认为它必须是一对多的关系,但我应该如何设计呢?

回答

2

你可以有第二个表列出的黑名单和/或收藏

表 ID(PK)| userid_src(fk)| userid_dst(fk)|键入

如果用户A黑名单用户B,然后用户A收藏用户C和用户B和C的收藏夹彼此你将有这其中A是ID 1,B ID 2和C ID 3

id(pk) | userid_src(fk) | userid_dst(fk) | type 
1  | 1    | 2    | blacklist 
2  | 1    | 3    | favourite 
3  | 2    | 3    | favourite 
4  | 3    | 2    | favourite 

编辑:检索每个用户的信息:

SELECT * from users 
LEFT JOIN users_connections as con ON users.uid = con.userid_src 
LEFT JOIN users as userCon ON userCon.uid = con.userid_dst 
WHERE users.id = XXX 

XXX将是您当前用户的ID。然后,您将检索当前用户与列入黑名单或添加为收藏夹的每个用户之间的每个连接。

+0

是id(pk)自动递增,如果我是正确的?那么,如果我们有10个melyon的用户,每个用户有200人在黑名单和最爱列表中,那么我们有这个id 2000行或更多melyon这是好吗? – HiDd3N

+0

我不知道是否可以取决于您的数据库,您的服务器硬件/配置,但是。 您可以为每个用户的“列表”存储最喜欢的/黑名单的表格,但最终会有数百万张表格。 – koopajah

+0

然后在创建这个之后,我们将usertable与userid_src(fk)上的这个表连接起来,然后我们获取userid_dst(fk),之后我们必须选择每个用户信息,并且这会导致我们进行许多查询,以便从每个用户获取信息 – HiDd3N