目录
一、主外键约束
主键:唯一标识一行,整数类型的主键,常配搭自增长auto_increment来使用
外键:外键用于关联其他表的主键或唯一键
【虽然减少了冗余,但往往带来数据查询的难度】
On update :当更新时 On delete 当删除时
No action = Restrict 限制,不让改,当有外键约束存在时,无法对原字段内容进行更新或删除
Cascade 级联 要改一起改,当有外键约束存在时,原字段内容更新这里也更新,原字段内容删除这里用null代替
set null 将删除/修改的字段东东设为Null
二、范式
超码:实体集中能够唯一标识一个实体的一个或多个属性的集合
候选码:最小超码称为候选码
主码:如果有多个候选码,任选一个作为主码
主属性:包含在候选码中的属性(所有候选码)
非主属性:其他不包含在候选码中的属性
1NF:每个属性对应的域值都是原子的,不可再分的
2NF: 所有非主属性都完全函数依赖于候选码
如:
studentNo,courseNo -> studentname
就不符合2NF,因为有部分函数依赖 studentNo->studentName
3NF:所有非主属性都直接函数依赖于候选码
如:
studentNo->classNo,className,institute
classNo->className,institute
就不符合3NF,因为有传递函数依赖 studentNo->className,institute
三、设计表的参考步骤
表的设计:概念层——》逻辑层
表与表之间通过字段建立联系
1.分析应用的不同角色(如教务系统 老师+学生
2.找出应用的主场景(需求分析)(沟通很重要)
3.以不同角色为时间,写用户故事
4.从用户故事中找实体(判断实体是否需要转换为开发中的类,数据库中的表)
5.E-R图,描述实体,实体与实体之间的关系,转换为表
实体-实体
1:1 关系字段存任意一个表中
1:n 关系字段存多表
m : n 再建一个关系表, 转换为两个1对多关系
6.确定表中的字段,字段类型及约束(主键、外键等)
7.检查表的设计是否合理
- 满足三范式(减少数据冗余)
- 用户故事能否转换为SQL