MYSQL中什么是规范化_数据库设计 - 什么是规范化(或规范化)?
规范化基本上是设计数据库模式,以避免重复和冗余数据。 如果某些数据在数据库中的多个位置重复,则存在在一个位置而不是另一个位置更新的风险,从而导致数据损坏。
从正常形式到正常形式有许多归一化水平。 每种常规形式都描述了如何摆脱一些通常与冗余相关的特定问题。
一些典型的规范化错误:
(1)在单元格中具有多个值。 例:
UserId | Car
---------------------
1 | Toyota
2 | Ford,Cadillac
这里“Car”列(它是一个字符串)有几个值。 这冒犯了第一个正常形式,即每个单元格应该只有一个值。 我们可以通过每辆车单独一行来规范化这个问题:
UserId | Car
---------------------
1 | Toyota
2 | Ford
2 | Cadillac
在一个单元格中具有多个值的问题在于,更新是棘手的,查询很棘手,并且您无法应用索引,约束等。
(2)具有冗余的非密钥数据(即,在多行中不必要地重复数据)。 例:
UserId | UserName | Car
-----------------------
1 | John | Toyota
2 | Sue | Ford
2 | Sue | Cadillac
此设计是一个问题,因为每个列都重复名称,即使名称始终由UserId确定。 这使得理论上可以在一行而不是另一行中更改Sue的名称,这是数据损坏。 通过将表拆分为两个并创建主键/外键关系来解决此问题:
UserId(FK) | Car UserId(PK) | UserName
--------------------- -----------------
1 | Toyota 1 | John
2 | Ford 2 | Sue
2 | Cadillac
现在看起来我们仍然有冗余数据,因为UserId是重复的; 但是,PK / FK约束可确保不能单独更新值,因此完整性是安全的。
那很重要么? 是的,这非常重要。 通过使数据库具有规范化错误,您可以避免将无效或损坏的数据导入数据库。 由于数据“永远存在”,因此在首次进入数据库时很难摆脱损坏的数据。
不要害怕正常化。 标准化水平的官方技术定义非常钝。 这听起来像归一化是一个复杂的数学过程。 但是,规范化基本上只是常识,你会发现如果你使用常识设计数据库模式,它通常会被完全规范化。
规范化存在许多误解:
有些人认为规范化数据库较慢,而非规范化可以提高性能。 但这只适用于非常特殊的情况。 通常,规范化数据库也是最快的。
有时归一化被描述为一个渐进的设计过程,你必须决定“何时停止”。 但实际上,标准化水平只描述了不同的具体问题。 正常形式在第3 NF以上解决的问题首先是非常罕见的问题,因此您的架构可能已经在5NF。
它适用于数据库之外的任何内容吗? 不直接,没有。 规范化的原则对于关系数据库非常具体。 但是,一般的基本主题 - 如果不同的实例可能不同步,您不应该有重复的数据 - 可以广泛应用。 这基本上就是DRY原则。
MYSQL中什么是规范化_数据库设计 - 什么是规范化(或规范化)?相关推荐
- mysql视图和中间表_数据库设计中的14个技巧
时 间:2006-09-15 00:00:00 作 者: 摘 要:数据库设计中的14个技巧 正 文: 1. 原始单据与实体之间的关系 可以是一对一.一对多.多对多的关系.在一般情况下,它们是一对一的关 ...
- mysql中ak替换键_数据库:唯一性约束_alternate key(替换键) mySQL Oracle 数据库 ak 唯一性约束...
数据库:唯一性约束_alternate key(替换键) mySQL Oracle 数据库 ak 唯一性约束 数据库:唯一性约束 所谓唯一性约束(unique constraint)不过是数据表内替代 ...
- MySQL中地点的数据类型_数据库中地址的数据类型
数据库中用什么数据类型存储电话号码比较合理? 因为涉及到固定电话,所以一般用varchar2 ,单纯手机号码的话可以用number. 数据类型分类: 数字型- Integer(整型).Long(长整型 ...
- mysql中 视图的优缺点_数据库视图优缺点分析
视图作用是什么 所谓视图(View)其实是执行查询语句后得到的结果,但这个查询结果可以仿真成数据表来使用,所以有人也称它为"虚拟数据表",视图在操作上和数据表没有什么区别,但两者的 ...
- mysql中char存储中文_数据库中的字符类型存储字符和汉字的数量
sqlServer2012(936 简体中文GBK )为例: 例如: varchar(10),只能存储10个英文字符或数字,也只能存储5个汉字: char(10),只能存储10个英文字符或数字,也只能 ...
- mysql中id是什么_数据库中的id是什么
{"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],&q ...
- mysql 中default什么意思_数据库中default的用法正确使用方法
数据库中default的用法的正确使用方法你清楚吗,今天学习啦小编就跟大家详细介绍下数据库中default的用法,希望能帮到大家. 数据库中default的用法的用法 SQL Server数据库def ...
- mysql中的存储过程优点_数据库存储过程在优点
存储过程 sql语句执行的时候要先编译,然后执行.存储过程就是编译好了的一些sql语句.应用程序需要用的时候直接调用就可以了,所以效率会高. 存储过程介绍 存储过程是由流控制和SQL语句书写的过程,这 ...
- mysql中distinct是什么_数据库中 DISTINCT 的作用是什么?
展开全部 SQL数据库中, DISTINCT表示去掉重复的行,作用是针对包含重复值的数据表,用于返回唯一不同的值.语法是636f707932313133353236313431303231363533 ...
最新文章
- 第九周项目一-深复制体验(1)
- 在domain中验证cron表达式
- 【转载】基于ASP.NET Web Application的插件实现,附DEMO
- WIN7移动硬盘格式化问题RAW格式读取 XP移动硬盘读取异常分析 移动硬盘格式不兼容...
- Docker创建虚机和swarm
- java alder32_Java里面计算Adler32校验
- python面向对象三大特性、类的约束、print带颜色输出及super补充
- 计算机工作原理 仿真,虚拟DCS仿真工作原理
- java 服务器读取客户端文件,java 服务器读取客户端文件
- MySQL查询语句转postGRE语句_PostgreSQL DBA常用SQL查询语句
- 什么是我想要守护的东西?
- 2021-08-08 事务的提交,回滚
- dwcs6连接不上access数据库_dw连接access数据库的技巧
- 初学“Jave”心得
- 基于单片机烟雾温湿度甲醛监测设计
- 笔记本Win10系统关于启动禁用触控板设置
- 通过Jsoup 和 htmlunit 爬取全国行政区划信息查询平台的省市区区划数据
- cydia添加源程序 v1.1.6 中文版
- 计算机中sumif函数的使用方法,WPS表格的sumif函数用法与模糊条件使用方法
- VirtulBox安装虚拟机(鼠标点击时)0x00000000指令引用的0x00000000内存该内存不能为written错误解决方案
热门文章
- 【Elasticsearch】Elasticsearch性能调优
- 【flink】flink Class not resolvable through given classloader ClassNotFoundException: FlinkKafkaConsum
- 【Redis】Redis 基础知识 常用命令 命令积累
- 【java】java 理解JDK中UUID的底层实现
- 使用 Spring Boot Security 进行安全控制
- mac下编译hadoop-3.0.3
- GitLab 配置 OAuth2 实现第三方登录,简直太方便了!
- 腾讯疯狂扩展7000人!我居然挂在了项目这块。。。
- MongoDB与MySQL效率对比
- 都是用Redis的服务器,12306为啥干不过淘宝???