ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 6697|回复: 10

[讨论]如何建立树形结构的数据库

[复制链接]

TA的精华主题

TA的得分主题

发表于 2007-6-6 08:13 | 显示全部楼层 |阅读模式
本帖已被收录到知识树中,索引项:

如:张大生了二个儿子,分别是张三,张四.

张三生了二个儿子,分别是张小猫,张小狗.

张四生了二个儿子,分别是张小小,张大大.

张小猫生了二个儿子,分别是...............

(当经历过几十世之后,可能会出现重名的问题,但五代之内是不可能重名的)

有点像,文件夹里的子文件夹,子文件夹内的子子文件夹。。。。。。。。

如何才能做到快速查询.

 

 

[em06][em06][em06]
[此贴子已经被作者于2007-6-6 8:20:34编辑过]

点评

知识树索引内容:9楼  发表于 2013-9-25 10:31

TA的精华主题

TA的得分主题

发表于 2007-6-7 14:11 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2007-6-7 14:52 | 显示全部楼层

粗浅的思路,建立编码,规则和身份证一样比如5组代码相对应五个表,用连接,左连接,右连接把五个表连起来。

一直领会不到索引的含义,似乎很接近彭兄的意思。

TA的精华主题

TA的得分主题

发表于 2007-6-7 15:22 | 显示全部楼层

每行的格式为:

父行号  大哥姓名  大哥儿子的行号    二哥姓名  二哥儿子的行号   三哥姓名  三哥儿子的行号。。。

返回,就返回父行号,再加上自已的行号就能准确找到他爸是谁

向下只需按儿子的行号来找就行了。

TA的精华主题

TA的得分主题

 楼主| 发表于 2007-6-18 08:11 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2013-7-7 23:03 | 显示全部楼层
本帖最后由 yiyiyicz 于 2013-7-8 07:09 编辑

如果说做成数据库,那用XML是不错的选择,楼主数据格式的特殊之处在于是半结构化数据,它和一个标准的考勤表(结构化数据)是不一样的。XML天生就适合描述楼主这样半结构化的数据
但是如果仅仅是楼主在1楼的要求,比较简单就可以实现:

张大生了二个儿子,分别是张三,张四.
张三生了二个儿子,分别是张小猫,张小狗.
张四生了二个儿子,分别是张小小,张大大.
张小猫生了二个儿子,分别是...............
这一段,直接建立一棵XML树就可以了

实现快速查询
比较简单的查询,可以直接用MSXML中方法,如符合条件的结点集合;如指定特定的某一个结点,等等
对于复杂查询,用XPATH多数情况下都能解决

上述两种XML的应用,在添加了MSXML引用后,就可以在VBA编辑器下编写代码了
对更复杂的应用,XML也可以完成。但在VBA环境下实现是不是值,是个问题

TA的精华主题

TA的得分主题

发表于 2013-7-8 07:20 | 显示全部楼层
本帖最后由 yiyiyicz 于 2013-7-8 07:23 编辑
lipton 发表于 2007-6-7 14:52
粗浅的思路,建立编码,规则和身份证一样比如5组代码相对应五个表,用连接,左连接,右连接把五个表连起来。 ...


在XML中,可以用编码快速确定关系。编码是正整数
比如,为了确定张小小与张大是什么关系。在有了编码后,计算张小小编码和张大编码的数量关系,直接就可以确定张小小是张大的孙子,而不需要做一连串的父子关系判断。如张小小是张四的儿子,张四是张大的儿子;所以张小小是张大的孙子
如果张XX是张大的三十四代孙,那么一连串的父子关系将很罗嗦

TA的精华主题

TA的得分主题

发表于 2013-7-8 07:37 | 显示全部楼层
43379677 发表于 2007-6-7 15:22
每行的格式为:父行号  大哥姓名  大哥儿子的行号    二哥姓名   ...

用行号来标识,有个麻烦
以楼主的数据(家谱)与标准考勤表来比较
1,考勤表的格式可以是固定的,也就是列字段可以固定不变,多一个人只要再添一行,整个表格的结构不变
2,家谱则不同。比如现在楼主的家谱中只列出儿子,但当儿子女儿同样要列出时,可就没有考勤表那么容易在二维表中添加了。每个家族成员的子家谱是一串葡萄,而这串葡萄不能随随便便添加到最后,因为放到最后就不能反映父子关系了。必须插在父亲\母亲名下

TA的精华主题

TA的得分主题

发表于 2013-7-8 09:47 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2013-7-8 09:48 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-3-28 18:48 , Processed in 0.056056 second(s), 11 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表