热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

五大约束和三大范式

本文主要介绍关于sql,数据库,sqlserver的知识点,对【五大约束和三大范式】和【三大范式定义】有兴趣的朋友可以看下由【谁是黄黄】投稿的技术文章,希望该技术和经验能帮到你解决你所遇的Msq数据库

本文主要介绍关于sql,数据库,sqlserver的知识点,对【五大约束和三大范式】和【三大范式定义】有兴趣的朋友可以看下由【谁是黄黄】投稿的技术文章,希望该技术和经验能帮到你解决你所遇的Msq数据库相关技术问题。

三大范式定义

一.五大约束(z,w,f,m,w)

记忆方法:
追我费马哇,
主键、唯一、非空、默认、外键
主键、unique、not null、default、外键

1.1 主键约束:唯一主键

1.特点:唯一 非空 一张表中只有一个主键

1.2唯一约束unique

1.关键字 unique

2.特点: 唯一 不能重复 可以为null

3.主键约束与唯一约束的区别
A.主键约束 张表中只能有唯一约束****一张表中可以有
B.主键约束不能为空 唯一约束是可以设置空
C.唯一约束可以设置为联合唯一约束 (多个列组成约束条件)

4.唯一约束两种创建方式
A.创建表的时候设置
B.表创建完成之后设置

a:创建表的时候设置唯一约束
CREATE TABLE p1(
 pid INT(11) PRIMARY KEY AUTO_INCREMENT, 
 pname VARCHAR(20) 	UNIQUE
 );
b:创表之后设置唯一约束
#创建表
CREATE TABLE p1(
 pid INT(11) PRIMARY KEY AUTO_INCREMENT, 
 pname VARCHAR(20) 	
 );

#加主键约束
语法:
alter table 表名 add CONSTRAINT 唯一约束的名称 unique(列名)
#增加唯一约束
 ALTER TABLE p2 ADD CONSTRAINT u_name UNIQUE(pname)

#删除唯一约束
ALTER TABLE p2 DROP INDEX u_name
c 联合唯一约束
CREATE TABLE p3( 
pid INT(11) PRIMARY KEY AUTO_INCREMENT, 
pname VARCHAR(20), 
pwd VARCHAR(20), UNIQUE(pname,pwd) 
);
INSERT INTO p3(pname,pwd)VALUES("毛哥","123");
1.3非空约束not null

1.关键字: not null
2.作用: 插入数据的时候必须插入数据 不能插入 null
3.在创建表的时候进行设置

1.4默认约束default

1.关键字:default
2.作用:用于设置列的默认值
3.在创建表的时候进行设置

4.说明:
A.指定列设置默认约束之后 未插入数据 显示默认值
B.指定列设置默认约束之后 插入 default 也是默认值
C.插入具体的数据时候 才会替换默认值

1.5 外键约束

外键约束用于两张表之间,用来保证关联数据的完整性。
注意:

键关联时要注意的是:
1.外键一定是主表的主键,
2.删除表时要先删子表在删主表。
3.可以强制删除,而不用管约束条件:drop table orders cascade constraint;
4.可以使用级联更新和级联删除,这样在主表中进行更新或者删除操作,子表中的数据也会保证同步更新或者删除

例子:
order表

create table orders(

order_id number(10),

total_price number(10,2),

order_time date,
constraint orders_order_id_pk primary key (order_id)

);

order明细表

create table order_detail(

detail_id number(10),

order_id number(10),//在order表中是主键

item_name varchar2(10),

quantity number(10),

constraint order_detail_detail_id_pk primary key (detail_id),

constraint order_detail_order_id_fk foreign key (order_id) 
referencs orders(order_id)|on delete cascade|on update cascade
 );
二.三大范式 2.1

三大范式也是用于来约束数据库 保证数据的完整性 以及正确性

2.2

A.第一大范式(原子性): 表中的每一列是最小的原子单位 不能进行再拆分
B.第二大范式(依赖性): 一张表必须有一个主键;非主键类必须完全依赖于主键,而不能只依赖主键的一部分
C.第三大范式(): 在遵循前两大范式的基础上 不能出现局部依赖(不能传递依赖) 只能与主键建立依赖关系

本文《五大约束和三大范式》版权归谁是黄黄所有,引用五大约束和三大范式需遵循CC 4.0 BY-SA版权协议。


推荐阅读
  • oracle text db2,从Oracle 到DB2(一)
    在实际的软件项目的开发过程中,特别是在企业的应用系统集成(EAI)项目中广大开发人员经常遇到不同关系型数据库之间的数据移植问题。笔者根据自己在工作中的不同数据库数据移 ... [详细]
  • 如何实现Percona Mysql Galera多读写集群的部署
    本篇文章给大家主要讲的是关于如何实现PerconaMysqlGalera多读写集群的部署的内容,感兴趣的话就一起来看看这篇文章吧,相信看完如何实现PerconaMysq ... [详细]
  • 开发笔记:图书管理系统( JSP + JDBC + Servlet )实现01: 流程分析和数据库建表阶段
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了图书管理系统(JSP+JDBC+Servlet)实现-01:流程分析和数据库建表阶段相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 如何理解MyBatis动态SQL
    本篇内容主要讲解“如何理解MyBatis动态SQL”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何理解M ... [详细]
  • IPVlan 详解
    文章目录简介Ipvlan2同节点Ns互通Ns内与宿主机通信第三种方法Ns到节点外部结论Ipvlan31.同节点Ns互通Ns内与宿主机通信Ns内到外部网络总结源码分析ipvlan收包 ... [详细]
  • 一个不错的JDBC连接池教程(带具体例子)
    1.前言数据库应用,在许多软件系统中经常用到,是开发中大型系统不可缺少的辅助。但如果对数据库资源没有很好地管理(如:没有及时回收数据库的游 ... [详细]
  • 第一部分:TSqlTop有两种用法1,限制查询结果集返回的行数或总行数的百分比。当将TOP与ORDERBY子句结合使用时,结果集限制为前N个已排序行;否则,以未定义的顺序返回前N个 ... [详细]
  • 883.三维形体投影面积
    题目883.三维形体投影面积题目大意在nxn的网格grid中,我们放置了一些与x,y,z三轴对齐的1x1x1立方体。每个值vgri ... [详细]
  • 本文目录一览:1、MySQL创建数据库的命令、创建表的命令、插入语句的命令 ... [详细]
  • ProblemDescription:Readtheprogrambelowcarefullythenanswerthequestion.#pragmacomment(linker ... [详细]
  • mysql相关操作_MySQL之记录相关操作
    一介绍MySQL数据操作:DML在MySQL管理软件中,可以通过SQL语句中的DML语言来实现数据的操作,包括使用INSERT实现数据的插 ... [详细]
  • 前言SQLite(sql)是一款开源轻量级的数据库软件,不需要server,可以集成在其他软件中,非常适合嵌入式系统。Qt5以上版本可以直接使用SQLite(Qt自带驱动)。用法1 ... [详细]
  • SortalinkedlistinO(nlogn)timeusingconstantspacecomplexity.这道题属于人生中第一次对链表进行操作,首先,不同于C++中的st ... [详细]
  • PythonDay3
    #Author:ZhaoBin#实现对Haproxy配置文件的增删改查deffetch(backend):result[]withopen('ha.conf',&# ... [详细]
  • 开发笔记:Spring执行ApplicationEvent事件顺序ServletWebServerInitializedEvent
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了Spring执行ApplicationEvent事件顺序ServletWebServerInitializedEvent相关的知识,希望对你有一 ... [详细]
author-avatar
手机用户2502934787
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有