-
原子性(atomic):事务执行的不可分割,即一组操作或者全部执行,或者回滚至全不执行。
-
一致性(consistency):事务执行前后,数据库的完整性没有遭到破坏。
-
隔离性(isolation):多个事务对同一数据进行操作时所表现出的相互关系。包括:读未提交,读提交,可重复读,串行化。
-
持久性(durability):事务执行对数据操作的结果被数据库持久、完整地存储在数据库中。
-
主键
-
超键:能够唯一标识一个元组的一组属性。
-
候选键:满足超键约束,且不存在本身的真子集也满足超键约束。可将候选键看做最小超键,主键常从一组候选键中选取一个。
-
外键
-
主键约束:每张 table 应该设置唯一的主键来加以识别。
-
避免重复组:即每个字段应该只保存一个值,且该值确定。因此不建议在一个字段中保存一个字符串,该字符串使用分隔符(如逗号)将多个意义的单词连接,如:"油条,豆浆"。同样不建议将该字段拆分为多个意义相似的字段,如:"最爱食品1,最爱食品2,..."。首先这样无法动态确定该类型字段的数量,其次无法对同一该字段值过滤优化查询。正确的做法是只设一个字段,每个食品对应同一用户作为一条记录,并且用一个主键标识。
-
要求数据表中所有数据和该表主键有完全依赖关系,如果只和部分主键(前提是该表主键是两个或以上字段,单字段主键且符合第一范式的表肯定符合第二范式)有依赖关系,则应将这部分数据抽离出该表设置为新表。
-
一张表符合第二范式,则它必须符合第一范式。
-
符合第二范式可以避免和主键没有依赖关系的数据冗余存储,从而避免将来数据发生变化时需要处理多次修改。
- 所有非键属性都只和候选键有依赖关系,非键属性之间不能有依赖关系。
- 在3NF的基础上,进一步消除了主属性间的传递依赖。