假设我有一个表'User_Friendlist'
列:
'id(Primary Key)', 'User_ID',''Friendlist_IDs'
的值如下:
'1','102','2:15:66:35:26:17:'
'2','114','1:12:63:33:24:16:102'
'3','117','6:24:52:61:23:90:97:118'
.......
.......
“:”是PHP中“爆炸”到数组
时的分隔符这是存储“朋友列表”ID列表的正确方法吗?
或
而不是单个行中只有1个单独的“朋友”ID
和
SELECT * FROM 'User_Friendlist' WHERE 'User_ID = XXX'?
答案 0 :(得分:0)
可能您应该添加一个新表来在不同用户之间建立联接。
所以有两个表:
Users
- id
- user_id
Users_friends
-user_id
- friend_id
然后您的Users_friends看起来像:
Users_friends
===================
user_id | friend_id
-------------------
102 | 2
102 | 15
102 | 66
102 | 35
102 | 26
102 | 17
....
答案 1 :(得分:0)
您应该考虑使用方案。 E.g。
1)您希望以分页方式显示用户的朋友。从表中进行简单的选择需要获取朋友字符串,解析它,获取朋友窗口
2)根据报告制作一些报告 - 其他难看的字符串处理
关系数据库不适合字符串处理,因为它往往非常慢。目标是规范化和基于集合的操作(不是迭代)。
您可以认为任何人都是用户。因此
UserId PK
Username
和友谊是两个用户之间的关系。
FirstUserId FK -> User
SecondUserId FK -> User
PK_Friendship (FirstUserId, SecondUserId)
当您想要添加与友谊相关的内容时,这可以实现自然增长。例如。朋友从 - >开始只是友谊表中的日期/时间字段。
当然,当您想要与朋友相关的信息时,会有更多体面的查询。