不直接使用文件存储?浅谈数据库的三级模式及重要概念

本文涉及的产品
实时数仓Hologres,5000CU*H 100GB 3个月
智能开放搜索 OpenSearch行业算法版,1GB 20LCU 1个月
实时计算 Flink 版,5000CU*H 3个月
简介: 【5月更文挑战第21天】本文介绍数据库用于解决传统文件系统如Excel的数据冗余、不一致性和访问困难等问题。关系型数据库通过DBMS实现数据管理,包括外模式(用户视图)、概念模式(全局逻辑结构)和内模式(物理存储)。

1 简介

这里简单介绍为什么会有数据库存在? 直接使用excel这样的文件有哪些问题?

question_ans.png

传统文件系统的问题,文件系统的问题是:

数据冗余:相同的数据可以存储在多个地方。

    数据不一致:如果同一数据的多个副本在每个副本中具有不同的内容。
    例如,学生的电话号码在学术和帐户文件中是不同的。

数据访问:在文件系统中,访问数据也很困难且不安全。无法同时访问数据。
无备份和恢复:文件系统中没有可能导致数据丢失的备份和恢复。

而使用关系型数据库可很好地解决这些问题。

数据模型包含实体、属性、键等,关系指实体间关联。DBMS关系有一对一、一对多、多对一和多对多。键类型有候选键、超级键、主键、外键等,功能依赖分为平凡和非平凡依赖。

2 DBMS关系模式

如何查看和修改你的数据库关系模式?

        查看
        select @@session .sql_mode;

        修改:
        set @@session.sql_mode='xx_mode'
        set session sql_mode='xx_mode'

        配置修改(永久生效):
        打开 vi /etc/my.cnf
        [mysqld]
        sql-mode = "xx_mode"

3 具体含义

三级模式 外模式,概念模式,内模式

1、外模式

对应数据库的升级、外模式包括(子模式 用户模式) 用来描述用户看到或者使用那部分的数据的逻辑结构,用户根据外模式用户数据操作语句或者程序去操作数据库中的数据,外模式的主要特点用来描述组成用户视图各个记录的组成、相互联系、数据的完整性和安全性、数据项的特征等。

2、概念模式

对应数据库的概念模式,概念模式(概念、逻辑模式)用以描述整个数据库中的逻辑结构、用来描叙现实生活中的实体,以及它们之间的关系、从而定义记录数据项的完整性约束条件以及记录之间的联系是数据项的框架 概念模式是数据库中全体数据的逻辑结构和特征的描叙是所有用户数据的公共数据视图。

3、内模式

内模式对应物理级数据库,内模式是所有模式中的最低层的表示,不同于物理层,假设外存是一个无限性的地址空间,内模式是存储记录的类型,存储域以及表示以及存储记录的物理顺序,指示元索引,和存储路径的等数据的存储组织从而形成一个完整的系统

4 数据模型属性和关系

  • 实体:

实体是真实世界的对象,使用矩形框表示。

  • 强实体:
    强实体集有一个主键,可以使用该主键识别该集的所有元组

  • 弱实体:

当实体没有足够的属性来形成主键时。弱实体与另一个强实体集相关联,也称为标识实体。弱实体的存在取决于其识别实体的存在。弱实体使用双线或粗线矩形表示。

  • 属性:

属性是真实世界对象的属性或特征。它使用椭圆表示。

  • 键属性:

唯一确定每个实体的属性称为键属性。它由带有底线的椭圆表示。

  • 复合属性:

由许多其他属性组成的属性。 例如,地址是由州、区、市、街道等其他属性组成的属性。它使用由许多其他椭圆组成的椭圆表示。

  • 多值属性:

可以具有多个值的属性,例如手机号码。它使用双线椭圆表示。

  • 派生属性:

可以从其他属性派生的属性。 例如,年龄是一个属性,可以从另一个属性“出生数据”派生。它使用虚线椭圆表示。

  • 关系:

关系是两个或多个实体之间的关联。实体相互连接或相关,这种关系使用菱形表示。

5 DBMS数据表之间关系

DBMS 关系可以定义为实体集的实体参与关系集的次数。

假设两个实体集 A 和 B 之间存在二元关系 R。关系必须具有以下映射基数之一:

一对一:

当 A 的一个实体最多与 B 的一个实体相关时,反之亦然。

一对多:

当 A 的一个实体与 B 的一个或多个实体相关时,而 B 最多与 A 中的一个实体相关联。

多对一:

当 B 的一个实体与 A 的一个或多个实体相关时,而 A 与 B 中的最多一个实体相关联。

多对多:

A 的任意数量的实体与 B 的任意数量的实体相关,反之亦然。
ER 图中最常见的问题是给定 ER 图中所需的最小表数。

如果关系是一对多或多对一,则可以组合两个或多个关系表。

如果关系为多对多,则不能合并两个表。

如果关系是一对一的,并且有一个实体完全参与,则该实体可以与关系表组合。

如果两个实体都完全参与,则可以通过组合一个表和关系的两个实体来获得一个表。

注意:这是一般性意见。特殊情况需要处理。如果关系的属性无法移动到任何实体端,我们可能需要一个额外的表。

6 数据表中各种键

键:关系中有各种类型的键,它们是:

候选键:可以唯一确定元组的最小属性集。关系可以有多个候选键,其适当的子集不能唯一地确定元组,也不能为 NULL。

超级键:可以唯一确定元组的属性集。候选键始终是超级键,反之亦然。

主键和备用键:在各种候选键中,一个键作为主键,其他键是备用键。

外键:外键是表中的一组属性,用于引用同一表或另一个表的主键或备用键。

功能依赖关系:它是指定一组属性之间的关联/关系的约束。

在函数依赖关系中,一个集合可以准确地确定另一个集合的值。

7 小结

功能依赖关系进一步分为两种类型:

功能依赖:
在函数依赖中,如果B是A的子集,那么这种依赖被称为平凡功能依赖。

非平凡功能依赖:
在功能依赖中,如果 B 不是 A 的子集,则这种依赖称为非平凡功能依赖。

具体可查看之前的文章。

目录
相关文章
|
3月前
|
存储 SQL 分布式数据库
OceanBase 入门:分布式数据库的基础概念
【8月更文第31天】在当今的大数据时代,随着业务规模的不断扩大,传统的单机数据库已经难以满足高并发、大数据量的应用需求。分布式数据库应运而生,成为解决这一问题的有效方案之一。本文将介绍一款由阿里巴巴集团自主研发的分布式数据库——OceanBase,并通过一些基础概念和实际代码示例来帮助读者理解其工作原理。
309 0
|
1月前
|
缓存 算法 关系型数据库
Mysql(3)—数据库相关概念及工作原理
数据库是一个以某种有组织的方式存储的数据集合。它通常包括一个或多个不同的主题领域或用途的数据表。
50 5
Mysql(3)—数据库相关概念及工作原理
|
1月前
|
关系型数据库 MySQL 数据库
MySQL数据库:基础概念、应用与最佳实践
一、引言随着互联网技术的快速发展,数据库管理系统在现代信息系统中扮演着核心角色。在众多数据库管理系统中,MySQL以其开源、稳定、可靠以及跨平台的特性受到了广泛的关注和应用。本文将详细介绍MySQL数据库的基本概念、特性、应用领域以及最佳实践,帮助读者更好地理解和应用MySQL数据库。二、MySQL
109 5
|
1月前
|
SQL 存储 安全
SQL查询数据库:基础概念与操作指南
在数字化时代,数据库已成为信息管理的重要工具之一。作为管理和操作数据库的核心语言,SQL(结构化查询语言)已成为数据管理和查询的关键技能。本文将全面介绍SQL查询数据库的基本概念、语句和操作指南,以帮助初学者快速上手,同时为进阶用户提供有价值的参考。一、数据库与SQL简介数据库是一种存储、管理和检索
40 3
|
30天前
|
SQL NoSQL MongoDB
一款基于分布式文件存储的数据库MongoDB的介绍及基本使用教程
一款基于分布式文件存储的数据库MongoDB的介绍及基本使用教程
41 0
|
3月前
|
资源调度 关系型数据库 MySQL
【Flink on YARN + CDC 3.0】神操作!看完这篇教程,你也能成为数据流处理高手!从零开始,一步步教会你在Flink on YARN模式下如何配置Debezium CDC 3.0,让你的数据库变更数据瞬间飞起来!
【8月更文挑战第15天】随着Apache Flink的普及,企业广泛采用Flink on YARN部署流处理应用,高效利用集群资源。变更数据捕获(CDC)工具在现代数据栈中至关重要,能实时捕捉数据库变化并转发给下游系统处理。本文以Flink on YARN为例,介绍如何在Debezium CDC 3.0中配置MySQL连接器,实现数据流处理。首先确保YARN上已部署Flink集群,接着安装Debezium MySQL连接器并配置Kafka Connect。最后,创建Flink任务消费变更事件并提交任务到Flink集群。通过这些步骤,可以构建出从数据库变更到实时处理的无缝数据管道。
290 2
|
3月前
|
存储 SQL 算法
【OceanBase】惊天大反转!启动时真的会占用95%磁盘空间?别怕!揭秘真相+实用调整技巧,手把手教你如何优雅地管理磁盘空间,让你的数据库从此告别“吃土”模式!
【8月更文挑战第15天】OceanBase是一款高性能分布式数据库,启动时并不会默认占用95%磁盘空间,这是一种误解。其设计注重资源管理,可根据业务需求动态调整空间使用。通过设置`max_disk_usage`等参数、优化表设计、定期清理数据及启用压缩等功能,可有效控制磁盘占用,确保高效利用存储资源。
79 1
|
3月前
|
SQL 数据库 Java
Hibernate 日志记录竟藏着这些秘密?快来一探究竟,解锁调试与监控最佳实践
【8月更文挑战第31天】在软件开发中,日志记录对调试和监控至关重要。使用持久化框架 Hibernate 时,合理配置日志可帮助理解其内部机制并优化性能。首先,需选择合适的日志框架,如 Log4j 或 Logback,并配置日志级别;理解 Hibernate 的多级日志,如 DEBUG 和 ERROR,以适应不同开发阶段需求;利用 Hibernate 统计功能监测数据库交互情况;记录自定义日志以跟踪业务逻辑;定期审查和清理日志避免占用过多磁盘空间。综上,有效日志记录能显著提升 Hibernate 应用的性能和稳定性。
50 0
|
3月前
|
SQL API 数据库
揭秘Ruby数据库交互的黑科技!ActiveRecord模式:为何它让数据库操作如此“随心所欲”?
【8月更文挑战第31天】在Ruby编程中,与数据库交互至关重要。ActiveRecord作为Ruby on Rails框架的核心组件,凭借其简洁高效的特点,成为处理数据库操作的首选。本文深入探讨ActiveRecord模式,介绍其如何简化数据库交互,并通过示例代码展示具体应用。ActiveRecord是一种ORM框架,将数据库表映射为Ruby类,使开发者能通过操作对象间接管理数据库记录。其核心特性包括模型定义、关联管理、数据验证、事务处理及强大的查询接口。通过示例代码,展示了如何定义模型、创建记录、查询记录及处理关联,突显了ActiveRecord在简化数据库操作方面的优势。
64 0
|
5月前
|
存储 关系型数据库 MySQL
关系型数据库mysql数据文件存储
【6月更文挑战第15天】
110 4