java - 好友关系表数据的存储问题,存一条还是两条?
阿神
阿神 2017-04-18 10:33:38
0
7
665

项目中设计好友关系,存储在一张表里面
现有用户id为2和3加为好友
好友关系表:

id user_id friend_id
1 2 3
2 3 2

这两条数据是否是一样的?还是应该存为一条数据?

后续可能还会有权限相关设计
如:

id user_id friend_id 是否允许查看自己的动态 是否查看对方的动态消息
1 2 3
2 3 2

这种情况是存在一张表里面,还是将权限和好友关系分开,单独存一张权限表

阿神
阿神

闭关修行中......

모든 응답(7)
迷茫

친구 관계 테이블에는 2개의 항목을 저장할 수 있습니다. 결국 하나의 항목을 저장하는 것은 직관적이지 않아 user_id가 2인 친구를 쿼리할 수 있습니다select friend_id from table where user_id = 2. 1개 저장하는게 더 귀찮네요, select friend_id from table where user_id = 2 union select user_id from table where friend_id=2. 권한 테이블을 분리해 보겠습니다. 관계 테이블은 관계를 유지하고, 권한 테이블은 권한을 유지합니다. 나중에 다른 권한을 추가해야 할 수도 있고, 한 테이블에 넣으면 분명 문제가 생길 수 있으니 같이 하지 마세요. 적어도 우리가 헤어진다면 그렇게까지 번거롭진 않을 텐데. 수정은 관계 테이블에 영향을 미치지 않습니다

PHPzhong

비즈니스 요구에 따라 더 자세히 설명하는 것이 개인적으로 더 좋다고 생각합니다

左手右手慢动作

이 두 데이터는 귀하가 언급한 후속 요구 사항이 서로 다르다고 생각합니다. ID 1을 가진 사용자는 ID 2를 가진 친구가 한 명 이상 있어야 합니다.
또한 다른 요구 사항은 나중에 실현되지 않습니다. 같이 쓰면 좋아요

Peter_Zhu

제 생각에는 분리가 필요하다고 생각합니다

Peter_Zhu

두 가지 항목입니다.
1. 상대방은 당신의 친구이지만, 당신은 상대방의 친구가 아닐 수도 있습니다.
2. 상대방의 설정이 상대방의 설정과 다를 수 있습니다.

이 두 가지가 필요하다면. 둘, 그 반대인 하나가 필요합니다.

伊谢尔伦

제 경험으로는 2가 더 나은 것 같아요. 첫째, 당신은 내 친구이지만 나는 당신의 친구가 아닐 수도 있습니다. 둘째, 이렇게 친구를 확인하면 너무 편리하지만, 링크 하나만 확인하는 것은 번거롭습니다.

추가로 확장을 고려해보겠습니다. 친구를 블랙리스트로 변경한 후 2개의 항목을 사용하면 쉽게 확장할 수 있습니다. 결국 내가 당신을 차단하면 당신은 나를 차단하지 못할 수도 있습니다.

伊谢尔伦

둘째, 팔로우와 비슷합니다. 팔로우하면 팔로우하지 않을 수도 있습니다.

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿