【Mysql】数据库设计三范式,主键表,外键

一、数据库设计三范式

1NF:要求一张表只描述一件事。比如学生表只能保存学生信息,和学生无关的信息不得保存;

2NF:要求保证表中每一行数据的原子性。即表中不得存在完全相同的数据行,存在完全相同的数据行叫数据冗余(或叫数据副本),这是一种错误,要尽量的减少和避免,无法完全完全消除。解决方案主键或标识,一般的是主键配合标识去用的。

3NF:(外键)表中其他的(外)键要依赖于主(键表)(主键)键而存在。

创建school数据库:

drop database if exists school;

Create database school

【Mysql】数据库设计三范式,主键表,外键_第1张图片

 创建主键表:学生的身份证号

Drop table if exists studentCode;

create table StudentCode(

scID int primary key auto_increment,

sCode varchar(18)

);

【Mysql】数据库设计三范式,主键表,外键_第2张图片

 创建学生表:

Drop table if exists student;

create table Student(

sID int primary key auto_increment,

sName varchar(16),

sAge int,

scID int,#外键列数据来自于主键表主键列

foreign key(scID) references StudentCode(scID)

);

【Mysql】数据库设计三范式,主键表,外键_第3张图片

添加主键表数据:

insert into StudentCode values(null,'342426199008121256');

insert into StudentCode values(null,'342426199107125962');

【Mysql】数据库设计三范式,主键表,外键_第4张图片

添加外键表数据:

insert into Student values(null,'zhangsan',26,1);

insert into Student values(null,'lisi',25,2);

【Mysql】数据库设计三范式,主键表,外键_第5张图片


连接两个表,让数据在student表中显示:

Select  sid,sname,sage,scode from student,studentcode

Where student.scid=studentcode.scid;

【Mysql】数据库设计三范式,主键表,外键_第6张图片

 

TIPS:

1、主键列的一列所有数据行,不得为空并且不得相同,并且一张表中最多只有一个主键,万级数据查询有主键速度更快;

2、标识列的数据类型只能是整型,在MYSQL中必须是主键才能设置;

使用truncate table表名; 清空表数据, 但是不能加条件where;

只能删除所有数据;

演示:

【Mysql】数据库设计三范式,主键表,外键_第7张图片

3、标识种子:默认标识种子就是1,可以自由指定,插入时指定后续用null即可。只能改一次不能比原来的数据小。

演示:

【Mysql】数据库设计三范式,主键表,外键_第8张图片


【Mysql】数据库设计三范式,主键表,外键_第9张图片


【Mysql】数据库设计三范式,主键表,外键_第10张图片


【Mysql】数据库设计三范式,主键表,外键_第11张图片


4、先建主表设置主键列,再建外键表添加外键列;先插入主表数据,再根据主表数据添加外键列数据;先删除外键表数据,再删除主键表数据(即先删除表student中的数据,再删除表studentCode中的数据);

5、三范式越标准越规范,但是效率越低,一般人为的违背第三大范式只会遵循12范式。

 

二、其他规则

1、字符串的长度一般最优化,然后再为2N次方;

2、在写SQL指令时,看看系统大小写,对应大小写,执行速度还要块。

3、使用关键字: 要用定界符 ``  ;比如table

【Mysql】数据库设计三范式,主键表,外键_第12张图片 


4、数据名、表名一般情况不用复数。比如Student


 

你可能感兴趣的:(MYSQL,初学PHP)