PHP-范式

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

概述

范式:Normal Format规定的一种设计方式范式特点:范式有很多,从低级到高级有六级左右,低级往高级一级比一级要求严格。关系型数据库通常设计只需要满足其中一半,满足第三范式即可。满足第三范式必须先满足第二范式,第二范式又必须先满足第一范式。第一范式:1NF数据表的设计的字段中,每个字段都不能再分,每个字段都必须是最小的不可分割的单位(原子性) 讲师代课表 要知...,下方主要介绍关于PHP-范式的全文内容,希望对你有所帮助。

范式:normal Format规定的一种设计方式

范式特点:范式有很多,从低级到高级有六级左右,低级往高级一级比一级要求严格。

关系型数据库通常设计只需要满足其中一半,满足第三范式即可满足第三范式必须先满足第二范式,第二范式又必须先满足第一范式。


第一范式:1NF

数据表的设计的字段中,每个字段都不能再分,每个字段都必须是最小的不可分割的单位(原子性)
讲师代课表

这里写图片描述

要知道每个老师是从哪天开始上课的?
因为代课时间的起始和结束时间都需要单独用来使用,而当前的设计需要将数据进行处理才能实现目的,那么这种设计方式违背了第一范式(原子性)

要满足第一范式,只需要将代课时间分为起始时间和结束时间即可

这里写图片描述

满足第一范式:只要保证字段拿出来可以直接使用而不需要加工即可


第二范式:2NF

一个数据表中的字段只能依赖一张表中的全部主键,而不能够依赖部分主键(主键是复合主键),第二范式的任务就是取消部分依赖。
讲师代课表

这里写图片描述


以上采用复合主键来保证记录的唯一性(讲师和班级)
但是上面有一个问题:教室字段受班级影响,教室字段并不是手整个主键(讲师+班级)的影响,而是受主键的部分(班级)影响,该设计违背了第二范式

解决方案:取消复合主键,额外增加一个逻辑主键(不参与业务处理)

这里写图片描述

满足第二范式:在表中尽量不使用复合主键,使用逻辑主键


第三范式:3NF

在第二范式的前提上,如果在一个表中,出现了的数据会在其他实体(表)中出现,那么该类数据就应该统一拿出来新建一张表来进行维护。如果一个字段,依赖一个表中的飞主键字段,这个时候就称之为传递依赖,就应该将该字段以及依赖的字段取出,重新维护一张表。
讲师代课表

这里写图片描述

上述设计满足第一范式和第二范式,教室依赖班级存在,性别依赖讲师存在,那么就存在传递依赖。
解决方案:将讲师和性别单独拿出来维护一张表,在代表表中使用讲师对应的主键;班级和教室也单独拿出来维护一张表,带课表中使用班级对应的主键。

这里写图片描述

满足第三范式:不同的实体创建不同的表,实体之间有关联的话,增加一个字段保存对应其他实体中记录的主键
满足第三范式主要解决数据冗余的问题

范式是一种规范,但是在数据库的设计的时候,有时候会根据实际的需求,进行适当的数据的冗余,这种设计就称之为逆规范化。
逆规范化:权衡效率和磁盘空间占用问题

具体以后的数据库该怎么设计?
1.要尽量满足三范式
2.考虑实际情况,如果一个字段在一张表的查询过程非常频繁的被使用,那么就可以考虑逆规范化在该使用数据字段对应ID使用使用实际的数据字段代替。

总结

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

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

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

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(未登录情况下会报错) &...
微信公众号搜索 “ 程序精选 ” ,选择关注!
微信公众号搜 "程序精选"关注