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/