思想:数据库的设计
场景:
笔记:
数据库设计{
需求设计(采用上到下的方式),确定实体和属性
概念结构设计(联系类型,e-R图)
逻辑结构设计(将模型转换成特定的dbms支持的数据模型,设计范式)
物理结构设计
数据库的实施
数据库的运行和维护
}
联系类型{
1:1,A表中一行最多只能匹配B表中的一行,反之亦然
1:n, A中一行可以匹配B中多行,但是B中一行只能匹配A中一行
m:n ,A中一行匹配B中多行,反之亦然
}
E-R图{
矩形框:表示实体
菱形框:表示联系
椭圆型框:表示实体的属性
连线:连接实体和属性,实体和联系(表示联系类型)
}
设计范式{(掌握前三种范式)(主属性就是主键)
第一范式1NF(原子性:属性不可再分割)
第二范式2NF(所有的非主属性必须完全依赖主属性)
第三范式3NF(2NF基础上,所有非主属性不能依赖其他非主属性)
巴斯科德范式BCNF(3NF基础上,非主属性不能依赖于主属性子集)
第四范式4NF(3NF基础上,表中不能包含一个实体的两个或则多个相互独立的多值因子:手机号码,座机号码)
第五范式5NF(完美范式)(在4NF基础上,表必须可以分为较小的表,除非那些表在逻辑上拥有原表相同的主键)
}
学生信息{
学号,姓名,年龄,性别,出生日期,所在班级,班级名称,班级地址,班级编号,课程编号,课程名称,成绩
第一范式:原子性过滤 过滤重复属性
学号 姓名 性别 出生日期 班级名称 班级地址 班级编号 课程编号 课程名称 成绩
第二范式:非主属性必须完全依赖于主属性
学生表:学号 姓名 性别 出生日期 班级名称 班级地址 班级编号 课程编号
课程表:课程编号 课程名称
成绩表:学号 课程编号 成绩
第三范式:非主属性不能依赖于其他非主属性
学生表:<学号> 姓名 性别 出生日期 班级编号 课程编号 (学号是学生表的主键)
课程表:<课程编号>课程名称(课程编号是课程表的外键)
成绩表:<学号 课程编号> 成绩(学号和课程编号是成绩表的外键)
班级表:<班级编号>班级名称 班级地址(班级编号是班级表的外键)
}
物理结构设计{
将逻辑结构实施到具体环境,依赖于给定的DBMS和硬件系统
}
数据库的实施{
根据逻辑结构设计和物理结构设计的结果,建立数据库系统,加载数据,测试,试运行
}
数据库的运行和维护{
改善数据库的性能,维护数据库安全
}
扩展:
代码参考:
#include<iostream>
using namespace std;
int main(){
}