SQL反模式(二)

来源:互联网 发布:张大奕的淘宝店质量 编辑:程序博客网 时间:2024/06/07 18:51

欢迎参考 SQL反模式(前言)的数据库设计

此文章只是给自己做一个小抄,如有冒犯,还忘见谅


1. 需要 ID


如何识别反模式

这里写图片描述
这里写图片描述


目标: 建立规范主键

     主键约束的重要性:     1. 确保一张表中的数据不会出现重复行     2. 在查询中引用单独的一行记录     3. 支持外键     主键的特性:     1. 主键的列名叫 id     2. 数据类型是32 位或者 64 位     3. 主键的值是自动生成来确保唯一的   **学会使用 USING 关键字**,[不可小瞧的using关键字](https://www.cnblogs.com/jianphu/archive/2008/02/06/1065327.html)

解决方案: 裁剪设计

    1. 为主键选择更有意义的名称:一个能够反应这个主键所代表的实体类型的名字。比如:bugs 数据表的主键叫做  **bug_id**    2. 拥抱自然键和组合键

这里写图片描述
这里写图片描述

2. 不用钥匙的入口


反模式

这里写图片描述
这里写图片描述


目标:简化数据库架构

引用完整性  是合理的数据库设计和操作的非常重要的一部分。当一列或者多列声明了外键的约束后,这些列中的数据必须在其父表的主键列或者唯一字段的列中存在。

这里写图片描述


解决方案: 声明约束
这里写图片描述

支持同步修改
这里写图片描述

外键约束的好处
这里写图片描述


3. 实体-属性-值


反模式
这里写图片描述


目标: 支持可变属性


使用泛型表: EAV

这里写图片描述
这里写图片描述
这里写图片描述


模型化子类型

1.单表继承

这里写图片描述
这里写图片描述
这里写图片描述

2.实体表继承

这里写图片描述
这里写图片描述

3.类表继承

这里写图片描述
这里写图片描述

4.半结构化模型

这里写图片描述