ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 《SQL反模式》读书笔记

《SQL反模式》读书笔记

原创 Linux操作系统 作者:houxp666 时间:2013-01-21 15:11:57 0 删除 编辑
2013年1月21日 第二章 乱穿马路
       “乱穿马路”是指一个字段,原来设计是只存一个值,后来需要存放多个值,即要存多行,一对一关系修改为一对多关系。用逗号隔开存放多个值是不合适的,问题太多,还是用“交叉表”更好,就是单独创建一个关联关系表。
       角色表和用户表,可能是这个情况,角色和用户是多对多关系,一个角色有多个用户,一个用户有多个角色,就创建一个用户和角色关联的表。
 
1月22日 第三章  单纯的树
        应用场景:
        组织架构图、话题型讨论,这种具有树型关系的结构
        反模式:
        行里存放父节点id。这是最常用的方式,称为邻接表。增加和修改节点方便,但删除节点比较困难。
        可选方案:
        1.路径枚举:类似unix下的路径,给出全路径,层间用符合分离开。
        如下结构:
         1   1/
         2   1/2/
         3   1/2/3/
         2.嵌套集:每一行,存储左节点Id和右节点id。p27页的图更好说明这个结构
         3.闭包表:暂时不理解
         p33有个表,对各种方案的适用情况做了比较:
         设计              表       查询子    查询树    插入     删除     引用完整性
         邻接表          1        简单        困难        简单     简单     是
         递归查询      1        简单        简单        简单     简单     是
         枚举路径      1        简单       简单         简单     简单      否
         嵌套表         1        困难       简单          困难    困难      否
         闭包表         2        简单       简单          简单     简单     是
         好像闭包表是最优方案,各种操作都是简单的,只是要有两个表,但这通常都不是问题。
       

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/263455/viewspace-752986/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: 向OCM进发
请登录后发表评论 登录
全部评论

注册时间:2012-11-24

  • 博文量
    46
  • 访问量
    90421