想做一个这样的系统:
一个人周围有10个朋友(第一层)
这10个朋友每人还有10个朋友(第二层)
这朋友的朋友每人还有10个朋友(第三层)
也就是说,我只要认识了10个朋友就相当于认识了1000个朋友
如果我想查找这1000个朋友中有谁会美术(当然,有关键字段),请问数据库该如何设计,以及该怎么查找
我不知道这是树型结构还是网型的,就是说每个人注册后即可以发展自己朋友,如果a是b的朋友,那么b一定是a的朋友......
想了好几天了,问了好多人了,一直不知道.....请问谁能帮助指点一下
:)
一个人周围有10个朋友(第一层)
这10个朋友每人还有10个朋友(第二层)
这朋友的朋友每人还有10个朋友(第三层)
也就是说,我只要认识了10个朋友就相当于认识了1000个朋友
如果我想查找这1000个朋友中有谁会美术(当然,有关键字段),请问数据库该如何设计,以及该怎么查找
我不知道这是树型结构还是网型的,就是说每个人注册后即可以发展自己朋友,如果a是b的朋友,那么b一定是a的朋友......
想了好几天了,问了好多人了,一直不知道.....请问谁能帮助指点一下
:)
解决方案 »
- 请教各位大神,Oracle 11 G,如何导入.dmp的数据文件
- java.sql.SQLException: ORA-02019: 未找到远程数据库的连接说明
- 从一条语句看V$SQLAREA 与V$SESSION的关系
- 请问怎样用Toad显示SQL的执行过程,急~~~~ 请求大家帮忙!
- 大侠们帮帮小妹妹
- 在oracle中当输入的字超过2000字以上插入到数据库中,用什么方法实现的?
- 现遇问题(linux下oracle9i安装)如下,帮偶看看,谢过!!!
- 向oracle 中插入纪录,日期格式由问题,见内
- 如何限制一个表中某一特征记录的行数?
- oracle 对查询结果集循环修改
- oracle存储过程中如何执行操作系统命令
- access中的ole对象对应oracle中的什么类型?
select * from id where id in
(select id from id where id in
(select id from id表 where ref_id = id))
想要几层套几层吧
在ref 表中这样查找的话会一直进行的啊
比如人员表tid包括:
-id -- name -- special
id1, name1, 特长内容1(比如美术,数学)。
id2, name2, 特长内容2(比如数学,画画)
id3, name3, 特长内容3(比如数学,画画)如果1是2的朋友,就向关系表Tref中增加2个记录:
main_id , ref_id
id1, id2
id2, id1
==================
3 是2的朋友增加
id3 id2
id2 id3 然后我们就有了一下的sql语句。以下是会美术的id
select id from tid where substr(special, '美术,') > 0 ;然后找有朋友会美术的就是
select id from Tref
where ref_id in ( 会美术的select语句 )
继续找3层的就是
select id from Tref
where ref_id in ( 有朋友会美术的select语句 )
4层就.......
我开始想的是从单个人先查,也就是先找Tref表,所以一直想不通
呵呵
这样做效率怎么样啊?:)
id
还是关系表是的
main_id or ref_id