怪僻游戏现在是玩得如火如荼,于是有很多人出来,打算统计这个病毒传播的途径,本来这也算是一桩雅事。只是病毒传播的速度远远超出人们的预料,不用工具是不行了。
为什么要说这个设计愚蠢呢?让我们从头说起吧。
首先明确我们讨论的范畴:如何通过关系型数据库的二维表,保存树状图信息?当然,我们不能仅仅考虑将数据保存起来,还要考虑添加、修改、删除、查询、统计等等工作的方便性与执行效率。而这嵌套集合模型(Nested Set Model)简直可以算是一无是处。
这Mike Hillyer之所以反对之前的邻接列表模型(Adjacency List Model),还是有道理的。因为假设在一个节点信息中,仅仅记录了其父节点的ID号,那么当我们试图查询一个节点的多级子节点集合,或者第N层父节点时,就会非常吃力。面对这样的吃力,一般来说,我们都会对这个模型进行改进,添加一些信息。在我曾经做过的数据库设计中,我至少会添加这样两个字段:
PathInfo varchar(2000)
LastId int
在PathInfo中,我会存放一个路径信息,比如第一级节点,PathInfo即为N,N可以为1~x,第二级节点,PathInfo即为N,M,同上,第三级节点:N,M,L同上。假设有一个节点1,2,1,我们想在这个节点下加一个子节点,那么这个新节点的PathInfo,就应该是1,2,1,1,然后,我们还要将父节点的LastId,从0改变为1,下一次我们想要再增加一个节点的时候,就会计算出PathInfo为1,2,1,2。依此类推。
在我们添加了这两个字段之后,可以很方便的进行各种查询,添加,删除,修改,统计等等操作。再回过头来看这所谓的嵌套集合模型,真是令人吃惊,每次添加一个新的节点,都要同时修改N多个节点的数据,如果运气不好,甚至可能需要修改几乎所有的记录,删除也是一样,而当需要进行各种查询统计操作的时候,依然令人感觉到复杂与效率底下。如果每一个操作,都需要锁定整张表的时候,这样的数据库设计,就是彻底失败的!
大家自己比较比较吧。
分享到:
相关推荐
网吧管理系统数据库设计和相关文档网吧管理系统数据库设计和相关文档网吧管理系统数据库设计和相关文档网吧管理系统数据库设计和相关文档以及相关报表网吧管理系统数据库设计和相关文档网吧管理系统数据库设计和相关...
数据库设计是信息技术领域中极为重要的一环,尤其是在金融行业,其准确性、完整性和安全性的要求尤为严格。本设计文档的描述指出,用户登录信息表、用户账户信息表、退款和交易流水表等是设计的重点内容。标签“银行...
本篇文章将详细介绍一个典型的高校教务管理系统的数据库设计方案,包括需求分析、事务需求分析、概念设计、逻辑设计及物理设计等核心环节。 #### 二、需求分析 需求分析是设计任何信息系统的基础,对于教务管理...
本压缩包“vb6.0数据库实用程序设计100例源代码.rar”包含100个完整的VB数据库应用实例,涵盖了数据库开发的多种技术,对于学习和理解VB数据库编程非常有帮助。 1. **ADO(ActiveX Data Objects)**:VB6.0中常使用...
根据提供的信息,我们可以推断出这是一本关于数据库设计的教程书籍,并且是其第二版。由于具体的页面内容并未给出,我们将基于标题、描述及标签中的信息,对可能涉及的关键知识点进行归纳总结。 ### 数据库设计的...
数据库设计是一个复杂的过程,涉及到对业务需求的分析、实体识别、关系模型的建立、物理设计等步骤。在本文中,我们将讲解一个简单的数据库设计实例,涉及到教学管理系统的设计。 一、需求分析 在设计数据库之前,...
学生选课系统数据库设计是指根据学生选课系统的需求,设计和实施一个高效、可靠的数据库系统,以满足学生选课的需求。该系统涉及到多个方面,包括可行性分析、系统分析、逻辑设计、数据库实现和数据库操作等。 可行...
软件测试是软件开发的最后一步骤,是指根据软件数据库设计报告,测试软件的功能和性能要求。软件测试的目的是确定软件是否满足用户的需求。软件测试的输出是软件测试报告文档模板。 需求分析、概要设计、详细设计和...
软件开发过程中,用于评审数据库设计文档的检查表。
图书馆管理系统数据库设计是一个重要的课程设计任务,旨在让学生掌握计算机管理信息系统设计的基本方法,特别是关系型数据库管理系统的设计与应用。在这一任务中,学生需要完成一个能够处理图书馆日常业务的系统,...
《数据库设计开发规范-阿里.pdf》是一份由阿里巴巴云数据库服务部门编制的技术文档,旨在为数据库设计和开发提供一套全面且规范化的指导原则。该文档涵盖了Oracle和MySQL两大主流数据库系统的具体规范,并针对每种...
本资源为大连理工大学软件学院的数据库设计大作业,背景为某一农产品网上商城系统的数据库设计。该系统有居民、销售商两个身份,他们各自所具有的操作描述如下: 业务规则 1. 角色:销售商操作 * 进入销售管理...
表之间的关联设计是指对数据库中每个表之间的关联关系的设计,包括一对一、一对多、多对多等关联关系。表之间的关联设计需要考虑到多方面的因素,包括系统的功能需求、数据的存储和管理、数据的安全性等。 3.4 存储...
综上所述,一份完善的【数据库设计说明书】涵盖了项目背景、设计原则、结构规划和安全策略等多个方面,是数据库开发的关键文档,对于确保项目成功实施至关重要。在实际工作中,设计师需要根据具体项目的需求,详细...
广东工业大学的数据库课程设计是一项旨在让学生深入理解和应用数据库技术的重要实践环节。在这个过程中,学生将接触到一系列关于数据库设计、管理与优化的知识点,为未来在IT行业中的数据库工作打下坚实基础。 首先...
数据库课程设计:以图书馆管理系统为例,讲解数据库课程设计; 数据库课程设计:以图书馆管理系统为例,讲解数据库课程设计; 数据库课程设计:以图书馆管理系统为例,讲解数据库课程设计; 数据库课程设计:以图书...
第一,作者采用简单易懂的语言,尽量清晰、全面地描述关系数据库设计的整个过程,没有过多专业的术语和复杂的数据库设计方法学,因此《自己动手设计数据库》既适合专业人士参考之用,也适合给初学者、数据库设计爱好...
"电子商务数据库设计C2C"这一主题涵盖了消费者对消费者(Consumer-to-Consumer)交易模式下的数据架构和存储策略。以下是对这个主题的详细阐述: 一、电子商务数据库设计基础 1. 数据模型:在C2C电子商务中,数据...
### 数据库设计典型实例概述 本文将针对八个典型的数据库设计实例进行深入解析,涉及人力资源管理、销售、仓储等多个领域。每个实例都将从实际应用场景出发,详细介绍其设计思路、功能需求和技术实现。 ### 实例1...
该实践性环节对于巩固学生的数据库知识,系统地掌握数据库设计理论与应用,加强学生的实践动手能力和提高学生的综合开发经验十分重要和必要。 本课程分为系统需求分析与数据库设计、应用程序功能设计和系统集成调试...