【Sql】数据库的三范式?MySQL数据库引擎有?InnoDB与MyISAM的区别

news2024/11/16 12:00:00

目录

数据库的三范式?

MySQL数据库引擎有?

InnoDB与MyISAM的区别


数据库的三范式?

  • 第一范式:是数据库最基本的要求,列不可再分

  • 第二范式:行可以唯一区分,主键约束

  • 第三范式:是在第二范式的基础上建立起来的,即满足第三范式必须要先满足第二范式。第三范式(3NF)要求:表中的非主键列必须和主键直接相关而不能间接相关;也就是说:非主键列之间不能相关依赖。

  • 第一范式(1NF):属性不可分割 第一范式是数据库表设计的最基本要求,即每个属性(字段)都是不可分割的原子项。这意味着每个字段都应该有一个唯一的名字,而且每个字段的数据类型应该是一个单一类型,如整数、字符串、日期等。

    例如,如果我们有一个“员工”表,那么每个员工都有一个唯一的“员工编号”字段,这个字段是不可再分的。同时,表中可能还包括其他字段,如姓名、性别、出生日期等,这些字段也都是不可再分的。

    第二范式(2NF):满足第一范式;且不存在部分依赖 第二范式是在满足第一范式的基础上,要求每个非主属性都完全依赖于主属性。这意味着非主属性必须完全依赖于主键,而不是仅仅依赖于主键的一部分。

    例如,如果我们有一个“订单”表和一个“订单详情”表,其中“订单”表有一个主键“订单编号”,而“订单详情”表有一个外键“订单编号”和一个非主属性“商品数量”。在这个例子中,“商品数量”完全依赖于“订单编号”,因此符合第二范式的要求。

    第三范式(3NF):满足第二范式;且不存在传递依赖 第三范式是在满足第二范式的基础上,要求非主属性之间不存在传递依赖。这意味着非主属性必须直接依赖于主属性,而不是间接依赖于主属性。

    例如,如果我们有一个“部门”表和一个“员工”表,其中“部门”表有一个主键“部门编号”,“员工”表有一个外键“部门编号”和一个非主属性“工资”。在这个例子中,“工资”直接依赖于“部门编号”,因此符合第三范式的要求。但是,如果存在一个“工资等级”表,其中有一个外键“部门编号”和一个非主属性“工资标准”,那么这个“工资标准”就间接依赖于“部门编号”,不符合第三范式的要求。

    三范式是数据库规范化的一种重要方法,它有助于减少数据冗余、提高数据的一致性和完整性。第一范式要求每个属性都是不可分割的原子项;第二范式要求每个非主属性都完全依赖于主属性;第三范式要求非主属性之间不存在传递依赖。在设计数据库时,应该尽量遵守三范式的要求,以避免出现数据冗余、数据不一致等问题。 ———————————————— 版权声明:本文为CSDN博主「人不走空」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:三范式详解-CSDN博客

MySQL数据库引擎有?

mysql常用引擎包括:MYISAM、Innodb、Memory、MERGE

  • MYISAM:支持全表锁,拥有较高的执行速度,不支持事务,不支持外键,并发性能差,占用空间相对较小,对事务完整性没有要求,以select、insert为主的应用基本上可以使用这引擎

  • Innodb:支持行级锁,提供了具有提交、回滚和崩溃回复能力的事务安全,支持自动增长列,支持外键约束,并发能力强,占用空间是MYISAM的2.5倍,处理效率相对会差一些

  • Memory:支持全表锁,所有数据都存储在内存中,数据处理速度快,但是安全性不高。默认使用HASH索引,检索效率非常高,但不适用于精确查找,主要用于那些内容变化不频繁的代码表

  • MERGE:是一组MYISAM表的组合

InnoDBMyISAM的区别

  1. InnoDB支持事务,MyISAM不支持,对于InnoDB每一条SQL语言都默认封装成事务,自动提交,这样会影响速度,所以最好把多条SQL语言放在begin和commit之间,组成一个事务;

  2. InnoDB支持外键,而MyISAM不支持。对一个包含外键的InnoDB表转为MYISAM会失败;

  3. InnoDB是聚集索引,数据文件是和索引绑在一起的,必须要有主键,通过主键索引效率很高。但是辅助索引需要两次查询,先查询到主键,然后再通过主键查询到数据。因此,主键不应该过大,因为主键太大,其他索引也都会很大。而MyISAM是非聚集索引,数据文件是分离的,索引保存的是数据文件的指针。主键索引和辅助索引是独立的。

  4. InnoDB不保存表的具体行数,执行select count(*) from table时需要全表扫描。而MyISAM用一个变量保存了整个表的行数,执行上述语句时只需要读出该变量即可,速度很快;

  5. Innodb不支持全文索引,而MyISAM支持全文索引,查询效率上MyISAM要高;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1510043.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【io.net】问题汇总

【io.net】问题汇总 大家最近挖挖的如火如荼,可是不论是社区活动积分和参与挖矿积分,大家遇到了很多类似问题,重复解决。 因此我这里整理了一下常见的相关问题,大家可以一站式找到解决方案。解决方案主要分为运营和挖矿两个两面…

【CMake G++ GCC】在 Linux 环境中编译 C++ 源码

在 Linux 环境中编译 C 源码 C 技术栏 文章演示了在 乌班图 环境下编译mathematical-expression-cpp 动态库源码,! 目录 文章目录 在 Linux 环境中编译 C 源码目录介绍前置准备apt 更新下载并进入源码包 开始编译源码包修改 CMakeList 文件开始进行 makeFile 的生…

AIGC——ConsiStory无需训练LoRA快速实现主题一致地文本到图像生成技术

简介 当前的图像生成技术大多数采用随机采样,这导致每次生成的图像都有所不同,特别是在生成连续图像时难以保持一致性。 举例来说,尝试用AI生成一组图像连环画时,即使使用相似的提示词,也难以达到理想效果。 尽管DA…

7-18 两个数的简单计算器

本题要求编写一个简单计算器程序,可根据输入的运算符,对2个整数进行加、减、乘、除或求余运算。题目保证输入和输出均不超过整型范围。 输入格式: 输入在一行中依次输入操作数1、运算符、操作数2,其间以1个空格分隔。操作数的数…

嵌入式学习第二十七天!(TCP并发模型)

TCP并发模型: 1. TCP多线程模型: 缺点:创建线程会带来资源开销,能够实现的并发量比较有限。 2. IO模型: 1. 阻塞IO: 没有数据到来时,可以让任务挂起,节省CPU资源开销,提…

C# MES通信从入门到精通(1)——串口传输文件

前言: 在上位机软件开发领域,有一些工厂的mes系统需要我们通过串口发送文件的方式把一些图片或者检测数据csv文件等发送给服务器,这种方式是一些比较旧的工厂采用的方式,但是这种方式也是存在的,本文就是讲解如何使用串口发送文件详情见下文。 1、串口发送文件思路 将需…

Python-Pong-Game

我还加了音效,类似于小时候游戏机上的弹球游戏 import os import turtle import pygame#初始化pygame pygame.init()#加载声音文件 bounce_sound pygame.mixer.Sound("bounce.mp3")wn turtle.Screen() wn.title("Pong by ") wn.bgcolor(&qu…

docker学习进阶篇

一、dockerfile解析 官方文档: Dockerfile reference | Docker Docs 1.1、dockfile是什么? dockerfile是用来构建docker镜像的文本文件,由一条条构建镜像所需的指令和参数构成的脚本。 之前我们介绍过通过具体容器反射构建镜像(docker comm…

幻兽帕鲁游戏服务器多少钱?2024最新报价单请查收

游戏服务器租用多少钱一年?1个月游戏服务器费用多少?阿里云游戏服务器26元1个月、腾讯云游戏服务器32元,华为云26元,游戏服务器配置从4核16G、4核32G、8核32G、16核64G等配置可选,游戏专业服务器公网带宽10M、12M、15M…

《深入Linux内核架构》第1章 简洁和概述

目录 1.1 内核的任务 1.2 实现策略 1.3 内核的组成部分 ​编辑1.3.1 进程、进程切换、调度 1.3.2 UNIX 进程 1.3.3 地址空间和特权级别 1.3.4 页表 1.3.5 物理内存的分配 1.3.6 计时 1.3.7 系统调用 1.3.8 设备驱动程序 1.3.9 网络 1.3.10 文件系统 1.3.11 模块和…

java guide 八股

Java语言特点 简单易学、面向对象(继承、封装、多态)、平台无关性(Java虚拟机jvm)、支持多线程、可靠、安全、高效、支持网络编程、编译与解释共存 JVM:Java虚拟机(跨平台的关键) JRE&#xff…

ROS——其他ROS版本安装

1.2.6 资料:其他ROS版本安装 我们的教程采用的是ROS的最新版本noetic,不过noetic较之于之前的ROS版本变动较大且部分功能包还未更新,因此如果有需要(比如到后期实践阶段,由于部分重要的功能包还未更新,需要ROS降级),也…

Spring Cloud集成nacos配置中心

1.添加Nacos Config依赖 打开nacos-config-demo的pom.xml文件并添加以下两个依赖项 项目的配置文件中通常包括数据库连接配置项、日志输出配置项、Redis连接配置项、服务注册配置项等内容,如spring-cloud-alibaba-nacos-config-base-demo项目中就包含数据库连接配置…

控件交互触屏操作

控件交互 print(driver.find_element(By.ID, com.xueqiu.android:id/tv_agree).is_enabled()) # 判断元素是否可点击 print(driver.find_element(By.ID, com.xueqiu.android:id/tv_agree).is_display()) # 判断元素是否可显示 print(driver.find_element(By.ID, com.xueqiu.…

【梳理】k8s使用Operator搭建Flink集群(高可用可选)

文章目录 1. 架构图2. helm 安装operator3. 集群知识k8s上的两种模式:Native和Standalone两种CR 4. 运行集群实例Demo1:Application 集群Demo2:Session集群优劣 5. 高可用部署问题1:High availability should be enabled when sta…

spring boot 使用 webservice

spring boot 使用 webservice 使用 java 自带的 jax-ws 依赖 如果是jdk1.8,不需要引入任何依赖&#xff0c;如果大于1.8 <dependency><groupId>javax.jws</groupId><artifactId>javax.jws-api</artifactId><version>1.1</version&g…

JVM-3

HotSpot虚拟机对象 我在网上看了很多相关的文章&#xff0c;发现在创建对象和对象的结构中内容都不太一样&#xff0c;一些关键字也很不同&#xff0c;于是我通过参考《深入理解Java虚拟机》这本书&#xff0c;自己总结了一篇。 1.对象的创建 当JVM收到一条创建对象的字节码…

uniapp:音乐播放器

功能要求&#xff1a;全局音乐播放&#xff0c;可以上一首&#xff0c;下一首&#xff0c;暂停&#xff0c;播放。 1、mixins export default {data() {return {audio: null, // 音频对象playlist: [{url: require(../static/1.mp3)}, {url: require(../static/2.mp3)}, {url: …

多接入边缘计算赋能的AI质检系统任务实时调度策略

源自&#xff1a;电子与信息学报 作者&#xff1a;周晓天, 孙上, 张海霞, 邓伊琴, 鲁彬彬 “人工智能技术与咨询” 发布 摘 要 AI质检是智能制造的重要环节&#xff0c;其设备在进行产品质量检测时会产生大量计算密集型和时延敏感型任务。由于设备计算能力不足&#xff0c…