考试网 >> IT认证 >> 水平 >> 软件指导 >> 数据库设计技巧(1 )

数据库设计技巧(1 )

发布时间:2006-06-28 05:11     点击:
分页:上一页  1 2 [3] 4 5 6 7  下一页

  类别3

    类别3.1

    类别3.2

  ……

  看看为了实现这样的列表显示(树的先序遍历),要对上面的表进行多少次检索?注意,尽管类别1.1.1可能是在类别3.2之后添加的记录,答案仍然是N次。这样的效率对于少量的数据没什么影响,但是日后类型扩充到数十条甚至上百条记录后,单单列一次类型就要检索数十次该表,整个程序的运行效率就不敢恭维了。或许第二类程序员会说,那我再建一个临时数组或临时表,专门保存类型表的先序遍历结果,这样只在第一次运行时检索数十次,再次罗列所有的类型关系时就直接读那个临时数组或临时表就行了。其实,用不着再去分配一块新的内存来保存这些数据,只要对数据表进行一定的扩充,再对添加类型的数量进行一下约束就行了,要完成上面的列表只需一次检索就行了。下面是扩充后的数据表结构:

类别表_2(Type_table_2)

名称     类型    约束条件    说明

type_id   int   无重复   类别标识,主键

type_name   char(50) 不允许为空 类型名称,不允许重复

type_father int 不允许为空 该类别的父类别标识,如果是顶节点的话设定为某个唯一值

type_layer char(6) 限定3层,初始值为000000 类别的先序遍历,主要为减少检索数据库的次数

  按照这样的表结构,我们来看看上面例子记录在表中的数据是怎样的:

type_id type_name type_father type_layer

1 总类别 0 000000

2 类别1 1 010000

3 类别1.1 2 010100

4 类别1.2 2 010200

5 类别2 1 020000

6 类别2.1 5 020100

7 类别3 1 030000

8 类别3.1 7 030100

9 类别3.2 7 030200

10 类别1.1.1 3 010101

……

  现在按type_layer的大小来检索一下:SELECT * FROM Type_table_2 ORDER BY type_layer
分页:上一页  1 2 [3] 4 5 6 7  下一页
版权申明:未经书面授权请勿转载本站信息!!作品版权归所属媒体与作者所有!!
发表评论: 匿名发表 用户名: 查看评论
您将承担一切因您的行为、言论而直接或间接导致的民事或刑事法律责任
留言板管理人员有权保留或删除其管辖留言中的任意内容
本站提醒:不要进行人身攻击。谢谢配合。
在本站搜索相关信息
2003-2005 Ksw123.com All Rights Reserved. - TOP
Copyright © 2006 Ksw123.com. All rights reserved.中国考题网 版权所有