sql反模式
Jaycekoba
这个作者很懒,什么都没留下…
展开
-
1.逻辑型数据库设计反模式-1.jaywalking乱穿马路(用逗号分割的列表来避免多对多创建交叉表)
一.什么是乱穿马路?例子:学生表(id,name,score),成绩表(id,score),在这种多对多的关系下,为了避免在多对多关系中创建交叉表 用学生表的scoreId 关联该学生的所有的成绩(可能是id,可能是score)使用逗号分隔的存放来解决。二.乱穿马路带来的7个问题又是一个例子:账户和产品的多对多关系。在jaywalking这种反模式中,我们用一个产品对应多个账户,在acc...原创 2018-11-05 20:48:50 · 311 阅读 · 0 评论 -
2.逻辑型数据库设计反模式-单纯的树(有层级的数据存储)
目录:一.邻接表-最方便的设计二.路径枚举-最直观的设计三.嵌套集-最复杂的设计四.闭包表-最通用的设计一.邻接表-最方便的设计添加parent_id来关联父子关系CREATE TABLE Comments ( comment_id SERIAL PRIMARY KEY, parent_id BIGINT UNSIGNED, -- 关键 bug_id ...原创 2018-11-15 14:15:30 · 422 阅读 · 0 评论 -
3.逻辑型数据库设计反模式-需要id(主键id)
目录:一.目标:建立主键规范二.反模式:错误应用主键的情况三.如何识别反模式四.正确使用主键的情况一.目标:建立主键规范[主键的意义何在]主键是数据库确保数据行在整张表唯一性的保障。 它是定位到一条记录并且确保不会重复存储的逻辑机制。主键也同时可以被外键引用来建立表与表之间的关系。二.反模式:错误应用主键的情况通用的设计情况: 主键的列名都叫做Id; 数据类型是32位或...原创 2018-11-21 17:42:11 · 309 阅读 · 0 评论 -
4.逻辑型数据库设计反模式-不用钥匙的入口(外键约束)
目录:一.目标:简化数据库架构二. 反模式:无视约束三.如何识别以及合理使用反模式四.解决方案:声明约束一.目标:简化数据库架构架构层面,保证表的独立性,引用完整性,能兼顾性能是最好的。总的意思就是外键约束少不了的。二. 反模式:无视约束[错误的使用场景]省略外键约束,能让数据库简单,灵活,执行起来更加高效。表关系就要靠逻辑代码来维护了。2.1.用代码来维护外键约束的...原创 2018-11-22 17:54:56 · 126 阅读 · 0 评论