- 1、本文档共17页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
收集常用数据库设计技巧
收集常用数据库设计技巧
一、树型关系的数据表 不少程序员在进行数据库设计的时候都遇到过树型关系的数据,例如常见的类别表,即一个大类,下面有若干个子类,某 些子类又有子类这样的情况。当类别不确定,用户希望可以在任意类别下添加新的子类,或者删除某个类别和其下的所有子类,而且预计以后其数量会逐步增长,此 时我们就会考虑用一个数据表来保存这些数据。按照教科书上的教导,第二类程序员大概会设计出类似这样的数据表结构:
类别表_1(Type_table_1)名称 类型 约束条件 说明type_id int 无重复 类别标识,主键type_name char(50) 不允许为空 类型名称,不允许重复type_father int 不允许为空 该类别的父类别标识,如果是顶节点的话设定为某个唯一值
这样的设计短小精悍,完全满足3NF,而且可以满足用户的所有要求。是不是这样就行呢?答案是NO!Why?
我们来估计一下用户希望如何罗列出这个表的数据的。对用户而言,他当然期望按他所设定的层次关系一次罗列出所有的类别,例如这样:总类别 类别1 类别1.1 类别1.1.1 类别1.2 类别2 类别2.1 类别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_layer1 总类别 0 0000002 类别1 1 0100003 类别1.1 2 0101004 类别1.2 2 0102005 类别2 1 0200006 类别2.1 5 0201007 类别3 1 0300008 类别3.1 7 0301009 类别3.2 7 03020010 类别1.1.1 3 010101……
现在按type_layer的大小来检索一下:SELECT * FROM Type_table_2 ORDER BY type_
您可能关注的文档
- 手语翻译手语.doc
- 手绘画经典《红楼梦》全集.doc
- 手诊与疾病.ppt
- 打工皇帝--唐骏精彩演讲.doc
- 打开IE浏览器,输入网址wwwwuzhouyiyaocom 进入公司网站.doc
- 打工心态害了谁.ppt
- 手诊医学普及课程.ppt
- 打造亮点 彰显办学个性 整合优势 推动特色兴校.doc
- 打开创意局限——广告设计灵感.ppt
- 打造团队精神的三种利器-营销早会晨会培训课件专题.ppt
- 1.4光的传播方向会发生改变吗 课件(共22张PPT+视频)-教科版科学五年级上册29.pptx
- 1.1 走进实验室:学习科学探究教科版八年级上册物理.(共18张PPT).pptx
- 【核心素养目标】1.2.3 器官和系统 教学设计(表格式,任务驱动式) 冀少版生物七年级上册.docx
- 五年级科学下册3.2 玩转电磁铁 (课件15张ppt)(2024年新版).ppt
- Unit 4--5 阶段检测(含答案) 人教版(2024)英语七年级上册.docx
- 2023年-2024年教师资格之中学语文学科知识与教学能力通关考试题库带答案.pdf
- 2023年有关安全生产实施方案范文汇总五篇 .pdf
- 2024届四川省资阳市高中高三上学期第一次诊断性考试英语试题含答案.pdf
- 2023届秦皇岛市卢龙县九年级英语上学期期中质检卷附答案 .pdf
- 2024年射线探伤作业安全管理细则(二篇) .pdf
文档评论(0)