设计一个朋友表,不知道用下面的方法对不对?

想写一个朋友表,但是一个用户,如果有500个好友,那么,一个人就会在用户表里面有500条数据?那么是不是可以,将一个字段写成String 类型,这里只要增加一名用户或者就是说是朋友,那么这个字段就增加一个朋友的id,这些id用 , 隔开,以后要取出时,就可以取出这些数据,再用 去掉 , 就可以得到朋友的id,再查朋友的列表,数据就会省很多吧?不知道这样的想法对不?。。

不用隔开,用 List -> json

比如 1000,有 1001,1002,1003 三个好友,存储List,将这个list转json字符串,这个json字符串存在数据库,取出时将json字符串转 List,可以很方便的操作,避免多余操作

假设现在要筛选你这里面的男性朋友,你会发现,我的天老爷,这个sql我写不出来

为什么不使用多对多呢,一个人对应多个朋友,多对多不是比这个方便吗?

理论上可行

可以啊,人的属性是name TEXT,id INTEGER, friends TEXT。friends字段就存“[1,2,3,4,5,6]”,用的时候拿数组解出来。

加个中间表就行了,用户表还是用户表,中间表 2个主要字段,user_id,friend_user_id,是否需要其他字段看情况,

你这种思路是可以的,但是不是很推荐,因为这样提升了复杂度,每次进行筛选的时候或者操作时都需要对该字段的String进行维护,而且你的字段长度每超过一个长度时,就会进行一次拓展,这样无形中加大了数据库内存的占用,比如有的朋友id的String超过了你的字段长度,有的没有朋友,这个时候无疑就造成了冗余

可以是可以,但是以后做操作的时候就会很麻烦,很多时候这样做都是无奈之举