数据库:为什么不直接使用文件存储?三级模式和重要概念

1 简介

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

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

markdown 复制代码
数据冗余:相同的数据可以存储在多个地方。

    数据不一致:如果同一数据的多个副本在每个副本中具有不同的内容。
    例如,学生的电话号码在学术和帐户文件中是不同的。
    
数据访问:在文件系统中,访问数据也很困难且不安全。无法同时访问数据。
无备份和恢复:文件系统中没有可能导致数据丢失的备份和恢复。
    

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

2 DBMS关系模式

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

ini 复制代码
        查看
        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"
        

2.1 具体含义

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

1、外模式

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

2、概念模式

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

3、内模式

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

3 数据模型属性和关系

  • 实体:

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

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

  • 弱实体:

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

  • 属性:

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

  • 键属性:

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

  • 复合属性:

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

  • 多值属性:

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

  • 派生属性:

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

  • 关系:

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

4 DBMS数据表之间关系

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

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

一对一:

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

一对多:

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

多对一:

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

多对多:

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

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

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

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

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

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

5 数据表中各种键

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

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

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

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

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

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

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

小结

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

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

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

具体可查看之前的文章。

相关推荐
码农派大星。2 分钟前
Spring Boot 配置文件
java·spring boot·后端
小码的头发丝、35 分钟前
Django中ListView 和 DetailView类的区别
数据库·python·django
杜杜的man43 分钟前
【go从零单排】go中的结构体struct和method
开发语言·后端·golang
幼儿园老大*44 分钟前
走进 Go 语言基础语法
开发语言·后端·学习·golang·go
llllinuuu1 小时前
Go语言结构体、方法与接口
开发语言·后端·golang
Karoku0661 小时前
【企业级分布式系统】Zabbix监控系统与部署安装
运维·服务器·数据库·redis·mysql·zabbix
cookies_s_s1 小时前
Golang--协程和管道
开发语言·后端·golang
为什么这亚子1 小时前
九、Go语言快速入门之map
运维·开发语言·后端·算法·云原生·golang·云计算
想进大厂的小王1 小时前
项目架构介绍以及Spring cloud、redis、mq 等组件的基本认识
redis·分布式·后端·spring cloud·微服务·架构
周全全1 小时前
MySQL报错解决:The user specified as a definer (‘root‘@‘%‘) does not exist
android·数据库·mysql