*数据库就是产品的地基,地基打很差,这个产品时刻都有潜在的危险。数据库
1、规范化的目的数据库设计
2、基本概念函数
主码:也叫主键,能惟一地肯定一条记录;是表中的属性或属性组;(惟一且不可更改【如:身份证号】) 候选码:也叫候选键,能够做为主码的码; 主属性:包含在任一候选键中的属性; 实体:客观存在的能够被描述的事物(用户,课程等)。 例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 系主任传递函数依赖于学号。
3、主键的选择spa
一、人工键:实体的非天然属性 二、天然键:实体自己的属性
4、表结构设计的原则设计
天然二维表code
首先,通过一系列对需求的提炼,整理出来的表,称为天然二维表。
第一范式(1NF)blog
消除天然表中属性的非原子性后,就知足1NF。
第二范式(2NF)ip
消除非主属性对码的部分函数依赖。
第三范式(3NF)get
消除非主属性对码的传递函数依赖。
BC范式*产品
消除主属性对码的部分和传递函数依赖。
第四范式(4NF)
消除不是由候选码蕴含的非平凡的多值依赖。
第五范式(5NF)
消除不是由候选码蕴含的链接依赖。
5、常见疑虑
一、每一个表均可以设置惟一且不可更改的自增id为主键,为何还要费劲选主键?