问题描述
- 好友体系里边的好友怎么存储在数据库呢?
-
自己做一个带有好友体系的软件,数据库中存储一个用户的好友时是用一个字段来存储
该用户的所有好友么?在Java中我用String类型的字段来唯一标记每一个用户,那好友
字段记成String [] ,数据库里咋存呢,varchar类型肯定还得短呢
解决方案
正好拿楼主这个问题说一下数据库设计需要满足的三范式
name friendsName
张三 李四,王五,赵六
类似这样的数据库设计违反了数据库设计的第一范式
数据库设计第一范式是:数据库表中的所有字段值都是不可分解的原子值
改进一下
table_friends
id userId friendId
1 1 2
2 1 3
3 1 4
table_users
id userName
1 张三
2 李四
3 王五
4 赵六
这样搭建数据库的可扩展性最好,万一有2个人叫张三呢,通过id号可以区别,万一张三改名叫张三丰了呢,只用修改table_user的一条记录即可
解决方案二:
数据库用一个字段表示数组,字段类型为文本类型。程序存入数组到数据库的时候,就将String[]里面的数据,拼接成一个字符串在存入到数据库中那个字段就好了!
解决方案三:
直接用一个表存储好友关系 里边有 用户ID,好友ID,如果需要可以再加个这个表的ID
解决方案四:
存放一个用户的好友,这个应该是一个一对多的关系,需要单独建立一个表然后用好友ID,标明相互关系即可
解决方案五:
可以存放好友id,然后用分隔符拼接成字符串等,存入一个数据库字段。如果是nosql数据库 就简单。它本身就支持数组类型。好友列表直接作为用户的一个属性列表
时间: 2024-08-26 10:29:44