Skip to content

Files

Latest commit

f18e5c8 · Feb 5, 2015

History

History
46 lines (23 loc) · 2.2 KB

db_basic.md

File metadata and controls

46 lines (23 loc) · 2.2 KB

数据库基础知识

ACID

  • 原子性(atomic):事务执行的不可分割,即一组操作或者全部执行,或者回滚至全不执行。

  • 一致性(consistency):事务执行前后,数据库的完整性没有遭到破坏。

  • 隔离性(isolation):多个事务对同一数据进行操作时所表现出的相互关系。包括:读未提交,读提交,可重复读,串行化。

  • 持久性(durability):事务执行对数据操作的结果被数据库持久、完整地存储在数据库中。

关系键

  • 主键

  • 超键:能够唯一标识一个元组的一组属性。

  • 候选键:满足超键约束,且不存在本身的真子集也满足超键约束。可将候选键看做最小超键,主键常从一组候选键中选取一个。

  • 外键

范式

第一范式 1NF

  • 主键约束:每张 table 应该设置唯一的主键来加以识别。

  • 避免重复组:即每个字段应该只保存一个值,且该值确定。因此不建议在一个字段中保存一个字符串,该字符串使用分隔符(如逗号)将多个意义的单词连接,如:"油条,豆浆"。同样不建议将该字段拆分为多个意义相似的字段,如:"最爱食品1,最爱食品2,..."。首先这样无法动态确定该类型字段的数量,其次无法对同一该字段值过滤优化查询。正确的做法是只设一个字段,每个食品对应同一用户作为一条记录,并且用一个主键标识。

第二范式 2NF

  • 要求数据表中所有数据和该表主键有完全依赖关系,如果只和部分主键(前提是该表主键是两个或以上字段,单字段主键且符合第一范式的表肯定符合第二范式)有依赖关系,则应将这部分数据抽离出该表设置为新表。

  • 一张表符合第二范式,则它必须符合第一范式。

  • 符合第二范式可以避免和主键没有依赖关系的数据冗余存储,从而避免将来数据发生变化时需要处理多次修改。

第三范式 3NF

  • 所有非键属性都只和候选键有依赖关系,非键属性之间不能有依赖关系。

BC 范式 BCNF

  • 在3NF的基础上,进一步消除了主属性间的传递依赖。