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

数据库 绪论

目录

数据库基本概念

一.基本概念

1.信息

2.数据

3.数据库(DB)

4.数据库管理系统(DBMS)

5.数据库系统(DBS)

二.数据管理技术的发展

1.人工管理阶段

2.文件系统阶段

3.数据库系统阶段

4.数据库管理系统必须提供以下几方面的数据管理功能

二.数据模型

1.数据模型

2.数据模型的分类

3.概念模型的表示方法

常见的数据模型

四、关系数据库的规范化 

第一范式

第二范式

第三范式


数据库基本概念

一.基本概念

1.信息

信息是现实世界事物的存在方式或者运动状态的反映,他通过符号和信号等具体形式表现出来。信息具有可感知、可存储、可加工、可再生等自然属性,是各行各业不可或缺的资源

2.数据

数据是描述事物的符号记录,可以是数字,文字,图形和声音等。数据是数据库中存储的基本对象,是信息的载体。

例如,某校一个数据科学与大数据技术专业学生的基本情况:学号为20250208,姓名为小红的女生,2002年2月20日出生,数据科学与大数据技术专业。在计算机中则如下的形式描述:

(20250208,小红,女,2002-2-20,数据科学与大数据技术)

3.数据库(DB)

数据库就是存放数据的仓库。长期存储在计算机中的,是有组织的、可共享的相关数据集合。具有逻辑关系和确定意义;针对明确的应用目标而设计建立和加载的

4.数据库管理系统(DBMS)

数据库管理系统是位于用户与操纵系统之间的数据管理软件。它和操作系统一样是计算机的基础软件,也是一类大型复杂的软件系统

有以下功能

  • 数据定义功能
  • 数据组织、存储和管理功能
  • 数据操纵功能
  • 数据库的事务管理和运行管理功能
  • 数据库的建立和维护功能
  • 其他功能

5.数据库系统(DBS)

数据库系统是指引入数据库后的计算机系统,一般是指由数据库、数据库管理系统(及其应用开发工具)、应用系统和数据库管理员组成的存储、管理、处理和维护数据的系统。(简称数据库)

二.数据管理技术的发展

1.人工管理阶段

人工管理数据具有如下特点:

  • 数据不保存
  • 应用程序管理数据
  • 数据不共享
  • 数据不具有独立性

2.文件系统阶段

文件系统管理数据具有以下特点:

  • 数据可以长期保存
  • 数据由专门的软件进行管理

缺点

  • 数据共享性弱,冗余度高
  • 数据独立性弱

3.数据库系统阶段

  • 数据库系统阶段的数据具有如下特点:
  • 整体数据的结构化
  • 数据的共享性强、冗余度低且易于扩充
  • 数据的独立性强
  • 数据由数据库管理系统统一管理和控制

4.数据库管理系统必须提供以下几方面的数据管理功能

  • 数据的安全性保护
  • 数据的完整性检查
  • 数据的并发控制
  • 数据库的恢复

综上,数据库是长期储存在计算机内的有组织、可共享的大量数据的集合。他可提供各种用户共享,具有最小的冗余度和较强的数据独立性。数据库管理系统在数据库建立、运维时对数据库进行统一控制,以保证数据的完整性和安全性,并在多用户同时使用数据库时进行并发控制,在发生故障后对数据库进行恢复。

二.数据模型

1.数据模型

数据模型也是一种模型,他是数据特征的抽象,是数据库系统的核心基础,它从抽象层次上描述了系统的静态特征、动态行为和约束条件,为数据库系统的信息表示与操纵提供了一个抽象的框架。

数据模型所描述内容的三个部分:数据结构、数据操作、数据的约束条件;

2.数据模型的分类

概念模型

一种面向用户、面向客观世界的模型,主要用于描述世界的概念化结构。

数据模型

直接面向数据库的逻辑结构,是对现实世界的第二次抽象。

数据模型(层次模型,网状模型,关系模型)

3.概念模型的表示方法

最常用的方法:实体-联系方法(E-R)

实体型用矩形表示;(一般都是名词)

属性用椭圆表示;(一般都是名词)

联系用菱形表示;(一般都是动词,联系也可以有属性)

联系主要有一对一、一对多、多对多;

常见的数据模型

1.层次模型:用树形结构表示各类实体及实体间联系。有且仅有一个结点无双亲结点;除根节点外其他结点仅有一个双亲节点(树)

2.网状模型:用网络结构表示各类实体及实体间联系。允许一个以上的结点无双亲结点;一个结点可以有多于一个的双亲结点;

3.关系模型:用二维表的形式表示各类实体及实体间的联系。关系模型是目前最重要的一种数据模型。关系模型的数据结构:是一种二维表结构,由行和列组成;

<关系模型的数据操作与完整性约束>
关系模型的数据操作主要有查询、插入、删除、修改,这些操作必须满足关系模型的完整性约束条件可
①实体完整性规则
②参照完整性规则
③用户定义的完整性规则
<关系模型的优缺点>
优点:
①数据结构单一②关系规范化③概念简单

缺点:
存储路径透明,查询效率步入非关系数据模型;
(4)面向对象模型
常见概念:类、对象、封装继承;
优点:适合处理丰富的数据类型;开发效率高;提高了数据访问的性能;
缺点:没有准确的定义;维护起来比较麻烦;不适合所有应用;

四、关系数据库的规范化 

范式------某一种级别的关系模式的集合,是衡量关系模式规范化程度的标准,符合标准的关系才是规范化的。范式可以分为多个等级:第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、第四范式(4NF)等。

第一范式

(1)第一范式(1NF)关系模式设计中的最基本要求(原子性,属性不可分的再细了)
如果关系模式R中所有的属性都是不可分解的,则称该关系模式R满足第一范式(First Normal Form),简称1NF,记作R∈1NF。
   

第二范式

   (2)第二范式(2NF)(每个表都要有一个主键,其他属性依赖这个主键)
什么是函数依赖?
A B是关系模式R中的两个属性或属性组合,A的值确定--B的值就可以唯一确定,即A函数确定B函数,或者B函数依赖于A函数,记作A->B;
☆ 如果A→B是R的一个函数依赖,且对于A的任何一个真子集A’,A’→B都不成立,则称A→B是完全函数依赖。反之,如果A’→B成立,则称A→B是部分函数依赖(部分确定部分依赖,全部确定完全依赖)
步入正题!
如果一个关系模式R∈1NF,且R中的每一个非主属性都完全函数依赖于码,则称该关系模式R满足第二范式
(Second Normal Form),简称2NF,记作R∈2NF。
2NF是在1NF的基础上建立起来的,要求实体的非主属性必须完全依赖于主码,不能存在仅依赖主码一部分的属性,如果存在则要把这个属性和主码的这一部分分离出来形成一个新的关系。
学生成绩表:
学号,姓名,课程号,课程名,成绩

学号 课程号 成绩

      主码      非主属性

学号 姓名

主码 非主属性

课程号 课程名

主码     非主属性

不满足2NF的关系会出现诸如插入异常、删除异常和修改异常等问题。

第三范式

(3)第三范式(3NF)(各属性直接不能相互依赖,只能依赖主键)
如果一个关系模式R∈2NF,且R中的每个非主属性传递函数依赖于码,则称该关系模式R满足第三范式
(Third Normal Form),简称3NF,记作R∈3NF。
所谓传递函数依赖是指假设A、B、C是关系模式R中的3个属性或属性组合,如果A→B,B A,B A,B→C,则
C对A传递函数依赖,传递函数依赖记作A→C。(A→B→C得A→C
例如,学生信息表(学号,姓名,年龄,班级号,班主任)中,“班主任”依赖于“学号”。“班主任”对“学号”的依赖,是因为“班主任”依赖于“班级号”,“班级号”依赖于“学号”而产生的。这样就构成了传递依赖,因此不符合3NF。
要想让这个关系模式符合3NF,可以将其分解为两个关系模式:
(1)学生信息表(学号,姓名,年龄,班级号)

(2)班级信息表(班级号,班主任)
可以将其分解为三个符合2NF的关系

(1)学生信息表(学号,姓名)

(2)课程信息表(课程号,课程名)

(3)成绩表(学号,课程号,成绩) 

相关文章:

数据库 绪论

目录 数据库基本概念 一.基本概念 1.信息 2.数据 3.数据库&#xff08;DB&#xff09; 4.数据库管理系统&#xff08;DBMS&#xff09; 5.数据库系统&#xff08;DBS&#xff09; 二.数据管理技术的发展 1.人工管理阶段 2.文件系统阶段 3.数据库系统阶段 4.数据库管…...

【AIGC魔童】DeepSeek v3提示词Prompt书写技巧

【AIGC魔童】DeepSeek v3提示词Prompt书写技巧 &#xff08;1&#xff09;基础通用公式&#xff08;适用80%场景&#xff09;&#xff08;2&#xff09;问题解决公式&#xff08;决策支持&#xff09;&#xff08;3&#xff09;创意生成公式&#xff08;4&#xff09;学习提升公…...

Docker 部署 RabbitMQ | 自带延时队列

一、获取镜像 docker pull farerboy/rabbitmq:3.9.9 二、运行镜像 docker run -d --name rabbitmq \n --hostname rabbitmq \n -p 15672:15672/tcp \n -p 5672:5672/tcp \n -v /wwwroot/opt/docker/rabbitmq:/var/lib/rabbitmq \n farerboy/rabbitmq:3.9.9 备注&#xff1a;…...

【‌Unity】Unity中物体的static属性作用

‌Unity中物体的static属性主要用于优化游戏性能和简化渲染过程。‌ Unity中物体的static属性的作用 优化渲染性能‌&#xff1a;当物体被标记为static时&#xff0c;Unity会在游戏运行时将其视为静止的物体&#xff0c;这意味着这些物体的渲染信息不会随着每一帧的更新而变化…...

网络编程基础1

七层协议模型和四层协议模型 七层协议模型&#xff1a;物理层、数据链路层、网络层、传输层、会话层、表示层、应用层 四层协议模型&#xff1a;链路层、网络层、传输层、应用层 TCP通信流程 服务器端 (1)创建socket(socket) (2)绑定自己的IP(bind) (3)监听客户端连接(liste…...

跨越边界,大模型如何助推科技与社会的完美结合?

点击蓝字 关注我们 AI TIME欢迎每一位AI爱好者的加入&#xff01; 概述 2024年&#xff0c;大模型技术已成为人工智能领域的焦点。这不仅仅是一项技术进步&#xff0c;更是一次可能深刻影响社会发展方方面面的变革。大模型的交叉能否推动技术与社会的真正融合&#xff1f;2025年…...

kafka生产端之架构及工作原理

文章目录 整体架构元数据更新 整体架构 消息在真正发往Kafka之前&#xff0c;有可能需要经历拦截器&#xff08;Interceptor&#xff09;、序列化器&#xff08;Serializer&#xff09;和分区器&#xff08;Partitioner&#xff09;等一系列的作用&#xff0c;那么在此之后又会…...

在 Windows 上使用 ZIP 包安装 MySQL 的详细步骤

以下是使用官方 ZIP 包在 Windows 上安装 MySQL 的详细步骤&#xff0c;确保能通过 mysql -uroot -p 成功连接。 步骤 1&#xff1a;下载 MySQL ZIP 包 访问 MySQL 官方下载页面&#xff1a; https://dev.mysql.com/downloads/mysql/选择 Windows (x86, 64-bit), ZIP Archive&…...

【web自动化】指定chromedriver以及chrome路径

selenium自动化&#xff0c;指定chromedriver&#xff0c;以及chrome路径 对应这篇文章&#xff0c;可以点击查看&#xff0c;详情 from selenium import webdriverdef get_driver():# 获取配置对象option webdriver.ChromeOptions()option.add_experimental_option("de…...

记录 | WPF创建和基本的页面布局

目录 前言一、创建新项目注意注意点1注意点2 解决方案名称和项目名称 二、布局2.1 Grid2.1.1 RowDefinitions 行分割2.1.2 Row & Column 行列定位区分 2.1.3 ColumnDefinitions 列分割 2.2 StackPanel2.2.1 Orientation 修改方向 三、模板水平布局【Grid中套StackPanel】中…...

mysql 存储过程和自定义函数 详解

首先创建存储过程或者自定义函数时&#xff0c;都要使用use database 切换到目标数据库&#xff0c;因为存储过程和自定义函数都是属于某个数据库的。 存储过程是一种预编译的 SQL 代码集合&#xff0c;封装在数据库对象中。以下是一些常见的存储过程的关键字&#xff1a; 存…...

Maven 中常用的 scope 类型及其解析

在 Maven 中&#xff0c;scope 属性用于指定依赖项的可见性及其在构建生命周期中的用途。不同的 scope 类型能够影响依赖项的编译和运行阶段。以下是 Maven 中常用的 scope 类型及其解析&#xff1a; compile&#xff08;默认值&#xff09;&#xff1a; 这是默认的作用域。如果…...

SpringCloud - Nacos注册/配置中心

前言 该博客为Nacos学习笔记&#xff0c;主要目的是为了帮助后期快速复习使用 学习视频&#xff1a;7小快速通关SpringCloud 辅助文档&#xff1a;SpringCloud快速通关 源码地址&#xff1a;cloud-demo 一、简介 Nacos官网&#xff1a;https://nacos.io/docs/next/quickstar…...

C++ 继承(1)

1.继承概念 我们平时有时候在写多个有内容重复的类的时候会很麻烦 比如我要写Student Teacher Staff 这三个类 里面都要包含 sex name age成员变量 唯一不同的可能有一个成员变量 但是这三个成员变量我要写三遍 太麻烦了 有没有好的方式呢&#xff1f; 有的 就是继承…...

【C语言】传值调用与传址调用详解

博客主页&#xff1a; [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: C语言 文章目录 &#x1f4af;前言&#x1f4af;传值调用1. 什么是传值调用&#xff1f;2. 示例代码&#xff1a;传值调用失败的情况执行结果&#xff1a; 3. 为什么传值调用无法修改外部变量&#xff1f; &#x1f4…...

蓝桥杯C语言组:图论问题

蓝桥杯C语言组图论问题研究 摘要 图论是计算机科学中的一个重要分支&#xff0c;在蓝桥杯C语言组竞赛中&#xff0c;图论问题频繁出现&#xff0c;对参赛选手的算法设计和编程能力提出了较高要求。本文系统地介绍了图论的基本概念、常见算法及其在蓝桥杯C语言组中的应用&#…...

windows通过网络向Ubuntu发送文件/目录

由于最近要使用树莓派进行一些代码练习&#xff0c;但是好多东西都在windows里或虚拟机上&#xff0c;就想将文件传输到树莓派上&#xff0c;但试了发现u盘不能简单传送&#xff0c;就在网络上找到了通过windows 的scp命令传送 前提是树莓派先开启ssh服务&#xff0c;且Window…...

Unity抖音云启动测试:如何用cmd命令行启动exe

相关资料&#xff1a;弹幕云启动&#xff08;原“玩法云启动能力”&#xff09;_直播小玩法_抖音开放平台 1&#xff0c;操作方法 在做云启动的时候&#xff0c;接完发现需要命令行模拟云环境测试启动&#xff0c;所以研究了下。 首先进入cmd命令&#xff0c;CD进入对应包的文件…...

ZU47DR 100G光纤 高性能板卡

简介 2347DR是一款最大可提供8路ADC接收和8路DAC发射通道的高性能板卡。板卡选用高性价比的Xilinx的Zynq UltraScale RFSoC系列中XCZU47DR-FFVE1156作为处理芯片&#xff08;管脚可以兼容XCZU48DR-FFVE1156&#xff0c;主要差别在有无FEC&#xff08;信道纠错编解码&#xff0…...

【算法】动态规划专题⑥ —— 完全背包问题 python

目录 前置知识进入正题模板 前置知识 【算法】动态规划专题⑤ —— 0-1背包问题 滚动数组优化 完全背包问题是动态规划中的一种经典问题&#xff0c;它与0-1背包问题相似&#xff0c;但有一个关键的区别&#xff1a;在完全背包问题中&#xff0c;每种物品都有无限的数量可用。…...

MySQL——表操作及查询

一.表操作 MySQL的操作中&#xff0c;一些专用的词无论是大写还是小写都是可以通过的。 1.插入数据 INSERT [INTO] table_name (列名称…)VALUES (列数据…), (列数据…); "[]"表示可有可无&#xff0c;插入时&#xff0c;如果不指定要插入的列&#xff0c;则表示默…...

SAP-ABAP:ROLLBACK WORK使用详解

在SAP ABAP 中&#xff0c;ROLLBACK WORK 语句用于回滚当前事务&#xff08;LUW&#xff0c;Logical Unit of Work&#xff09;&#xff0c;撤销自上次提交或回滚以来的所有数据库更改。它通常与 COMMIT WORK 配合使用&#xff0c;确保数据一致性。 关键点&#xff1a; 回滚作…...

C#中深度解析BinaryFormatter序列化生成的二进制文件

C#中深度解析BinaryFormatter序列化生成的二进制文件 BinaryFormatter序列化时,对象必须有 可序列化特性[Serializable] 一.新建窗体测试程序BinaryDeepAnalysisDemo,将默认的Form1重命名为FormBinaryDeepAnalysis 二.新建测试类Test Test.cs源程序如下: using System; us…...

Git提交错误解决:missing Change-Id in message footer

问题现象&#xff1a; 提交的commit中没有插入change id导致push代码失败。 问题解决&#xff1a; 针对该错误&#xff0c;Git已经给出了解决方案&#xff1a; 1、to automatically insert a Change-Id, install the hook: gitdir$(git rev-parse --git-dir); scp -p -P 2…...

51单片机之引脚图(详解)

8051单片机引脚分类与功能笔记 1. 电源引脚 VCC&#xff08;第40脚&#xff09;&#xff1a;接入5V电源&#xff0c;为单片机提供工作电压。GND&#xff08;第20脚&#xff09;&#xff1a;接地端&#xff0c;确保电路的电位参考点。 2.时钟引脚 XTAL1&#xff08;第19脚&a…...

jupyterLab插件开发

jupyter lab安装、配置&#xff1a; jupyter lab安装、配置教程_容器里装jupyterlab-CSDN博客 『Linux笔记』服务器搭建神器JupyterLab_linux_布衣小张-腾讯云开发者社区 Jupyter Lab | 安装、配置、插件推荐、多用户使用教程-腾讯云开发者社区-腾讯云 jupyterLab插件开发教…...

配置#include “nlohmann/json.hpp“,用于处理json文件

#include “nlohmann/json.hpp” // 需要安装 nlohmann/json.hpp 头文件 using json = nlohmann::json; 下载链接:https://github.com/nlohmann/json/tree/develop 1.下载并解压:首先,需要从nlohmann/json的GitHub仓库下载源代码,并解压得到的文件。 地址: nlohmann/json…...

MATLAB | 基于Theil-Sen斜率和Mann-Kendall检验的栅格数据趋势分析

最近看到一些博主分享关于 SenMK 检验的代码&#xff0c;对于新手来说可能有点复杂。我们编写了一段 MATLAB 代码&#xff0c;能够一次性解决这些问题&#xff0c;简化操作流程。我们还准备了几个关于趋势检验的空间分布图&#xff0c;供大家参考。 一、Sens Slope和Mann-Kenda…...

python连点器

要实现一个用于抖音点赞的鼠标连点工具&#xff0c;可以通过编程或现有软件实现。以下是两种常见方法&#xff08;但请注意&#xff1a;频繁自动化操作可能违反平台规则&#xff0c;需谨慎使用&#xff09;&#xff1a; 方法 1&#xff1a;使用现成工具&#xff08;如 AutoClic…...

C#程式状态机及其Godot实践

前言 今天是周日&#xff0c;马上就要迎来新的一周了&#xff0c;前几周都没干什么事&#xff0c;为了减缓偷懒症状&#xff0c;立个Flag从今往后每周至少更新两次文章。内容虽然无法保证优质&#xff0c;但重在坚持&#xff0c;全当写周记了。希望不要三分钟热度吧。 今天记录…...