《SQL反模式》读书笔记

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博客 ” ,链接:http://blog.itpub.net/263455/viewspace-752986/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/263455/viewspace-752986/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值