mysql 10: 数据库设计三范式
作者:互联网
DBA命令
导出数据
- 导出某库
- 在shell窗口:mysqldump database_name > /home/wangxun/mysqlBackUp/database_name.sql -uroot -pXXX;
- 导出某表
- 在shell窗口:mysqldump database_name tb_name > /home/wangxun/mysqlBackUp/tb_name.sql -uroot -pXXX;
导入数据
- create database database_name;
- use database_name;
- source 导出的sql文件;
数据库设计三范式
什么是设计范式?
- 设计表的依据,根据这个三范式规则设计的表,不会出现数据冗余
第一范式
- 任何一张表都要有主键,每个字段具有原子性,不可再分
第二范式
- 在以上范式基础上
- 所有非主键字段完全依赖主键,不要产生部分依赖
- 多对多怎么设计?
- 三张表,关系表里两外键
t_student 学生表 sno(pk) sname ___________________ 1 zs 2 ls 3 wu t_teacher 讲师表 tno(pk) tname _____________________ 1 t_wang 2 t_zhang 3 t_li t_student_teacher_relation 学生讲师关系表 id(pk) sno(fk) tno(fk) _______________________________________ 1 1 1 2 1 2 3 2 2 4 2 3
第三范式
- 以上范式基础上
- 所有非主键字段必须直接依赖主键,不能产生传递依赖
- 一对多怎么设计?
- 两张表,多的表加外键
注意
- 实际开发,以满足客户的需求为主,有时候会拿冗余换执行速度
一对一怎么设计?
方案一:主键共享
t_user_login 用户登陆表
id(pk) username password
___________________________________
1 zs 123
2 ls 456
t_user_detail 用户详细信息表
id(pk + fk) realname tel ....
__________________________________________
1 wangxun xxx
2 han yyy
方案二:外键唯一(多对多的变形)
t_user_login 用户登陆表
id(pk) username password
___________________________________
1 zs 123
2 ls 456
t_user_detail 用户详细信息表
id(pk) realname tel userid(fk + unique) ....
______________________________________________________
1 wangxun xxx 1
2 han yyy 2
标签:10,范式,name,database,id,mysql,pk,主键 来源: https://www.cnblogs.com/nefu-wangxun/p/16532372.html