当前位置: 首页 > news >正文

MySQL之数据库数据库范式学习笔记(二)

三大范式

范式是数据库设计中的概念,用于规范化数据结构,以减少数据冗余并确保数据的一致性和完整性。MySQL 数据库设计通常遵循一定的范式,其中最常见的是第一至第三范式。以下是各个范式的简要说明:

第一范式(1NF)

  • 每个字段都是原子性的,不可再分。
  • 没有重复的列或分组列。
例子:
订单表(Orders):
OrderID   CustomerName   OrderDate       Item1     Item2     Item3
1         Alice          2022-06-01      Apple     Orange    Banana
2         Bob            2022-06-02      Pear      Pineapple Mango

这个表违反了第一范式,因为Item1Item2Item3应该单独存在于一个子表中。

第二范式(2NF)

  • 数据表中的非主键列完全依赖于全部主键而不是部分主键。
例子:
订单详情表(OrderDetails):
OrderID   ProductID   ProductName   UnitPrice   Quantity
1         101         Apple         1.99        2
1         102         Orange        0.99        3
2         103         Pear          2.49        1
2         104         Pineapple     3.99        2
2         105         Mango         2.99        3

这个表符合第二范式,因为每个非主键列(ProductNameUnitPriceQuantity)都完全依赖于主键(OrderIDProductID)。

第三范式(3NF)

  • 数据表中的非主键列之间互不依赖,而是直接依赖于主键列。
例子:
客户表(Customers):
CustomerID   CustomerName   Email            Address
1            Alice          alice@example    123 Main St
2            Bob            bob@example      456 Elm St订单表(Orders):
OrderID   CustomerID   OrderDate
1         1            2022-06-01
2         2            2022-06-02

这个设计符合第三范式,因为EmailAddress列直接依赖于CustomerID主键,而不是相互依赖。

MySQL 数据库设计时通常会尽量满足第三范式,以确保数据的完整性和一致性,并减少数据冗余。然而,在实际应用中,有时候也会根据特定情况牺牲一些范式,以满足性能或其他需求。

http://www.lryc.cn/news/364011.html

相关文章:

  • 【Qt】 new成功,但是没有进入到构造函数。
  • 高清多媒体接口(High Definition Multimedia Interface, HDMI)
  • Spring AI 第二讲 之 Chat Model API 第五节HuggingFace Chat
  • 【笔记】Sturctured Streaming笔记总结(Python版)
  • Python函数进阶
  • [知识点]c++ delete与delete[ ]
  • iCloud如何被高效利用?
  • 月入30000的软件测试人员,简历是什么样子的?
  • nginx官网源代码方式安装nginx并编译
  • iOS ActivityViewController使用
  • 新手快速上手IDEA【常用快捷键】
  • MySQL里如果有字段是function怎么查询呢?
  • 从高海拔到严寒季的测量作业更要「快准稳」,怎么实现?
  • WowTab:简洁界面,效率神器,重塑新标签页浏览体验
  • PostgreSQL 17 Beta1 发布,酷克数据再次贡献核心力量
  • CDH服务红,查看日志发现host有问题
  • 数据分析------统计学知识点(三)
  • MySQL 导出一条数据的插入语句
  • 隐藏 IP 地址的重要性是什么?
  • Oracle 19c linux安装
  • AI音乐生成流程
  • android room数据库升级脚本常见问题
  • 在 iCloud.com 上导入、导出或打印联系人
  • JavaScript中this方法;var,let,constd区别;JSON是什么
  • Mybatis不明白?就这一篇带你轻松入门
  • pymupdf提取pdf表格及表格数据合并
  • 门外汉一次过软考中级(系统集成项目管理工程师)秘笈,请收藏!
  • [leetcode hot 150]第一百零八题,将有序数组转换为二叉搜索树
  • 科普丨什么是数字孪生灌区(平台)?如何建设?有何好处?
  • Python爬虫如何入门:一步步走向精通的指南