#数据库的设计
1.多表之间的关系
*一对一的关系(了解)
例如:人和身份证
实现:
在任意一方添加外键(让外键唯一(unique)),指向另一个表主键(这样的表
一般选择合并成一张表)
*一对多的关系:
例如:部门和员工
实现:在多的一方建立外键,指向唯一的一方的主键(在员工表中设立外键指向部门)
表的主键
*多对多的关系:
例如:学生和课程
实现:
借助第三张表格,成为中间表,这个中间表必须至少包含两个字段,这两个字段
作为第三张表的外键,分别指向两张表的主键
2.数据库设计的范式
范式的概述:在设计数据的时候需要遵循的一些规范
分类:
1.第一范式:每一项都是不可分割的原子数据项
只遵循第一范式存在的问题:
存在非常严重的数据重复
数据添加存在问题
删除数据存在问题
2.第二范式:在1nf的基础上,非码属性必须完全依赖于候选码(消除部分依赖)
函数依赖:通过a(或者属性组)的属性值可以确定唯一b的属性值,
就说b依赖于a
例如:学号依赖姓名 ,学号加课程名称为一个属性组,
可以确定出唯一课程分数属性的值
完全函数依赖:如果a是一个属性组,则b属性值的确定需要
依赖于a属性组中所有属性值
例如:学号加课程名称为一个属性组,
可以确定出唯一课程分数属性的值
部分函数依赖:a是属性组,则b属性的确定只需要依赖于a属性组中某一
些值就可以确定
例如:学号加课程名称为一个属性组,
但是姓名就直接可以用学号确定
传递函数依赖: 如果通过a属性(属性组)的值,可以确定唯一b属性的值
通过b属性(属性组)的值可以确定唯一c
例如:学号可以确定系名,系名可以确定系主任,那么系主任被
学号所依赖
码:如果一个属性或者属性组,被其它所有属性完全依赖,则这个属性
就被成为这个表的码
主属性:码属性中所有属性
非主属性:除码属性组其它属性
问题:数据添加和数据删除依然有问题
3.第三范式:在第二范式的基础上,任何非主属性不依赖与其它非主属性(消除
传递依赖)
3.数据库的备份和还原
*命令行方式:
mysqldump -u用户名 -p密码 > 保存的路径
还原
1.登录数据
2.创建数据库
3.使用数据库
4.source文件路径
*图形化工具