`
superloafer
  • 浏览: 168075 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

遇到的数据库方面的问题

    博客分类:
  • DB
阅读更多
最近项目中的一个表结构是这样的:
CREATE TABLE Category (
  id int(11) NOT NULL,
  name varchar(50) default NULL,
  parent_id int(11) default NULL,
  depth int(11),
  PRIMARY KEY  (id),
  FOREIGN KEY (parent_id) REFERENCES Category(id) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 

目录结构是一个典型的树形结构,而树形结构则会涉及到查找的递归问题。当要查找一个节点下所有的子节点的时候(或一个节点上的所有父节点),所谓“所有”即是从该节点之上或之下的任何节点,并不仅仅是其直接父或子节点,就要递归地往上(往下)查找直到目录树的父节点(叶节点)为止。当树的深度和广度都比较大的时候,这样的查找方式显然是比较费时费力的。其实引起这个问题的根本原因就是“一个节点只知道跟它紧邻节点的信息”。导致“树节点”目光如此短浅的罪魁祸首就是肚里墨水太少,消息闭塞,都是吃了没文化的亏啊!对于这样的一个常见问题有没有一个解决办法呢?比较自然会想到的一个方法就是,大力开展九年义务教育,多教教它族谱之类的,譬如“你现在是搞开发的,你老爹是开快餐店的,当初你爷爷可是拉三轮车的哦,你爷爷他爹还是打铁的呢。咱们的日子真是越过越红火啊!儿za,你可得记住,我们都是党的子孙哟”。要记住这么多东西,不多长个心眼那可不行那,因此得再向上面的表添加一个字段:
CREATE TABLE Category (
  id int(11) NOT NULL,
  name varchar(50) default NULL,
  parent_id int(11) default NULL,
  depth int(11),
  path varchar(500) NOT NULL,
  PRIMARY KEY  (id),
  FOREIGN KEY (parent_id) REFERENCES Category(id) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 

其中path是这样定义的:
1.若为顶级目录,path为null;
2.否则,则为父目录path+'分隔符‘+父节点id(若父目录就是顶级目录则没有分隔符)
好,假如现在有一个搞开发的他想知道解放前他的祖先是干啥的,因为一开始他爹就跟他讲了好多故事,所以他很快就知道他祖先原来是闹革命的,根本就用不着一层一层往上去查。那么,假如一个想知道开理发店的张大胖他有多少后代呢,只要大声喊一句“诶,理发佬张大胖的后代来报道lei!”,下面听到召唤的“刷”地站直了排上队来还以为搞有奖竞猜呢。
sql语句是这样的:
SELECT * FROM Category WHERE path LIKE 'path%’;
分享到:
评论

相关推荐

    有关于java数据库方面的资料

    很好的学习资料有关于java数据库开发方面的资料当你遇到困难的时候可以去查阅

    ORACLE数据库复制

    在很多生产环境中,经常遇到一些大量得数据,这些数据只用作查询统计功能。例如:历史告警,历史性能指标,历史事件,等等。这种数据的特点是:只读不写,数据量相当大,一旦查询大结果集的数据时,对数据库的IO,...

    某学校的题库管理系统数据库系统设计

    本课题的研究内容,预计可能遇到的问题,提出解决问题的方法和措施。...解决问题的方法和措施:参考相关方面的书籍,综合运用data特性,office控件等,通过代码链接到Access数据库!实现两者的互连!

    达梦数据库

    ) 在海量数据分析的应用场景中,经常会遇到以下问题: 大量的读操作需要较高的系统性能支撑; 数据库响应能力受到硬件的束缚; 小型机虽然能在垂直领域提供较好单个节点的性能,但是价格较高; 想防止单点故障的...

    数据库物理设计经验谈

    現实中我们在应用各种不同数据库的时候,往往会忽略数据库的物理布局,只有在数据库性能遇到问题的时候才去考虑,但这是得不偿失的,这样一来不仅会导致与设计相关的问题出现,而且会影响性能的调整效果,所以我们在...

    数据库规范化理论课件

    数据库设计的一个最基本的问题是如何建立一个好的数据库模式,使数据库系统无论是在数据存储方面,还是在数据操纵方面都有较好的性能。针对一个具体问题,应该如何构造一个适合于它的数据模式,即应该构造几个...

    JSP中数据库的连接问题

    但是在实际工作中,软件设计者常遇到数据库连接失败问题。由于设计者对数据库的运行机制认识混淆,使得无法分析出错误的原因。从JSP文件运行的基本环境和参数入手,分析数据库运行的环境和实现数据库操作的语句,...

    安装部署MySQL数据库安装

    【安装部署】MySQL数据库安装 MySQL是一种流行的开源关系型数据库管理系统,广泛应用于网站开发、数据分析等领域。在进行任何与MySQL相关的开发、...希望本文能够帮助您在安装和配置MySQL过程中遇到问题时解决问题。

    东南大学 崇志宏:数据库遇到区块链

    数据库技术从关系模型、逻辑数据库、面向对象数据库发展到结构更加灵活的XML数据库、图数据库和处理大规模大数据的NoSQL,在可扩展性和高吞吐效率方面取得有效成就。同时,区块链技术在去中心化、去信任化方面取得...

    数据库课程设计-高校选课管理系统

    《数据库课程设计——高校选课管理系统》是一个针对本科...学生们将分组进行项目开发,通过实际操作,解决遇到的问题和挑战。他们将学习如何使用数据库管理工具和编程语言,实现一个具有实际应用价值的数据库系统。

    数据库实战的概要介绍与分析

    这些资源涵盖了从数据库设计、优化到实际部署、运维的各个方面,旨在帮助开发者在实际项目中更好地应用数据库技术。 首先,数据库实战资源强调实际操作能力。通过提供丰富的案例分析和实战演练,开发者可以深入了解...

    U3D连接sqlite数据库操作

    1.Demo直接导入即可 2.之前遇到的问题主要是 几个dll文件不正确,语法方面和mysql差不多 3.压缩包是一个查看数据库的工具

    理解ORACLE数据库字符集

    由于oracle字符集种类多,且在存储、检索、迁移oracle数据时多个环节与字符集的设置密切相关,因此在实际的应用中,数据库开发和管理人员经常会遇到有关oracle字符集方面的问题。本文通过以下几个方面阐述,对oracle...

    分布式数据库的设计与实现.doc

    在分布式数据库设计中遇到的最主要的一个问题就是数据同步的问题。由于全局数据库 与各部门的数据交换是双向的,各系部需将更新的数据发送到全局数据库,全局数据库 负责整体协调,要向下属单位下发

    Sql语句50条案例,从创建数据库入门到进阶

    SQL(Structured Query Language)是一种广泛使用的数据库查询和编程语言,...此外,这些案例还将展示如何优化查询性能,处理实际工作中可能遇到的各种数据问题。 总之,这50条SQL语句案例是学习和应用SQL的宝贵资源。

    东南大学 崇志宏:当数据库遇到知识图谱

    在封闭假设下发展的关系数据库系统在吞吐性能、可靠性和可扩展性方面取得重要成就;互联网的开放性和灵活的半结构化数据模型对遵守第三范式的关系数据库系统提出挑战,采用NoSQL实现知识图谱存储的扩展性技术成为...

    asp曲线图表制作带数据库

    在ASP开发系统中,我们会遇到两个比较头痛的问题,一是统计图表的制作.二是精确报表打印. 今天先把 利用OFFICE2003(owc11)制作曲线图表的程序奉献给大家. 网上有很多这方面的图表设计方法和程序,但是很少有带数据库的...

    数据库课程设计感谢信.docx

    老师在数据库设计方面有很多的实践经验,在我们面对问题时对我们的悉心指导及其严谨的工作态度锐意创新的精神,使我们受益匪浅,在此特别向×老师和×老师表示深深的感谢和由衷的敬意。 在系统的完善过程中,我们也...

    数据库系统维保服务与评估.docx

    数据库健康检查主要涉及以下四个方面: 系统和数据库的可用性 系统和数据库的完整性 系统、数据库和应用的性能 系统备份和恢复方案评估 根据用户需求的不同,健康检查服务可能包含以下内容: 1.日志分析 检查并分析...

    数据库设计参考规范.doc

    通常情况下,可以从两个方面来判断数据库是否设计的比较规范。一是看看是否拥 有大量的窄表,二是宽表的数量是否足够的少。若符合这两个条件,则可以说明这个数 据库的规范化水平还是比较高的。当然这是两个...

Global site tag (gtag.js) - Google Analytics