数据库设计三范式

简介: 本文介绍数据库三范式:第一范式要求字段原子性,不可再分;第二范式要求消除部分依赖,表应描述单一主题;第三范式要求消除传递依赖。范式旨在减少冗余、提升数据一致性,但实际设计中需结合业务需求灵活应用,不必严格遵循。

第一范式 - 1NF
遵循原子性。即,表中字段的数据,不可以再拆分。先看一个不符合第一范式的表结构,如下:
image.png
虽然拆分后,看上去更符合第一范式了,但是如果项目就只需要我们输出一个完整地址呢?那明显是表在没拆分的时候会更好用。所以范式只是给了我们一个参考,我们更多的是要根据项目实际情况设计表结构。
第二范式 - 2NF
在满足第一范式的情况下,遵循唯一性,消除部分依赖。即,表中任意一个主键或任意一组联合主键,可以确定除该主键外的所有的非主键值。再通俗点讲就是,一个表只能描述一件事情。我们用一个经典案例进行解析。
image.png
image.png
image.png
总结
不知道读者们有没有发现,以上所介绍的范式的最终目的都是为了减少我们的工作量呢?所以说,尽管范式是一种很好的指导规范,但在实际应用中,我们也不需要太局限在范式中,更多的是应该从项目中出发,设计出合理的表结构。
以下是本篇三范式的简单总结:
● 第一范式(1 NF):字段不可再拆分。
● 第二范式(2 NF):表中任意一个主键或任意一组联合主键,可以确定除该主键外的所有的非主键值。
● 第三范式(3 NF):在任一主键都可以确定所有非主键字段值的情况下,不能存在某非主键字段 A 可以获取 某非主键字段 B。

相关文章
|
2月前
|
安全 Java 开发工具
整合SpringSecurity
本文介绍了Spring Security与Spring Boot的整合步骤:引入依赖、启动验证及登录测试。通过日志变化和自动跳转至login页面验证集成成功,使用默认用户名user和控制台生成的动态密码登录后,可访问受保护资源。完整代码见GitHub仓库Day01分支。
Apifox测试导出excel接口
Apifox测试导出excel接口
1841 0
|
SQL 存储 前端开发
SQL注入从入门到进阶(一)--->入门篇
看完本章节内容:1. 知道什么是Sql注入 2. 实现最基础的Sql注入
2671 0
|
4月前
|
IDE Java 关系型数据库
如何利用Spring Initializr快速搭建项目
通过Spring Initializr可快速搭建Spring Boot项目。访问官网,配置项目信息,选择依赖(如Web、MyBatis、MySQL等),生成并下载项目压缩包,解压后导入IDE,自动构建完成,快速高效地初始化标准项目结构,提升开发效率。(238字)
528 3
|
8月前
|
人工智能 移动开发 JavaScript
AI + 低代码技术揭秘(十二):开发人员工具和可扩展性
VTJ平台提供开发工具与扩展框架,支持低代码应用的开发与拓展。包含CLI、插件系统及Uni-App集成,结合Vite、TypeScript和Vue优化开发流程。
277 62
|
2月前
|
Java 测试技术 Apache
安装Jmeter
JMeter依赖JDK,需先安装并配置JDK环境变量。前往Apache JMeter官网(http://jmeter.apache.org/download_jmeter.cgi)下载最新版本,解压后即可使用,适用于性能测试与负载模拟。
|
7月前
|
前端开发 搜索推荐 开发工具
通义灵码与颜色板生成器,为前端开发提供智能配色解决方案
在前端开发中,色彩搭配对用户体验和界面美观至关重要。通义灵码提供的颜色板生成器通过自动推荐配色方案、随机生成颜色组合及支持自定义调整,帮助开发者高效完成配色任务。该工具支持一键导出为 CSS 样式表,并提供简洁的中文指令交互方式,大大提升开发效率,助力开发者打造美观和谐的用户界面。
|
6月前
|
人工智能 IDE 开发工具
通义灵码 AI IDE使用体验(3)项目优化及bug修复
本文介绍了使用通义灵码 AI IDE进行项目重构与优化的全过程,涵盖页面调整、UI更新、功能修复等内容,并展示了多次优化后的成果与仍存在的问题。
513 0
|
7月前
|
前端开发 开发工具 开发者
用 通义灵码 为网站生成动感粒子背景,打造星空效果
星空粒子背景因其动态性与交互性,成为网站设计中提升用户体验的重要元素。通过通义灵码,开发者可以轻松生成多种风格的星空粒子背景,并将其融入网页设计。本文介绍了使用通义灵码创建动态粒子背景的步骤,展示了