数据库设计三范式

数据库设计三范式

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

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

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

 

create table StudentCode(

scID int primary key auto_increment,

sCode varchar(18)

);

 

create table Student(

sID int primary key auto_increment,

sName varchar(16),

sAge int,

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

foreign key(scID) references StudentCode(scID)

);

 

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

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

insert into Student values(null,'zs',18,1);

insert into Student values(null,'ls',19,2);

 

Select sname,sage,scode from student,studentcode

Where student.scid=studentcode.scid;

TIPS:

    • 主键列的一列所有数据行,不得为空并且不得相同,并且一张表中最多只有一个主键,万级数据查询有主键速度更快;
    • 标识列的数据类型只能是整型,在MYSQL中必须是主键才能设置;
    • 使用truncate table 表名; 可以删除标识,但是不能加条件,只能删除所有数据;
    • 标识种子:默认标识种子就是1,可以自由指定,插入时指定后续用null即可。只能改一次不能比原来的数据小。
    • 先建主表设置主键列,再建外键表添加外键列;先插入主表数据,再根据主表数据添加外键列数据;先删除外键表数据,再删除主键表数据;
    • 三范式越标准越规范,但是效率越低,一般人为的违背第三大范式只会遵循1、2范式。

    其他规则

    • 字符串的长度一般最优化,然后再为2的N次方;
    • 在写SQL指令时,看看系统大小写,对应大小写,执行速度还要块;
    • 使用关键字: 用定界符 `` ;
    • 数据名、表名一般情况不用复数。比如Student。

     

本文来自投稿,不代表科技代码立场,如若转载,请注明出处https://www.cwhello.com/2924.html

如有侵犯您的合法权益请发邮件951076433@qq.com联系删除

(0)
上一篇 2017年10月21日 14:47
下一篇 2017年10月22日 22:28

相关推荐

  • PHP中的MySQL操作指南。

    PHP是Web开发中最常用的编程语言之一,而MySQL则是最受欢迎的关系型数据库管理系统之一。在Web应用程序开发过程中,PHP的一个主要功能就是与MySQL数据库进行交互,以存储和检索数据。本文将为您提供一个基本的MyS...

    2023年5月23日
    00
  • PHP实现MySQL数据库负载均衡的方法。

    在高并发的情况下,单个服务器无法承受所有的请求,因此需要将请求分散到不同的服务器上进行处理,这就是负载均衡的概念。MySQL作为一种常用的数据库管理系统,也需要负载均衡来提高其性能和可靠性。本文将介绍如...

    2023年5月21日
    05
  • MySQL中如何定位慢查询?

    使用Spring Boot实现分页和排序需要借助Spring Data JPA。Spring Data JPA是Spring Data项目中的一个模块,提供了简化数据访问层的功能,包括分页和排序。  接下来我们通过一段Java代码,展示如何使用Spring Da...

    2023年8月29日
    00
  • (理论篇)温故而知新_PHP入门基础教程

    简单的回顾一下基础知识 1、嵌入方法: 类似ASP的<%,PHP可以是<?php或者是<?,结束符号是?>,当然您也可以自己指定。 2、引用文件: 引用文件的方法有两种:require 及 include。 require 的使用方...

    2016年10月25日
    0688
  • 如何让 Editplus 支持 SQL 语法高亮

    首先新建一个文本文档,并打开它 在打开的文档中添加如下内容:(内容较长,建议复制)   #TITLE=SQL ; SQL syntax file written by xxx #DELIMITER=,(){}[]-+*%/='~!&|<>?:;. #QUOTATION1=' #CON...

    2018年7月19日 MySQL自学教程
    0325
  • PHP实现MySQL主从复制自动切换的方法。

    在现代化的应用架构中,数据库是至关重要的一环,对于高负载和高可用性应用,MySQL主从复制架构是广泛采用的一种解决方案。但是在MySQL主从复制模型下,主节点发生故障后需要手动切换从节点为主节点,这不仅会造...

    2023年5月21日
    04
  • MySQL大表优化方案之引擎优化

    引擎 目前广泛使用的是MyISAM和InnoDB两种引擎: MyISAM MyISAM引擎是MySQL 5.1及之前版本的默认引擎,它的特点是: 不支持行锁,读取时对需要读到的所有表加锁,写入时则对表加排它锁 不支持事务 不支持外键 不...

    2018年3月10日
    0215
  • 宝塔面板mysql数据库无法启动的解决方法。

    今天真的是遇到的大麻烦了。本来想在服务器上再搭建一个网站的,结果不知道弄了哪里,导致了mysql数据库直接无法启动了。网上找遍了所有方法都没有解决。最后还是在一个博客上找到的解决方法。于是记录一下,方便...

    2022年4月26日
    05.9K

联系我们

QQ:951076433

在线咨询:点击这里给我发消息邮件:951076433@qq.com工作时间:周一至周五,9:30-18:30,节假日休息