PHP-mysql关系

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

概述

自然界中实体与实体之间的联系如何在数据库中进行体现。多对一/一对多1.需求:有一个学生表一张班级表 一个学生只属于一个教室,一个教室却包含多个学生。这种关系就称之为多对一或者一对多的关系 多对多2.需求:有一个教师表和一个学生表 一个学生被多个老师教过,一个老师教过多个学生,这个关系就称之为多对多的关系 一对一3.需求:一个学生信息,有10种信息,其...,下方主要介绍关于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关系所遇到的程序开发问题。

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

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。

PHP文章

laravel5 Blade基本操作 // 区块占位  @yield('name')  // 扩展布局模板  @extends('layout.name')  // 实现命名为 name 的区块(yield&nbs...
Laravel5.4ftp新建多级目录出错ftp新建已存在的目录出异常ftp_mkdir(): /aa: Already exists, failed to create解决方法找到:vendor->league->flysystem->src->Adapter-...
Artisan 基本操作// 针对命令显示帮助信息 php artisan --help OR -h // 抑制输出信息 php artisan --quiet OR -q // 打印 Laravel 的版本信...
这Laravel5.4根据时间格式查询whereDate / whereMonth / whereDay / whereYear该whereDate方法可用于将列的值与日期进行查询: $users = DB::table('users')      &...
laravel5.4 auth logout 用户退出之后的跳转地址设置找到 vendor->laravrl->framework->src->framework->Foundation->Auth->AuthenticatesUsers.php修改160行代码 return redirect('您设置...
PHP Fileinfo extension must be installed/enabled to use Intervention Image 检查php.ini文件 找到   extension=php_fileinfo.dll  将前面的;号去掉,重启apache就可以了
解决laravel5.4 分页缓存public function GetLists( Request $request ) {     $page = $request->input('page')?$request->input('pa...
laravel5 Auth 基本操作// 判断当前用户是否已认证(是否已登录)  Auth::check(); // 获取当前的认证用户  Auth::user(); // 获取当前的认证用户的 ID(未登录情况下会报错) &...
微信公众号搜索 “ 程序精选 ” ,选择关注!
微信公众号搜 "程序精选"关注