PHP-mysql关系

编程之家收集整理的这篇文章主要介绍了PHP-mysql关系编程之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

自然界中实体与实体之间的联系如何在数据库中进行体现。


多对一/一对多

1.需求:一个学生表一张班级表
一个学生只属于一个教室,一个教室却包含多个学生。这种关系就称之为多对一或者一对多的关系

这里写图片描述


多对多

2.需求:一个教师表和一个学生表
一个学生被多个老师教过,一个老师教过多个学生,这个关系就称之为多对多的关系

这里写图片描述


一对一

3.需求:一个学生信息,有10种信息,其中只有5个信息是非常常用的,其他5个信息基本上用不上(婚姻状况,籍贯,国籍)。
一个表中常用的数据和不常用的数据分离开来,分别保存,但是使用同样的id进行管理。

这里写图片描述


外键约束

维护一个学生与班级的关系

这里写图片描述

外键定义:外键就是指的是一个表中某个字段的值指向另外一个表的主键。


增加外键

在一张表中创建一个字段,该字段指向另外一张表的主键。通过一定的约束语句来指明其联系。

外键规则:
1.外键的字段类型与被指向的表的主键的字段类型一致
2.如果想要实现on delete set null,外键字段必须可以为空

1.可以通过在创建表的时候,指定对应的外键
语法:foreign key(当前表中的外键字段) references 外键指向的表(外键指向表的主键);

这里写图片描述

查看表结构

这里写图片描述

查看表创建语句

这里写图片描述

2.修改表的结构增加外键(指定外键名字)
alter table 表名 add constraint 外键名 foreign key(字段) references 父表(主键)
前提:子表中没有父表中不存在的值

这里写图片描述


外键的作用

父表:外键所指向的那张表称之为父表
子表:外键所在的表就是子表

外键的作用主要是用来约束外键所在表的数据的操作以及外键所指向的表的操作

1.一旦一张表有一个外键字段,那么该表外键字段值,就不能是外键所指向的表中的主键的值之外的值

这里写图片描述

2.约束外键所指向的表的操作(父表不能更新和删除

这里写图片描述

实际约束

这里写图片描述

修改外键:外键不能被修改,只能先删除增加


删除外键

一张表中可能存在多个外键,所以在删除外键的时候,必须指定外键名称
语法:alter table 表名 drop foreign key 外键名字

这里写图片描述


修改外键作用

修改外键的约束作用,修改外键对父表的操作约束。
认的,对父表的约束操作是不允许删除和更新。

修改外键对父表的约束
   置空:set null,当父表进行更新或者删除的时候,对应的子表里的数据应该被设置成null
   级联:cascade,当父表进行更新或者删除的时候,对应的子表里的数据应该被删除或者被更新

删除:父表删除有约束记录的时候子表怎么办?
   将子表的外键值设置为null(保证子表的外键字段是允许为空)
  
更新:父表更新有约束记录的时候子表怎么办?
   将子表的外键值,级联更新

增加外键的时候指定约束方式。
on delete set null on update cascade:当父表删除记录时,子表置空,当父表更新记录时子表跟着更新

这里写图片描述

约束效果

这里写图片描述


外键的优缺点

优点:从数据库管理者出发
1.能够保证数据的一致性(父表修改之后,子表跟着修改
2.保证数据的安全性(不允许在子表中增加父表中不存在的值)
3.将表与表之间的关心进行了关联(体现了关系型数据库

从开发者出发
4.增加了维护的难度

实际开发中,一般会使用外键字段,但是不使用外键约束。通过程序来实现表与表之间的关系维护。

外键:更新班级id,对应的学生的班级id也改变

不使用外键:更新班级ID,得到新的班级id和旧的班级id,通过旧的班级id去修改学生的班级id为新的。

外键作用简析

这里写图片描述

总结

以上是编程之家为你收集整理的PHP-mysql关系全部内容,希望文章能够帮你解决PHP-mysql关系所遇到的程序开发问题。

如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您喜欢寻找一群志同道合、互帮互助的学习伙伴,可以点击下方链接加入:
编程之家官方1群
编程之家官方2群
编程之家官方3群
编程之家官方4群

相关文章

猜你在找的PHP相关文章

字符串函数 strlen:获取字符串的长度,获取的是字符串的字节长度 字符:一个完整的符号,a,中 字节:由8位组成 一个字符最少等于一个字节:ASCII码,a,b,通常英文字符都是占用一个字节 中文在gbk或者gb2312编码里,占用两个字节 中文在utf-8里最少占用3个字节,有可能是4个字节 substr:截取字符串,以字节为单位截取 string sub...
1.什么php? 一种服务器端的 HTML 脚本/编程语言,是一种简单的、面向对象的、解释型的、健壮的、安全的、性能非常之高的、独立于架构的、可移植的、动态的脚本语言。是一种广泛用于 Open Source(开放源代码)的尤其适合 Web 开发并可以嵌入 HTML 的多用途脚本语言。它的语法接近 C,Java 和 Perl,而且容易学习。该语言让 Web 开发人员快速的书写动态生成的网页。P...
范式:Normal Format规定的一种设计方式范式特点:范式有很多,从低级到高级有六级左右,低级往高级一级比一级要求严格。关系型数据库通常设计只需要满足其中一半,满足第三范式即可。满足第三范式必须先满足第二范式,第二范式又必须先满足第一范式。第一范式:1NF数据表的设计的字段中,每个字段都不能再分,每个字段都必须是最小的不可分割的单位(原子性) 讲师代课表 要知...
自然界中实体与实体之间的联系如何在数据库中进行体现。多对一/一对多1.需求:有一个学生表一张班级表 一个学生只属于一个教室,一个教室却包含多个学生。这种关系就称之为多对一或者一对多的关系 多对多2.需求:有一个教师表和一个学生表 一个学生被多个老师教过,一个老师教过多个学生,这个关系就称之为多对多的关系 一对一3.需求:一个学生信息,有10种信息,其...
mysql中也分为三大数据类型:数值型,字符型,时间日期型 数值型数值型分为整数型和小数型(包含小数部分的数据类型)整型mysql中光整数型数据类型就有五种:tinyint,smallint,mediumint,int,bigint tinyint:迷你整型,占用1个字节保存数据,能够表示256个数值 smallint:小整型,占用2个字节保存数据,能够表示6...
存储引擎:处理和保存数据的方式。主要存储引擎是InnoDB和Myisam InnoDB:会创建一个结构文件,数据和索引都放在ibdata1文件里 Myisam:创建三个文件,结构,索引和数据mysql存储引擎 引擎因为费用的问题分为两类 免费:InnoDB和Myisam都是免费 收费:BDB,memory,archive都是收费 Myisam与I...
1.mytable1存储的数据是utf8字符集(在创建表的时候,指定了表的数据存储字符集为utf8)2.cmd控制台只能是gbk格式的数据:说明cmd下只能输入和显示gbk格式的数据3.set names gbk的功能 客户端与服务端进行不同编码的通信的原理 了解数据库的字符集 查看数据库支持哪些字符集?show character set; mysql支持39种字...
数据库词汇数据:data,凡是能携带信息的媒介都是数据 硬盘数据:保存在磁盘中,以二进制形式保存 内存数据:运行在内存中 数据库:Database,高效存储和处理数据的媒介(凡是存放数据的地方都可以称之为数据库),数据库分为两大阵营:关系型数据库,非关系型数据库。 数据库系统:Database System = DBMS +DB,DBMS(Database Manage...
微信公众号搜索 “ 程序精选 ” ,选择关注!
微信公众号搜 "程序精选"关注