电话通讯录数据库结构设计

rockhard 2002-06-05 08:58:02
就象foxmail的通讯录一样:
组内可建组(可建任意层),也可建卡片。如:

同学组:
小学同学组:
张三卡片。
李四卡片。
中学同学组:
王五卡片。
朋友组:
一般朋友组:
社会朋友组:
赵某某。
钱某某。
网友朋友组:
孙某某。
李某某。
好朋友组:
周某某。


设计的数据库结构最好能方便的用树形控件显示,避免使用递归等方式才能较方便的显示。

...全文
399 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
dsd0821 2002-06-05
  • 打赏
  • 举报
回复
使用链表
gzhughie 2002-06-05
  • 打赏
  • 举报
回复
两个表:组表、资料表
组表:组ID,组名,描述,父组ID, 根组ID, 级别,顺序号。
资料表:人员ID,人名,所属组ID,……(根据你的需要添入其他字段)。

其实如果你要的结构只有三层的话,不用这么麻烦,直接定义你要的层次关系就好了,如果具体几层你不能定义的话,你只好设计这样通用的表结构了。如果石油我来写查询语句,我就不用递归的方法,当然如果你从我上面的表结构中看不出其他的查询方法,只能用递归了
gyang 2002-06-05
  • 打赏
  • 举报
回复
<font color='red'>回复</font>
我问一下,如果有两个parent_id=0的组,同时这两个组内都有N个卡片那有什么办法区分这N个卡片是属于哪个上述两相组的哪一个组?
它们的parent_id都是0

parent_id=0的两个组,他们的id是0么??架设他们的id 时1、2,属于他俩的字节点的parent_id为1或2 阿,增么不能区分呢????
gyang 2002-06-05
  • 打赏
  • 举报
回复
Public Function info_tree(Optional ByVal parentNode As Long = 0, Optional ByVal depart As String)
Dim rst As ADODB.Recordset
Dim strSql As String
strSql = "select id,title from yg_net_info where ref_id=" & parentNode & " and INFO_TYPE='class' and depart='" & depart & "' "
Set rst = yg_gain_sql_recordset(strSql)
If (rst.RecordCount) Then
rst.MoveFirst
Do While Not rst.EOF
If (parentNode = 0) Then
TreeView1.Nodes.Add , , yg_getK(rst!id), rst!title
Else
TreeView1.Nodes.Add yg_getK(parentNode), tvwChild, yg_getK(rst!id), rst!title
End If
info_tree rst!id, depart '第归
rst.MoveNext
Loop
End If
yg_free_recordset rst

End Function
rockhard 2002-06-05
  • 打赏
  • 举报
回复
我问一下,如果有两个parent_id=0的组,同时这两个组内都有N个卡片那有什么办法区分这N个卡片是属于哪个上述两相组的哪一个组?
它们的parent_id都是0
gyang 2002-06-05
  • 打赏
  • 举报
回复
在一个标中,删除节电数据也是方变得。
一条语句即可:delete from table_name where id in(select id from table_name start with father_id=xx connect by prior id=parent_id)
gyang 2002-06-05
  • 打赏
  • 举报
回复
肯定性,我经常用的
从parent_id =0 开始,有几个parent_id=0则有几个同学组、朋友组:蛇么的,由他们的id(前面加上一个字母)号作为树形的key,以后不用我说你也明白了吧。
rockhard 2002-06-05
  • 打赏
  • 举报
回复
table_name (id int, //刘水好
name varchar2(100), // 名字火组名
parent_id int, // 傅杰点,对应id
addr varchar2(500) //地址

如为组时,addr为空址

这样的表如果用像windows资源管理器一样的树形结构显示出来恐怕不行,没办法建立结点。
gyang 2002-06-05
  • 打赏
  • 举报
回复
table_name (id int, //刘水好
name varchar2(100), // 名字火组名
parent_id int, // 傅杰点,对应id
addr varchar2(500) //地址

如为组时,addr为空址
gyang 2002-06-05
  • 打赏
  • 举报
回复
太简单
rockhard 2002-06-05
  • 打赏
  • 举报
回复
楼上的办法应该不行的。
bzszp 2002-06-05
  • 打赏
  • 举报
回复
组表:
组号、组名、子组号1、子组号2、子组号3、子组号4、子组号5、子组号6//每一组最多可分六小组(可调整)
详细数据表:
组号、姓名、性别、年龄、通信地址....
按照组号查询相应的详细数据。
rockhard 2002-06-05
  • 打赏
  • 举报
回复
怎么给不了分?
rockhard 2002-06-05
  • 打赏
  • 举报
回复
gzhughie(hughie) 的想法与我基本相同。

结分gyang(杨杨) 40

gzhughie(hughie) 20

2,596

社区成员

发帖
与我相关
我的任务
社区描述
Sybase相关技术讨论区
社区管理员
  • Sybase社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧