拼命工作好好玩 2019-06-29
*数据库就是产品的地基,地基打不好,这个产品时刻都有潜在的危险。
一、规范化的目的
二、基本概念
主码:也叫主键,能唯一地确定一条记录;是表中的属性或属性组;(唯一且不可更改【如:身份证号】) 候选码:也叫候选键,可以作为主码的码; 主属性:包含在任一候选键中的属性; 实体:客观存在的可以被描述的事物(用户,课程等)。 例1:设有关系模式SC(Sno,Sname,Cno(课程号),Credit(学分),Grade),其中主键为(Sno,Cno) Sno -> Sname 姓名完全函数依赖于学号; (Sno,Cno)->Sname 姓名部分函数依赖于学号和课程号; (Sno,Cno)-> Grade 成绩完全函数依赖于学号和课程号。 例2:设有关系模式S(Sno,Sname,Sdept(所在系),Dep_master(系主任)),主键为Sno Sno->Sdept 所在系完全函数依赖于学号; Sdept->Dept_master 系主任完全函数依赖于所在系; 因此:Sno->Dept_master 系主任传递函数依赖于学号。
三、主键的选择
1、人工键:实体的非自然属性 2、自然键:实体本身的属性
四、表结构设计的原则
自然二维表
首先,经过一系列对需求的提炼,整理出来的表,称为自然二维表。
第一范式(1NF)
消除自然表中属性的非原子性后,就满足1NF。
第二范式(2NF)
消除非主属性对码的部分函数依赖。
第三范式(3NF)
消除非主属性对码的传递函数依赖。
BC范式*
消除主属性对码的部分和传递函数依赖。
第四范式(4NF)
消除不是由候选码蕴含的非平凡的多值依赖。
第五范式(5NF)
消除不是由候选码蕴含的连接依赖。
五、常见疑虑
1、每个表都可以设置唯一且不可更改的自增id为主键,为什么还要费劲选主键?