ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

mysql 10: 数据库设计三范式

2022-07-29 15:31:30  阅读:184  来源: 互联网

标签:10 范式 name database id mysql pk 主键


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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有