mysql数据库面试总结
数据库优化 建表优化 1)数据库范式 l 第一范式(1NF):强调的是列的原子性,即列不能够再分成其他几列。 如电话列可进行拆分---家庭电话、公司电话 l 第二范式(2NF):首先是 1NF,另外包含两部分内容,一是表必须有主键;二是没有包含在主键中的列必须完全依赖于主键,而不能只依赖于主键的一部分。 l 第三范式(3NF):首先是 2NF,另外非主键列必须直接依赖于主键,不能存在传递依赖。 比如 Student 表(学号,姓名,年龄,性别,所在院校,院校地址,院校电话) 这样一个表结构,就存在上述关系。 学号 --> 所在院校 --> ( 院校地址,院校电话 ) 这样的表结构,我们应该拆开来,如下。 (学号,姓名,年龄,性别,所在院校) -- (所在院校,院校地址,院校电话) 满足这些规范的数据库是简洁的、结构明晰的;同时,不会发生插入(insert)、删除(delete)和更新(update)操作异常。 2)数据类型选择 l 数字类型 Float 和 double 选择(尽量选择 float ) 区分开TINYINT / INT / BIGINT,能确定不会使用负数的字段,建议添加 unsigned定义 能够用数字类型的字段尽量选择数字类型而不用字符串类型的 l 字符类型 char,varchar,TEXT的选择:非万不得已不要使用 TEXT 数据类型,定长字段,建议使用