我正在为我的网站整合朋友系统......
我对mysql表的一个问题是它是如何设置的。
我会为他们添加的每个朋友添加多列,例如freind 1,2,3,4,5等等,该行将是添加它们的用户。
有更好的方法吗?我第一次想到这样做会意味着有人可以拥有的朋友数上限...
答案 0 :(得分:3)
您对多列的建议会违反first normal form。除了人为地限制朋友的数量之外,这种结构既繁琐又低效。
您需要一个包含2列(userid1
,userid2
)且形成复合主键的朋友的联结表。两列都与user
表具有FK关系。
在许多RDBMS中,您还会有一个检查约束userid1 > userid2
,因此关系只能存储在一个表单中,但我相信检查约束是somewhat broken in MySQL。
答案 1 :(得分:2)
您需要一个附加表,其中包含成员拥有的每位朋友的记录。例如:
members (id, name)
friends (member1, member2)