作者endl (换行)
看板Database
标题[SQL ] 请教像是「好友名单」该怎麽设计呢?
时间Fri Aug 4 03:10:08 2006
因为专题要用到,这几天开始看资料库的东西
内容大概是指,使用者 Sam 的好友名单中,可能会有 Tom、Mary、Danny
但是 Tom 的好友名单中,不一定会有 Sam
也就是 A 有加入 B 为好友,但 B 不一定会把 A 加入好友
每个使用者除了好友名单外,还会有其他的资料,像是姓名、生日...etc
而我的问题是指在建「好友名单」这块,不知道该怎麽建立会比较好
目前有两个想法,但感觉都不是很好...:(
第一个做法是,每当新增使用者 Sam 时,就顺便建一个 Sam_Friend_List 的 table
而这个 table 只有一个栏位,里面是存 Sam 的好友,内容则只有 Tom、Mary、Danny
或是他们的 key:
+-----------------+ +-----------------+
| Sam_Friend_List | | Tom_Friend_List |
+-----------------+ +-----------------+
| Tom | | Mary |
| Mary | +-----------------+
| Danny |
+-----------------+
第二个想法,是有一个 Friend_List 的 Table,有两个栏位,第一个存 Sam,第二个
存 Tom/Mary/Danny 或是他们的 key 值:
+------+--------+
| user | friend |
+------+--------+
| Sam | Tom |
| Sam | Mary |
| Sam | Danny |
| Tom | Mary |
+------+--------+
请问以上两种,哪种设计会比较好呢?
第一种感觉颇麻烦,每新增使用者就要多一个 Table
第二种鸡蛋放同一个篮子里,而且怕使用者一多,select 起来速度会很慢
或是有什麽更好的做法呢?上 google 不知道要找什麽关键字比较好...:(
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 220.143.219.60
1F:推 ankasc:2的设计比较正常,像是一般对交易档的设计 08/04 13:31
2F:推 endl:谢谢...:) 08/04 16:31