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

03-15 1638阅读 0评论

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

【Sql】数据库的三范式?MySQL数据库引擎有?InnoDB与MyISAM的区别,【Sql】数据库的三范式?MySQL数据库引擎有?InnoDB与MyISAM的区别,词库加载错误:未能找到文件“C:\Users\Administrator\Desktop\火车头9.8破解版\Configuration\Dict_Stopwords.txt”。,使用,我们,方法,第2张
(图片来源网络,侵删)

目录

数据库的三范式?

MySQL数据库引擎有?

InnoDB与MyISAM的区别


数据库的三范式?

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

    【Sql】数据库的三范式?MySQL数据库引擎有?InnoDB与MyISAM的区别,【Sql】数据库的三范式?MySQL数据库引擎有?InnoDB与MyISAM的区别,词库加载错误:未能找到文件“C:\Users\Administrator\Desktop\火车头9.8破解版\Configuration\Dict_Stopwords.txt”。,使用,我们,方法,第3张
    (图片来源网络,侵删)
  • 第二范式:行可以唯一区分,主键约束

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

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

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

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

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

    【Sql】数据库的三范式?MySQL数据库引擎有?InnoDB与MyISAM的区别,【Sql】数据库的三范式?MySQL数据库引擎有?InnoDB与MyISAM的区别,词库加载错误:未能找到文件“C:\Users\Administrator\Desktop\火车头9.8破解版\Configuration\Dict_Stopwords.txt”。,使用,我们,方法,第4张
    (图片来源网络,侵删)

    第三范式(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表的组合

      InnoDB与MyISAM的区别

      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要高;


免责声明
本网站所收集的部分公开资料来源于AI生成和互联网,转载的目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。
文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。

发表评论

快捷回复: 表情:
评论列表 (暂无评论,1638人围观)

还没有评论,来说两句吧...

目录[+]