思想:数据库的设计


场景:


笔记:

数据库设计{

需求设计(采用上到下的方式),确定实体和属性

概念结构设计(联系类型,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(){





}

结语:毛爷爷是我一生的信仰;社会主义是我一生的追求;我是我一生最爱的人。