首页 > 数据库 >数据库原理

数据库原理

时间:2024-12-25 11:13:07浏览次数:4  
标签:范式 数据库 实体 PK 原理 数据 主键

1 数据库原理

1.1 数据的分类

  • 结构化的数据:即有固定格式和有限长度的数据。例如填的表格就是结构化的数据,国籍:中华人民共和国,民族:汉,性别:男,这都叫结构化数据
  • 非结构化的数据:非结构化的数据越来越多,就是不定长、无固定格式的数据,例如: 网页,图片文件,有时候非常大,有时候很小;例如语音,视频都是非结构化的数据
  • 半结构化数据:比如:XML或者HTML的格式的数据

1.2 数据库的发展史

数据库与芯片,操作系统并列为计算机技术的三大件,也是企业IT系统必不可少的核心技术

1.2.1 数据库系统发展阶段

  • 萌芽阶段:文件系统

    使用磁盘文件来存储数据

  • 初级阶段:第一代数据库

    出现了网状模型、层次模型的数据库

  • 中级阶段:第二代数据库

    关系型数据库和结构化查询语言

  • 高级阶段:新一代数据库

    "关系-对象"型数据库

1.2.2 文件管理系统的缺点

  • 编写应用程序不方便
  • 不支持对文件的并发访问
  • 无安全控制功能
  • 难以按用户视图表示数据
  • 数据间联系弱
  • 数据冗余不可避免
  • 应用程序依赖性

1.3 数据库管理系统

1.3.1 相关概念

  • Database:数据库是数据的汇集,它以一定的组织形式存于存储介质上
  • DBMS:Database Management System, 是管理数据库的系统软件,它实现数据库系统的各种功能。是数据库系统的核心
  • DBA:Database Administrator, 负责数据库的规划、设计、协调、维护和管理等工作
  • Application:应用程序,指以数据库为基础的应用程序

1.3.2 数据库管理系统的优点

  • 程序与数据相互独立
  • 保证数据的安全、可靠
  • 最大限度地保证数据的正确性
  • 数据可以并发使用并能同时保证一致性
  • 相互关联的数据的集合
  • 较少的数据冗余

1.3.3 数据库管理系统的基本功能

  • 数据定义
  • 数据处理
  • 数据安全
  • 数据备份

1.3.4 关系统型数据库相关概念

  • 关系Relational :关系就是二维表,其中:表中的行、列次序并不重要
  • 行row:表中的每一行,又称为一条记录record
  • 列column:表中的每一列,称为属性,字段,域field
  • 主键Primary key:PK ,一个或多个字段的组合, 用于惟一确定一个记录的字段,一张表只有一个主键, 主键字段不能为空NULL
  • 唯一键Unique key: 一个或多个字段的组合,用于惟一确定一个记录的字段,一张表可以有多个UK,而且UK字段可以为NULL
  • 域domain:属性的取值范围,如,性别只能是'男'和'女'两个值,人类的年龄只能0-150

1.4 关系型数据库理论

1.4.1 实体-联系模型E-R

E-R模型即实体-关系模型﹐E-R模型就是描述数据库存储数据的结构模型

对于大型公司开发项目﹐需要根据产品经理的设计﹐先使用建模工具,如:power designer ,db desinger等这些软件来画出实体-关系模型(E-R模型)

  • 实体Entity:客观存在并可以相互区分的客观事物或抽象事件称为实体即表,在E-R图中用矩形表示实体,把实体名写在框内

  • 属性Attribute:实体所具有的特征或性质,描述实体里面的单个信息, 使用椭圆形表示

  • 联系Relationship:描述了实体的属性之间的关联规则

    • 实体内部的联系:指组成同一个实体内的各属性之间的联系。如职工实体中,职工号和部门经理号之间有一种关联关系

    • 实体之间的联系:指不同实体之间的属性的联系。例:学生选课实体和学生基本信息实体之间

    • 实体之间的联系用菱形框表示

E-R 模型效果图:
image

1.4.2 联系类型

  • 一对一联系(1:1): 在表A或表B中创建一个字段﹐存储另一个表的主键值 如: 一个人只有一个身份证号
    image

  • 一对多联系(1:n):外键, 如: 部门和员工,一个部门对应多个员工。如下图,部门表中部门ID加主键,在员工表的员工ID加外键,员工表部门ID依赖于部门表部门ID
    image

  • 多对多联系(m:n):增加第三张表, 如: 学生和课程,一个学生对应多门课程,一门课程对应多个学生。第三张表中,学生和课程表ID都设为主键,第三张表的学生ID和课程ID均设置为外键。
    image

1.4.3 数据的操作

image

开发工程师 CRUD (增加Create、查询Read或 Retrieve、更新Update、 删除Delete)

  • 数据提取:在数据集合中提取感兴趣的内容。SELECT
  • 数据更新:变更数据库中的数据。INSERT、DELETE、UPDATE

1.4.4 数据库的正规化分析

数据库规范化,又称数据库或资料库的正规化、标准化,是数据库设计中的一系列原理和技术,以减少数据库中数据冗余,增进数据的一致性。关系模型的发明者埃德加·科德最早提出这一概念,并于1970年代初定义了第一范式、第二范式和第三范式的概念

设计关系数据库时,遵从不同的规范要求,设计出合理的关系型数据库,不同的规范要求被称为不同范式,各种范式呈递次规范,越高的范式数据库冗余越小

目前关系数据库有六种范式:第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、巴德斯科范式(BCNF)、第四范式(4NF)和第五范式(5NF,又称完美范式)。满足最低要求的范式是第一范式(1NF)。在第一范式的基础上进一步满足更多规范要求的称为第二范式(2NF),其余范式以次类推。一般数据库只需满足第三范式(3NF)即可

规则是死的,人是活的,所以范式是否必须遵守,要看业务需要而定

掌握范式的目的是为了在合适的场景下违反范式

范式可以减少数据冗余,是牺牲性能,换取空间。现在往往更加追求性能,现阶段硬盘内存空间比早期便宜,有时追求极致性能,有些场景会故意违反第二第三范式

1.4.4.1 第一范式:1NF

无重复的列,每一列都是不可分割的基本数据项,同一列中不能有多个值,即实体中的某个属性不能有多个值或者不能有重复的属性,确保每一列的原子性。除去同类型的字段,就是无重复的列

说明:第一范式(1NF)是对关系模式的基本要求,不满足第一范式(1NF)的数据库就不是关系数据库

image

1.4.4.2 第二范式:2NF

第二范式必须先满足第一范式,属性完全依赖于主键,要求表中的每个行必须可以被唯一地区分,通常为表加上每行的唯一标识主键PK,非PK的字段需要与整个PK有直接相关性,即非PK的字段不能依赖于部分主键。
如下图,非PK字段AGE满足第二范式,同时依赖于NAME和CITY,(每个城市都有小明,AGE匹配于对应城市的小明的年龄,所以满足第二范式);非PK字段CITY CODE只依赖于部分主键CITY,所以不符合第二范式。解决方案如图,拆成两张表,减少冗余,但是提高了查询复杂度。
image

1.4.4.3 第三范式:3NF

满足第三范式必须先满足第二范式属性,非主键属性不依赖于其它非主键属性。第三范式要求一个数据表中不包含已在其它表中已包含的非主关键字信息,非PK的字段间不能有从属关系。
如下图,非PK字段CITY CODE依赖于非PK字段CITY不符合第三范式。解决方案再建立一张表,设置外键依赖关系。

image

1.4.5 SQL 结构化查询语言简介

SQL:Structure Query Language,结构化查询语言是1974年由Boyce和Chamberlin提出的一个通用的、功能极强的关系性数据库语言

SQL解释器:将SQL语句解释成机器语言

数据存储协议:应用层协议,C/S

  • S:server, 监听于套接字,接收并处理客户端的应用请求
  • C:Client

客户端程序接口

  • CLI
  • GUI

应用编程接口

  • ODBC:Open Database Connectivity
  • JDBC:Java Data Base Connectivity

标签:范式,数据库,实体,PK,原理,数据,主键
From: https://www.cnblogs.com/Dxj01/p/18629884

相关文章

  • Flink State 状态原理解析
    作者:京东物流吴云涛一、FlinkState概念State用于记录Flink应用在运行过程中,算子的中间计算结果或者元数据信息。运行中的Flink应用如果需要上次计算结果进行处理的,则需要使用状态存储中间计算结果。如Join、窗口聚合场景。Flink应用运行中会保存状态信息到State对......
  • 【Java基础面试题046】Java中的注解原理是什么?
    注解其实就是一个标记,是一种提供元数据的机制,用于给代码添加说明信息。可以标记在类上、方法上、属性上等,标记自身也可以设置一些值。注解本身不影响程序的逻辑执行,但可以通过工具或框架来利用这些信息进行特定的处理,如代码生成、编译时检查、运行时处理等。扩展知识自定义......
  • 如何解决数据库连接异常,重新导入数据后仍无法访问的问题?
    根据您的描述,您遇到了数据库连接异常和重新导入数据后仍然无法访问的问题。这类问题通常涉及多个方面,包括但不限于数据库配置、服务器环境、网络连接等。以下是一些详细的排查步骤和解决方案,帮助您逐步解决问题。1. 检查数据库日志首先,建议您查看数据库的日志文件,以获取更多关......
  • 如何获得云服务器中 MySQL 数据库的密码?
    您需要获取云服务器中MySQL数据库的密码。获取数据库密码的方式取决于您使用的具体环境和服务。以下是几种常见的获取方法,帮助您快速找到数据库密码。1. 通过建站助手查看如果您使用的是带有建站助手的云服务器,通常可以在建站助手中直接查看MySQL数据库的密码。具体步骤如......
  • springboot学生选课系统(代码+数据库+LW)
    摘 要互联网发展至今,无论是其理论还是技术都已经成熟,而且它广泛参与在社会中的方方面面。它让信息都可以通过网络传播,搭配信息管理工具可以很好地为人们提供服务。针对学生选课信息管理混乱,出错率高,信息安全性差,劳动强度大,费时费力等问题,采用学生选课系统可以有效管理,使信息......
  • springboot社团管理系统(代码+数据库+LW)
    摘要随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的实施在技术上已逐步成熟。本文介绍了社团管理系统的开发全过程。通过分析社团管理系统管理的不足,创建了一个计算机管理社团管理系统的方案。文章介绍了社团管理系统的系统分析部分,包括可行性分析等,系统设计部分......
  • 经典区间线段树详解:从原理到实践
    线段树(SegmentTree)是一种非常高效的树形数据结构,用于解决区间查询和修改问题。本文将通过分步骤讲解,带领读者熟练掌握线段树的原理与实现,并探索其应用场景。引言:数组区间修改问题在一些经典问题中,比如给定一个数组,频繁地需要进行以下操作:区间查询:查询数组某一子区间内的最大......
  • Mysql的数据库引擎有哪些,有什么区别
    MySQL支持多种数据库引擎,不同的引擎在性能、功能和使用场景上有所不同。以下是MySQL常见的数据库引擎及其区别: ---###**1.InnoDB**-**特点**: -支持事务(ACID),是MySQL默认的存储引擎。 -支持外键约束。 -支持行级锁定(适合高并发)。 -使用聚簇索引,提升......
  • 为什么虚拟主机无法连接其他主机的数据库?
    虚拟主机无法连接其他主机的数据库通常是由多种因素引起的。首先,我们需要明确的是,默认情况下,虚拟主机是可以连接外部数据库的,但这并不意味着所有情况下都能成功连接。以下是可能导致连接失败的原因及解决方案:网络连接问题:检查目标数据库服务器是否允许来自您虚拟主机IP地址的......
  • 如何找回MySQL数据库的密码?
    忘记MySQL数据库的密码是一个常见的问题,但幸运的是,有几种方法可以帮助您找回或重置密码。以下是详细的步骤指南,帮助您安全有效地恢复对数据库的访问权限:参考官方文档或教程:许多托管服务商会提供详细的指南,教用户如何自行重置MySQL密码。您可以查阅服务商提供的帮助文档或FAQ......