Java-数据库范式与表关系

news2025/1/13 8:01:49
数据库范式
数据库范式简介

 

        什么是范式(NF = NormalForm)

        ● 范式是符合某一种设计要求的总结

        在数据库中表的设计,必须保证其合理性

       ●  数据库表的设计关系整个系统的架构,关系到后续的开发效率和运行效率
        如何设计合理的数据库表
        ● 结构合理
        ● 冗余数据少
        ● 尽量避免插入删除修改异常
        ● 遵循一定的规则,在关系型数据库中这种规则就称为范式
        关系型数据库有六种常见范式:
        ●  第一范式( 1NF
        ●  第二范式(2NF
        ●  第三范式(3NF
        ●  巴斯- 科德范式( BCNF
        ●  第四范式(4NF
        ●  第五范式(5NF
        各个范式是依次嵌套包含的:
在第一范式的基础上进一步满足更多规范要求的称为第二范式 (2NF ),其余范式以此类推。

 

范式越高,设计质量越高,在现实设计中也越难实现

一般数据库设计,达到第三范式就足够了

数据库范式中的概念
        元组:可以理解为一张表中的每条记录,也就是每一行数据。
        属性:可以看作是“ 表的一列
                ● 主属性:
在一个关系中,如一个属性是构成某一个候选关键字的属性集中的一个属性,则称它为主属性。
例如:在关系—— 学生(学号,姓名,年龄,性别,班级)中,主属性是“ 学号 ,那么其他的 姓名 年龄 性别 班级 就都可以称为非主属性。
                ● 非主属性:

不包含在候选码中的属性称为非主属性,相对于主属性来定义的。

第一范式( 1NF

● 最基本的范式,是其他范式的基础

● 数据库表每列都是不可分割的基本数据项,同一列中不能有多个值,确保每列保持原子性

 

根据第一范式设计表

 

第一范式存在的问题

① 数据冗余

插入数据异常

修改数据复杂

删除异常

第二范式(2NF

第二范式在第一范式的基础之上更进一层。第二范式需要确保数据库表中的每一列都和主键相关,而不能只与主键的某一部分相关(主要针对联合主键而言)。也就是说在一个数据库表中,一个表 中只能保存一种数据,不可以把多种数据保存在同一张数据库表中。

 

根据第二范式设计表

第二范式存在问题

插入异常

删除异常

 

第三范式( 3NF

● 必须满足第二范式

● 确保数据表中的每一列数据都和 主键直接相关 ,而不能间接相关

 

根据第三范式设计表

 

符合 3NF 要求的数据库设计,基本上解决了数据冗余过大,插入异常,修改异常,删除异常的问题。
数据库设计范式总结

数据库设计范式优点

 ● 结构合理  

 ● 冗余较小

 ● 尽量避免插入删除修改异常

数据库设计范式 缺点
● 性能降低,多表查询比单表查询速度慢
在实际设计中,要整体遵循范式理论
如果在某些特定的情况下还死死遵循范式也是不可取的,因为可能降低数据库的效率,此时可以适当增加冗余而提高性能
● 第一范式( 1NF ):字段不能再分
● 第二范式( 2NF ):不存在部分依赖

 

●  第三范式( 3NF ):不存在间接依赖

使用范式可以减少冗余,但是会降低性能,特定表的的设计可以违反第三范式,增加冗余提高性能

数据库表关系

 

表关系简介
        设计关系数据库的一个重要部分是将数据元素划分为相关的表,我们可以根据数据本身的关联性,将不同表之间的数据聚合在一起。
注意:
        无论在表与表之间建立了什么样的关系,决定数据之间是否有关系的不是表,而是数据本身。
表与表的关系类型
表与表之存在三种关系( relation ),即一对一,一对多,多对多关系。
● 一对一 one-to-one ):一种对象与另一种对象是一一对应关系,比如一个学生只能在一个班级
里。
● 一对多 one-to-many ): 一种对象可以属于另一种对象的多个实例,比如一个班级里有很多学
生。
● 多对多 many-to-many ):两种对象彼此都是 " 一对多 " 关系,比如一个歌单里包含多首歌,同时一首歌可以属于多个歌单。
一对多关系
一种对象可以属于另一种对象的多个实例。

 

一对多关系是建立在两张表之间的关系。一个表中的一条数据可以对应另一个表中的多条数据。
可以添加外键约束保证数据的参照完整性,外键永远在多方。外键允许重复,允许含有空值。
注意:
        如果添加的外键约束,那么删除数据时,一定是先删除有外键一方的数据。
一对一关系
一种对象与另一种对象是一一对应关系。

 

一对一关系是建立在一对多的基础之上,一个表中的一条数据只能对应另一个表中的一条数据。
可以添加外键约束保证数据的参照完整性,外键可以在任何一方,需要让外键具备唯 一约束。
注意:
        如果添加的外键约束,那么删除数据时,一定是先删除有外键一方的数据。
多对多关系
两种对象彼此都是 " 一对多 " 关系

 

需要建立一个中间表,中间表里建立两个列,然后需要用这两个列作为这个表的联合主键,然后每个列在作为外键参照各自的表的主键。
注意:
        ●  存数据:先两侧,再中间表。
        ●  删数据:先中间表(即有外键的表),再两侧。

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

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

相关文章

【leetcode】二叉树的最近公共祖先

一、题目描述 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为:“对于有根树 T 的两个节点 p、q,最近公共祖先表示为一个节点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也…

在职位招聘数据处理中使用Loess回归曲线以及分箱、回归、聚类方法 检查离群点及光滑数据【数据挖掘机器学习】

文章目录一.需求分析二.使用局部回归(Loess)曲线(增加一条光滑曲线到散布图)方法处理数据三.使用分箱、回归、聚类方法 检查离群点及光滑数据;一.需求分析 本文主题:使用局部回归(Loess&#x…

Jmeter(十九):nmon性能系统监控工具

一、Nmon介绍 Nmon得名于 Nigel 的监控器,是IBM的员工 Nigel Griffiths 为 AIX 和 Linux 系统开发的,使用 Nmon 可以很轻松的监控系统的CPU、内存、网络、硬盘、文件系统、NFS、高耗进程、资源和 IBM Power 系统的微分区的信息 Nmon是一款计算机性能系…

【JavaEE】HTTP + HTTPS(Part2 )

努力经营当下,直至未来明朗! 文章目录【HTTP响应详解】1. 认识状态码2.认识响应“报头”header3.认识响应“正文”body【通过 Java socket 构造 HTTP 请求】三、HTTPS四、Tomcat:http服务器THINK一个人最大的痛苦来源于对自己无能的愤怒。 【…

Pycharm SQL 警告:SQL dialect is not configured.

Pycharm SQL 警告:SQL dialect is not configured. 文章目录Pycharm SQL 警告:SQL dialect is not configured.Unable to resolve symbol XXX在我们编写python代码的时候,不免会在代码里面写入自己写的sql语句,因为很少有orm框架能…

JVM Java内存模型(JMM)

很多人将Java内存结构与Java内存模型傻傻分不清,Java内存模型是Java memory model(JMM)的意思。简单地说,JMM定义了一套在多线程的环境下读写共享数据(比如成员变量、数组)时,对数据的可见性、有…

浪潮开务数据库陈磊:布局数字能源,创新助力 “双碳”

​当前,碳中和、碳达峰无疑是国际社会最关注的热点之一。2021 年两会上,我国提出:二氧化碳排放力争于 2030 年前达到峰值,努力争取 2060 年前实现碳中和。“双碳” 目标的提出将推动产业转型升级,提高经济增长质量&…

【LeetCode题目详解】(二)206.反转链表、876.链表的中间结点

目录 一、力扣第206题:反转链表 1.思路一 2.思路二 二、力扣第876题:链表的中间结点 1.思路一 2.思路二 总结 一、力扣第206题:反转链表 题目链接:206. 反转链表 - 力扣(Leetcode) 题目描述&#xff1…

gitee学习笔记(使用命令行上传、拉取资料)

1、创建一个仓库(比如命名为firstgit) 2、在文件夹中准备好要上传的资料 3、单击鼠标右键,打开Git Bash Here 进行命令行操作(当然,前提是需要安装git客户端,可去官网安装) 4、上传文件 ①git init //文件初始…

【mybatis-plus】自定义多数据源,动态切换数据源事务失效问题

背景 做了一个和navicat一样的工具,web版工具,然后数据库链接信息都是存在一个主数据库表的里,所以这里涉及到了动态切换数据源,以及一些事务等。今天说下多数据源切换时,事务失效。 目录 一、常见的事务失效 Transac…

大数据必学Java基础(一百一十二):开发案例之登录验证

文章目录 开发案例之登录验证 一、准备实体类 二、准备一些页面和静态资源

Spring boot day1

Maven 进阶 spring boot 框架 spring boot 相比于SSM框架的优缺点 优点: 创建独立的sping应用程序内嵌的tomcat,无需部署war文件简化的maven配置自动配置spring提供生产就绪型功能,如指标,健康检查和外部配置 特性:…

3.1 卷积神经网络基础

文章目录计算机视觉的发展历程卷积神经网络卷积(Convolution)卷积计算填充(padding)步幅(stride)感受野(Receptive Field)多输入通道、多输出通道和批量操作飞桨卷积API介绍卷积算子…

碰焊机触摸屏软件开发

1 软件需求 人机界面为MCGS 10寸触摸屏1062KW,接口为RS232/RS484/以太网,供电电源为24V。机触摸屏的功能为机器人的基本状态信息显示和对机器人的控制及参数给定。 目前设计的小车分成两栏共10格,需要将对应的触摸屏大致分成相应的10大格&a…

【嵌入式】AI落地部署技能

针对不同平台对生成的模型进行转换,也就是俗称的parse、convert,即前端解释器针对转化后的模型进行优化在特定的平台(嵌入端或者服务端)成功运行已经转化好的模型在模型可以运行的基础上,保证模型的速度、精度和稳定性用C、cuda写算子(预处理…

AWS-Eventbridge-事件总线实践

aws eventbridge 功能主要使用场景为,针对账号发生各种事件,发生告警,可以发送sns告警,也可以配置发送到当前区域或者其他账号当前区域的事件总线上汇总,再做下一步规划eventbridge 事件总线类似与整个事件的一个目录集…

机器学习——03决策树算法

机器学习——03决策树算法 参考资料 AIlearningMachine-Learning-in-Action庞善民.西安交通大学机器学习导论2022春PPT 具体算法的原理步骤请参考本人的另一篇博文:[机器学习导论]—— 第四课——决策树 一、信息熵与信息增益 🔥信息熵 信息熵使信息…

中小企业OA系统的设计与实现

开发工具(eclipse/idea/vscode等): 数据库(sqlite/mysql/sqlserver等): 功能模块(请用文字描述,至少200字): 模块划分:通知类型模块、通知信息模块、部门模块、员工模块、考勤模块、工资模块、奖惩类型、奖惩信息、请假…

USACO开赛!这份参赛指引必看!

美国信息学奥赛USACO 2022 – 2023赛季首场比赛于明日(12月16日)开始!这份参赛指引,一定要认真看噢~ 第一步:打开 USACO 官网:http://www.usaco.org/,点击【注册新账号】,开始注册账…

宽凳科技完成超亿元B1轮融资 率先突破高精地图量产落地

近日,国内领先的高精地图及其智能应用综合解决方案服务商宽凳科技宣布完成B1轮超亿元融资。本轮融资由聚焦于新能源汽车产业链投资及新兴技术产业投资的紫峰资本与信益资本联合领投,崇业投资跟投,同时本轮资本引入了德清政府战略投资&#xf…