【发布时间】:2010-02-04 21:52:48
【问题描述】:
我有三个数据库表:users、user_profiles 和 friends:
用户
- 身份证
- 用户名
- 密码
user_profiles
- 身份证
- user_id
- 全名
朋友
- 身份证
- usera_id
- userb_id
查找任何用户的朋友列表并加入表users 和user_profiles 以获取该朋友的个人资料和用户信息的查询是什么?
【问题讨论】:
-
你不需要朋友表中的 'id' 列 - 你只需要对 'usera_id' 和 'userb_id' 组合的唯一约束。
-
将
usera_id和userb_id设为主键(复合/复合)将是理想的选择。 -
也不清楚 user_profiles 中的 'id' 列将用于什么。如果允许一个人(由 users 表中的 id 号标识)拥有多个 user_profile 条目,并且如果有办法确定在任何给定时间要使用这几个 user_profile 条目中的哪一个,那么可能是 user_profiles .id 列将具有一定的相关性。
-
一个检查约束,其中 usera_id
-
@Jonathan Leffler、@OMG Ponies、@KM -- 你假设“朋友链接”是互惠的。仅仅因为 Bob 是 Joe 的朋友,并不一定意味着 Joe 是 Bob 的朋友。这取决于应用程序的设计行为。也许 Joe 取消了 Bob 的好友关系,但是应用程序的要求是不让 Bob 知道他已经取消了好友关系,所以 Bob->Joe 好友关联仍然存在,但没有 Joe->Bob 的情况。