mysql优化表

时间:2012-10-22 12:38:47

标签: mysql optimization

我想创建一个朋友系统(类似于facebook)。

我想在MySql中保存关系数据,但我不知道哪种方式更好:

  1. 将everysingle关系保存为单个条目,例如:

    id | people1 | people2
    1  | john    | maria
    2  | john    | fred
    3  | maria   | fred
    

    (我宣布所有这3个人之间的关系)

  2. 保存所有人姓名并列出他的朋友:

    id | people | friends
    1  | fred   | mary, john
    2  | mary   | john, fred
    3  | john   | fred, mary
    
  3. 或许有更好的方法?

2 个答案:

答案 0 :(得分:11)

不,亲爱的,

你只需要一张桌子来建立朋友关系。结构如下我已经使用

id(主键)| my_id(整数记录的用户ID)| friend_id(他将从登录用户收到朋友请求的另一个用户的整数用户ID)

就像我们在users表中有两个用户一样,我们有两个条目让两个用户彼此建立关系

id | name | age
1  | vipan | 12
2  | karan | 12

然后输入

id | my_id | friend_id
 1     1        2
 2     2        1

请不要在任何情况下投票,但我在我的网站使用此表结构,这是在joomsocial中使用的相同结构这是最好的表结构我认为所以我使用它,请不要使用逗号分隔值在表格中,他们会在某些情况下在联接和关系中出现问题

请在以下的职位链接

看4号评语

Separate comma separated values from mysql table

答案 1 :(得分:4)

第一个是最好的,无疑是因为第二个不尊重first normal form

您必须避免在同一列中使用多个值,因为编辑

会非常痛苦

Here是关于数据库规范化的链接。大多数时候,我们尊重第三种正常形式,因为它是规范化和性能之间的良好折衷。

另外,像Randy说的那样,你必须使用ID,这样你才能用外键链接它们。