MySQL系列数据库设计三范式教程示例
目录
- 一、数据库设计三范式相关知识说明
- 1、什么是设计范式?
- 2、为什么要学习数据库的三个范式?
- 3、三范式都有哪些?
- 二、数据库表的经典设计方案
- 一对一怎么设计?
一、数据库设计三范式相关知识说明
1、什么是设计范式?
设计表的依据,按照这三个范式设计出来的表,不会出现数据的冗余。
2、为什么要学习数据库的三个范式?
数据库的设计范式是数据库设计所需要满足的规范,满足这些规范的数据库是简洁的、结构明晰的,同时,不会发生插入(insert)、删除(delete)和更新(update)操作异常。反之则是乱七八糟,不仅给数据库的编程人员制造麻烦,而且面目可憎,可能存储了大量不需要的冗余信息。
我们数据分析师虽然不需要自己去设计数据库,但是了解数据库的三个范式,对于我们后面进行表的理解能够有一定的帮助。
3、三范式都有哪些?
1)第一范式:任何一张表都应该有主键,并且每一个字段原子性不可再分。
2)第二范式:建立在第一范式基础上的,另外要求所有非主键字段完全依赖主键,不能 产生部分依赖。
解决办法:多对多,三张表,关系表两个外键。
3)第三范式:建立在第二范式的基础之上,所有非主键字段直接依赖主键,不能产生传递依赖。
解决办法:一对多,两张表,多的表加外键。
注意:牢记上述蓝色部分的两句话。
提醒:在实际的开发中,以满足客户的需求为主,有的时候会拿冗余换执行速度。
二、数据库表的经典设计方案
一对一怎么设计?
第一种方案:主键共享
第二种方案:外键唯一
注意:外键唯一这种情况,有点像上面讲述的多对多的情形,当外键字段加了一个
unique限制条件后,就变成一对一了。
以上就是MySQL系列数据库设计三范式教程示例的详细内容,更多关于MySQL数据库设计三范式的资料请关注我们其它相关文章!
相关推荐
-
数据库设计三大范式简析
为了建立冗余较小.结构合理的数据库,设计数据库时必须遵循一定的规则.在关系型数据库中这种规则就称为范式.范式是符合某一种设计要求的总结.要想设计一个结构合理的关系型数据库,必须满足一定的范式. 在实际开发中最为常见的设计范式有三个: 1.第一范式(确保每列保持原子性) 第一范式是最基本的范式.如果数据库表中的所有字段值都是不可分解的原子值,就说明该数据库表满足了第一范式. 第一范式的合理遵循需要根据系统的实际需求来定.比如某些数据库系统中需要用到"地址"这个属性,本来直接将
-
详解MySQL 数据库范式
前言: 关于数据库范式,时常有听说过,一直没有详细去了解.一般数据库书籍或数据库课程会介绍范式相关内容,范式也经常出现在数据库考试题目中.不清楚你是否对范式有比较清晰的了解呢?本篇文章我们一起来学习下数据库范式吧. 1.数据库范式简介 为了建立冗余较小.结构合理的数据库,设计数据库时必须遵循一定的规则.在关系型数据库中这种规则就称为范式.范式是符合某一种设计要求的总结.要想设计一个结构合理的关系型数据库,必须满足一定的范式. 范式的英文名称是 Normal Form ,简称 NF .它是英国人
-
数据库建表设计六范式介绍
目录 前言 1.第一范式(1NF)无重复的列(确保每列保持原子性) 2.第二范式(2NF)属性完全依赖于主键 (消除部分子函数依赖,确保表中的每列都和主键相关) 3.第三范式(3NF)属性不依赖于其它非主属性 (消除传递依赖,确保每列都和主键列直接相关,而不是间接相关) 4.BCNF 鲍依斯-科得范式 (针对某一列与复合主键中的某一列有关,而与其他主键无关) 5.4NF(第四范式) 6.5NF(第五范式) 前言 数据库设计六范式 为了建立冗余较小.结构合理的数据库,设计数据库时必须遵循一定的规则
-
Mysql数据库设计三范式实例解析
三范式 1NF:字段不可分; 2NF:有主键,非主键字段依赖主键; 3NF:非主键字段不能相互依赖; 解释: 1NF:原子性 字段不可再分,否则就不是关系数据库; 2NF:唯一性 一个表只说明一个事物; 3NF:每列都与主键有直接关系,不存在传递依赖; 第一范式(1NF) 即表的列的具有原子性,不可再分解,即列的信息,不能分解, 只要数据库是关系型数据库(mysql/oracle/db2/informix/sysbase/sql server),就自动的满足1NF.数据库表的每一列都是不可分割的
-
MySQL系列数据库设计三范式教程示例
目录 一.数据库设计三范式相关知识说明 1.什么是设计范式? 2.为什么要学习数据库的三个范式? 3.三范式都有哪些? 二.数据库表的经典设计方案 一对一怎么设计? 一.数据库设计三范式相关知识说明 1.什么是设计范式? 设计表的依据,按照这三个范式设计出来的表,不会出现数据的冗余. 2.为什么要学习数据库的三个范式? 数据库的设计范式是数据库设计所需要满足的规范,满足这些规范的数据库是简洁的.结构明晰的,同时,不会发生插入(insert).删除(delete)和更新(update)操作异常.反
-
数据库设计的折衷方法
作项目分析,数据库设计是一个很重要也很难的问题, 完全按照范式有可能不符合用户需求,不利于编程, 看来是具体问题具体分析,数据库设计是范式和需求的折中. 在上学时,没觉得数据类型有多重要,现在发觉了解数据类型 的具体内容也是很重要的,可以知道不同数据库之间的兼容问题 该怎么处理. 数据库设计技巧: 第2 部分- 设计表和字段 1. 检查各种变化 我在设计数据库的时候会考虑到哪些数据字段将来可能会发生变更.比方说,姓氏就是如此(注 意是西方人的姓氏,比如女性结婚后从夫姓等).所以,在建立系统存储客
-
MySQL系列教程小白数据库基础
目录 1.基础概念与基础命令 1)基础概念 2)基础命令 2.SQL语句的书写顺序和执行顺序 1)一个完整SQL查询语句的书写顺序 2)一个完整的SQL语句执行顺序 3)关于select和having执行顺序谁前谁后的说明 这里介绍的MySQL相关知识,并不是针对那些想学习DBA的同学,而是针对那些想转行.从事数据分析行业的同学. 下面这些知识点,是我学习MySQL数据库时,觉得有必要掌握的一些知识点. 1.基础概念与基础命令 1)基础概念 ① 数据库 按照一定数据结构,存储和管理数据的仓库.
-
MySQL系列多表连接查询92及99语法示例详解教程
目录 1.笛卡尔积现象 2.连接查询知识点概括 1)什么是连接查询? 2)连接查询的分类 3.内连接讲解 1)等值连接:最大特点是,连接条件为等量关系. 2)sql92语法和sql99语法的区别. 3)非等值连接:最大特点是,连接条件为非等量关系. 4)自连接:最大特点是,一张表看作两张表. 4.外连接讲解 1)什么是外连接,和内连接有什么区别? 2)外连接的分类 前面两天带着大家换了一个口味,带着大家学习了pyecharts的原理和部分图形制作.今天我们继续回归带你学MySQL系列,带着大家继
-
Mysql数据库中数据表的优化、外键与三范式用法实例分析
本文实例讲述了Mysql数据库中数据表的优化.外键与三范式用法.分享给大家供大家参考,具体如下: 数据表优化 将商品信息表进行优化 1.创建商品种类表: create table if not exists goods_cates( id int unsigned primary key auto_increment, name varchar(40) not null ); 2.将商品种类写入商品种类表中: 注意:插入另一个表的查询结果不需要加values insert into goods_
-
MySQL系列之开篇 MySQL关系型数据库基础概念
目录 一.基础概念 二.数据库管理技术的发展 三.关系型数据库(RDBMS)概念 四.RDBMS设计范式 一.基础概念 数据(Data)是描述事物的符号记录,是指利用物理符号记录下来的.可以鉴别的信息. 1.数据库(Database,DB)是指长期储存在计算机中的有组织的.可共享的数据集合.数据要按照一定的数据模型组织.描述和存储,具有较小的冗余度.较高的数据独立性,系统易于扩展,并可以被多个用户分享. 数据的三个基本特点: 永久存储 有组织 可共享 2.数据库管理系统(DBMS)是专门用于建立
-
PHP连接MySQL数据库的三种方式实例分析【mysql、mysqli、pdo】
本文实例讲述了PHP连接MySQL数据库的三种方式.分享给大家供大家参考,具体如下: PHP与MySQL的连接有三种API接口,分别是:PHP的MySQL扩展 .PHP的mysqli扩展 .PHP数据对象(PDO) ,下面针对以上三种连接方式做下总结,以备在不同场景下选出最优方案. PHP的MySQL扩展是设计开发允许php应用与MySQL数据库交互的早期扩展.MySQL扩展提供了一个面向过程的接口,并且是针对MySQL4.1.3或者更早版本设计的.因此这个扩展虽然可以与MySQL4.1.3或更
随机推荐
- ext中store.load跟store.reload的区别示例介绍
- PHP CURL CURLOPT参数说明(curl_setopt)
- SQL中字符串中包含字符的判断方法
- jQuery取得iframe中元素的常用方法详解
- 探索ORACLE之ASM概念(完整版)
- Python中的模块和包概念介绍
- 简单的js分页脚本
- IE下通过JS控制剪贴板的代码
- phpexcel导入excel数据使用方法实例
- laravel创建类似ThinPHP中functions.php的全局函数
- PHP入门速成(2)
- python求素数示例分享
- Android实现微信朋友圈发本地视频功能
- 变量在 PHP7 内部的实现(二)
- 让程序员都费解的10大编程语言特性
- JSP中实现判断客户端手机类型并跳转到app下载页面
- Ruby中任务构建工具rake的入门学习教程
- jquery.fastLiveFilter.js实现输入自动过滤的方法
- jQuery插件HighCharts绘制2D饼图效果示例【附demo源码下载】
- 懒加载实现的分页&&网站footer自适应