1, 什么是三大范式
第一范式: 没有重复列.
员工信息表的每一行只表示一个员工的信 息,一个员工的信息在表中只出现一次。简而言之,第一范式就是无重复的列。
第二范式: 实体的属性完全依赖于关键字.
第二范式(2NF)要求数据库表中的每个实例或行必须可以被惟一地区分。为实现区分通常需要为表加上一个列,以存储各个实例的惟一标识。
第三范式: 属性不依赖于其他非主属性
存在一个部门信息表,其中每个部门有部门编号(dept_id)、部门名称、部门简介等信息。那么在员工信息 表中列出部门编号后就不能再将部门名称、部门简介等与部门有关的信息再加入员工信息表中
2, 简述索引
索引分为聚集索引和非聚集索引.
聚集索引: 按照物理顺序排序,只可以包含一个聚集索引,放在一个不常更新的列上.
非聚集索引: 存储的不是数据本身,而是一个指针,可以存在多个非聚集.
索引设计效能: 使用低维护列,防止包含过多的列,不为记录较少的表加索引.
3, 事务的4个特性
原子,一致,隔离,持久.
4, 触发器
分为DML触发器和DDL触发器.
DML作用于insert和update等,分为after和instead of,一个是insert之后执行,一个是之前执行.
DDL作用于create drop等.
数据库设计的一些优化:
表的优化:
数据行的长度不要超过8020字节。
尽量用int
char varchar的选择
字段尽量设置的短一些
查询的优化:
不使用*
避免在where后使用null
避免使用or,使用union all
避免使用in,导致无法使用索引
避免对数据库字段使用表达式
验证是否存在的时候,避免使用count(*),使用exist
使用视图加速查询