MySQL优化技术:3范式的表设计

来源:互联网 发布:办公平台软件免费 编辑:程序博客网 时间:2024/05/16 01:32

一、数据库分类

  • 关系型数据库

        关系型数据库是通过行和列来将数据保存在一张张数据表中,表与表之间存在数据关系。常用的关系型数据库包括:MySQL、Oracle、SQLServer、DB2等

  • 非关系型数据库

        以键值对的形式来保存数据,是一种面向对象、面向集合的数据存储方式。常用的非关系型数据库包括:NoSQL、MongoDB等

二、什么是3范式的表设计(3NF)

  • 1NF

        表的列具备原子性,不可再分解;也就是说,只要数据库是关系型数据库,就自动满足1NF

  • 2NF

        只要保证表中的每条记录都是唯一的,就可以满足2NF;例如:我们可以通过设计主键的形式保证数据的唯一性

  • 3NF

        要求表中的数据不可存在冗余,也就是说,如果表中的信息能够被推导出来,就不应该单独的设计一个字段来存放

三、3范式设计实例

        我们设计两张表,分别是栏目表和文章表,以下是表结构



        从表的设计上我们可以看出,我们给两张表都设置了主键ID,保证了每条记录的唯一性,即满足了2NF标准;

        程序需求上要求在显示文章内容的时候显示出目录的名称和目录的类型,但是我们可以通过目录的ID推导出该条记录文章的目录名称和目录类型,所以也就没有必要在文章表中新增目录名称和类型字段,即满足了3NF标准,为了保证数据的关联性,我们给文章表中的cid字段设置一个关联目录表id的外键