第6章:数据库设计基础知识

数据库基本概念

  数据(Data)是描述事物的符号记录,它具有多种表现形式,可以是文字、图形、图像、声音和语言等。数据库系统(DataBase System,DBS)是一个采用了数据库技术,有组织地、动态地存储大量相关联数据,从而方便多用户访问的计算机系统。广义上讲,DBS包括了数据库管理系统(DataBase Management System,DBMS)。
  数据库(DataBase,DB)是统一管理的、长期储存在计算机内的,有组织的相关数据的集合。其特点是数据间联系密切、冗余度小、独立性较高、易扩展,并且可为各类用户共享。DBMS是数据库系统的核心软件,是由一组相互关联的数据集合和一组用以访问这些数据的软件组成。

数据模型

  数据库的基础结构是数据模型,是用来描述数据的一组概念和定义。数据模型的三要素是数据结构、数据操作和数据的约束条件。

  1. 数据结构。对象类型的集合,是对系统静态特性的描述。
  2. 数据操作。对数据库中各种对象(型)的实例(值)允许执行的操作集合,包括操作及操作规则。如操作有检素、插入、删除和修改,操作规则有优先级等。数据操作是对系统动态特性的描述。
  3. 数据的约束条件。是一组完整性规则的集合。也就是说,对于具体的应用数据必须遵循特定的语义约束条件,以保证数据的正确、有效和相容。

数据库管理系统

1.DBMS功能
DBMS功能主要包括数据定义、数据库操作、数据库运行管理、数据组织、存储和管理、数据库的建立和维护。

  1. 数据定义
    DBMS提供数据定义语言(Data Definition Language,DDL),可以对数据库的结构进行描述,包括外模式、模式和内模式的定义;数据库的完整性定义:安全保密定义,如口令、级别和存取权限等。这些定义存储在数据字典中,是DBMS运行的基本依据。
  2. 数据库操作
    DBMS向用户提供数据操纵语言(Data Manipulation Language,DML),实现对数据库中数据的基本操作,如检索、插入、修改和删除。
  3. 数据库运行管理。
    数据库在运行期间,多用户环境下的并发控制、安全性检查和存取控制、完整性检查和执行、运行日志的组织管理、事务管理和自动恢复等都是DBMS的重要组成部分。这些功能可以保证数据库系统的正常运行。
  4. 数据组织、存储和管理。
    DBMS分类组织、存储和管理各种数据,包括数据字典、用户数据和存取路径等。要确定以何种文件结构和存取方式在存储级别上组织这些数据,以提高存取效率。实现数据间的联系、数据组织和存储的基本目标是提高存储空间的利用率。
  5. 数据库的建立和维护。
    数据库的建立和维护,包括数据库的初始建立、数据的转换、数据库的转储和恢复、数据库的重组和重构、性能监测和分析等。
  6. 其他功能。
    如DBMS与网络中其他软件系统的通信功能,一个DBMS与另一个DBMS或文件系统的数据转换功能等。

数据库三级模式

  从数据库管理系统的角度,数据库也分为三级模式,分别是外模式、概念模式和内模式

  1. 视图层(View Level)是最高层次的抽象,描述整个数据库的某个部分的数据。
  2. 逻辑层(Logical Level)是比物理层更高一层的抽象,描述数据库中存储的数据以及这些数据间存在的关系。
  3. 物理层(Physical Level)是最低层次的抽象,描述数据在存储器中是如何存储的。物理层详细地描述复杂的底层结构。

  数据库系统采用三级模式结构,这是数据库管理系统内部的系统结构。数据库有“型”和“值”的概念,“型”是指对某一数据的结构和属性的说明,“值”是型的一个具体赋值。

关系数据库

关系的基本术语

  1. 属性(Attribute):在现实世界中,要描述一个事物常常取若干特征来表示。这些特征称为属性。例如学生通过学号、姓名、性别、系别、年龄、籍贯等屆性米描述。
  2. (Domain):每个属性的取值范围对应一个值的集合,称为该属性的域。例如,学号的域是6位整型数:姓名的域是10位字符:性别的域为{男,女}等。一般在关系数据模型中,对域还加了一个限制,即所有的城都应是原子数据(Atomic Data)。
  3. 目或度(Degree):目或度指的是一个关系中属性的个数。
  4. 候选码(Candidate Key):若关系中的某一属性或属性组的值能唯一的标识一个元组,则称该属性或属性组为候选码。
  5. 主码(Primary Key):或称主键,若—个关系有多个候选码,则选定其中一个作为主码。
  6. 主属性(Prime Atribute):包含在任何候选码中的属性称为主属性。不包含在任何候选码中的属性称为非主属性(Non-Prime Attribute)。
  7. 外码(Foreign Key):如果关系模式R中的属性或属性组不是该关系的码,但它是其他关系的码,那么该属性集对关系模式R而言是外码。
  8. 全码(All-key):关系模型的所有属性组是这个关系模式的候选码,称为全码。
    例如,关系模式R(T,C,S),属性T表示教师,属性C表示课程,属性S表示学生。假设一个教师可以讲授多门课程,某门课程可以由多个教师讲授,学生可以听不同教师讲授的不同课程,那么,要想区分关系中的每一个元组,这个关系模式R的码应为全属性T、C和S,即ALL-KEY。
  9. 笛卡尔积

关系的完整性约束

  (1)实体完整性(Entity Integrity)。实体完整性规则要求每个数据表都必须有主键,而作为主键的所有字段,其属性必须是唯一且非空值。
  (2)参照完整性(Referential Integrity)。现实世界中的实体之间往往存在某种联系,在关系模型中实体及实体间的联系是用关系来描述的,这样自然就存在着关系与关系间的引用。若在关系模式主属性上加实下画线,通常表示该属性为主码属性:如果在关系模式属性上加虚下画线,通常表示该属性为外码属性。
  (3)用户定义完整性(User Defined Integrity)。就是针对某一具体的关系数据库的约束条件,反映某一具体应用所涉及的数据必须满足的语义要求,由应用的环境决定。例如,银行的用户账户规定必须大于等于100000,小于999999。

关系运算

连接(Join)

  • 1)等值连接(Equijoin)
  • 2)自然连接(Natural Join)是一种特殊的等值连接,它要求两个关系中进行比较的分量必须是相同的属性组,并且在结果集中将重复属性列去掉

  特别需要说明的是:一般连接是从关系的水平方向运算,而自然连接不仅要从关系的水平方向,而且也要从关系的垂直方向运算。因为自然连接要去掉重复属性,如果没有重复属性,那么自然连接就转化为笛卡儿积。

外连接(OuterJion)
  外连接运算是连接运算的扩展,可以处理缺失的信息。外连接运算有三种:左外连接、右外连接和全外连接。

  1. 左外连接(Left Outer Jion)
    左外连接:取出左侧关系中所有与右侧关系中任一元组都不匹配的元组,用空值null充填所有来白右侧关系的属性,构成新的元组,将其加入自然连接的结果中。
  2. 右外连接(Right OuterJion)
    右外连接:取出右侧关系中所有与左侧关系中任一元组都不匹配的元组,用空值null填充所有来自左侧关系的属性,构成新的元组,将其加入自然连接的结果中。
  3. 全外连接(Full OuterJion)全外连接:完成左外连按和右外连按的操作。即填充左侧关系中所有与右侧关系中任一元组都不匹配的元组,又填充右侧关系中所有与左侧关系中任一元组都不匹配的元组,将产生的新元组加入自然连接的结果中。

规范化

  1. 1NF
    【定义6.7】若关系模式R的每一个分量都是不可再分的数据项,则关系模式R属于第一范式。
  2. 2NF
    【定义6.8】若关系模式满足第一范式,且每一个非主属性完全依赖于码,则关系模式。
  3. 3NF
    在满足第二范式的基础上,消除了非主属性对码的传递函数依赖

数据库设计

数据库设计的基本步骤

  一般将数据库设计分为如下6个阶段。

  • (1)用户需求分析。数据库设计人员采用一定的辅助工具对应用对象的功能、性能、限制等要求进行科学的分析。
  • (2)概念结构设计。概念结构设计是对信息分析和定义,如视图模型化、视图分析和汇总。对应用对象精确地抽象、概括而形成独立于计算机系统的企业信息模型。描述概念模型的较理想的工具是E-R图。
  • (3)逻辑结构设计。将抽象的概念模型转化为与选用的DBMS产品所支持的数据模型相符合的逻辑模型,它是物理结构设计的基础。包括模式初始设计、子模式设计、应用程序设计、模式评价以及模式求精。
  • (4)物理结构设计。是逻辑模型在计算机中的具体实现方案。
  • (5)数据库实施阶段。数据库设计人员根据逻辑设计和物理设计阶段的结果建立数据库,编制与调试应用程序,组织数据入库,并进行试运行。
  • (6)数据库运行和维护阶段。数据库应用系统经过试运行即可投入运行,但该阶段需要不断地对系统进行评价、调整与修改。

NoSQL数据库

  NoSQL最常见的解释是Non-Relational,Not Only SQL也被很多人接受。NOSQL仅仅是一个概念,泛指非关系型的数据库,区别于关系数据库,它们不保证关系数据的ACID特性。对NoSQL最普遍的解释是“非关联型的”,强调Key-Value Stores和文档数据库的优点,而不是单纯的反对RDBMS。NoSQL数据库的产生就是为了面对大规模数据集合和多重数据种类带来的挑战,特别是大数据应用难题。

分类与特点

  当前出现了很多不同类型、面向不同应用的NoSQL产品,按照所使用的数据结构的类型,一般可以将NOSQL数据库分为以下4种类型。

  1. 列式存储数据库
    行式数据库即传统的关系型数据库,数据按记录存储,每一条记录的所有属性存储在一行。列式数据库是按数据库记录的列来组织和存储数据的,数据库中每个表由一组页链的集合组成,每条页链对应表中的一个存储列。这类数据库通常是用来应对分布式存储的海量数据。键仍然存在,但是它们的特点是指向了多个列。这些列是由列家族来安排的。现有产品如Cassandra、HBase、Riak。
  2. 键值对存储数据库
    键值存储的典型数据结构一般为数组链表:先通过Hash算法得出Hashcode,找到数组的某一个位置,然后插入链表。
    这类数据库主要会用到一个哈希表,表中有一个特定的键和一个指针指向特定的数据。Key-value模型对于1T系统来说,其优势在于简单、易部署。但是如果数据库管理员只对部分值进行查询或更新的时候,Key-value就品得效率低下了。现有产品如TokyoCabinet/Tyrant、Redis.Voldemort.OracleBDB.
  3. 文档型数据库
    文档型数据库同键值对存储数据库类似。文档型数据库的灵感来自于LotusNotes办公软件,而且它同键值存储相类似。该类型的数据模型是版本化的文档,半结构化的文档以特定的格式存储,比如JSON。文档型数据库可以看作是键值数据库的升级版,允许嵌套键值,在处理网页等复杂数据时,文档型数据库比传统键值数据库的查询效率更高。现有产品如CouchDB、MongoDb,国内也有文档型数据库SequoiaDB,已经开源。
  4. 图数据库
    图形结构的数据库同其他采用行列以及刚性结构的SQL数据库不同,它使用灵活的图形模型,并且能够扩展到多个服务器上。NoSQL数据库没有标准的查询语言(SQL),因此进行数据库查询需要指定数据模型。许多NoSQL数据库都有REST式的数据接又或者查询API。适合存储通过图进行建模的数据,例如社交网络数据,生物信息网络数据,交通网络数据等。常见的产品有Neo4j、InfoGrid、InfiniteGraph等。

目前业界对于NoSQL并没有一个明确的范围和定义,但是它们普遍存在下面一些共同特征:

  • 易扩展:去掉了关系数据库的关系型特性。数据之间无关系,这样就非常容易扩展。
  • 大数据量,高性能:NoSQL数据库都具有非常高的读写性能,尤其在大数据量下。这得益于它的无关系性,数据库的结构简单。
  • 灵活的数据模型:NoSQL无须事先为要存储的数据建立字段,随时可以存储自定义的数据格式。
  • 高可用:NoSQL在不太影响性能的情况下,就可以方便地实现高可用的架构,有些产品通过复制模型也能实现高可用。

体系框架

  NOSQL整体框架分为4层,由下至上分为数据持久层(Data Persistence)、数据分布层(Data Distribution Model)、数据逻辑模型层(Data Logical Model)和接口层(Interface),层次之间相辅相成,协调工作。

  1. 数据持久层定义了数据的存储形式,主要包括基于内存、硬盘、内存和硬盘接口、订制可插拔4种形式。基于内存形式的数据存取速度最快,但可能会造成数据丢失;基于硬盘的数据存储可能保存很久,但存取速度慢于基于内存形式的数据:内存和硬盘相结合的形式,结合了前两种形式的优点,既保证了速度,又保证了数据不丢失:订制可插拔则保证了数据存取具有较高的灵活性。
  2. 数据分布层定义了数据是如何分布的,相对于关系型数据库,NoSQL可选的机制比较多,主要有3种形式:一是CAP支持,可用于水平扩展;二是多数据中心支持,可以保证在横跨多数据中心时也能够平稳运行:三是动态部署支持,可以在运行着的集群中动态地添加或删除结点。
  3. 数据逻辑层表述了数据的逻辑表现形式。
  4. 接口层为上层应用提供了方便的数据调用接口,提供的选择远多于关系型数据库。接口层提供了5种选择:Rest、Thrift、Map/Reduce、Get/Put、特定语言API,使得应用程序和数据库的交互更加方便。

  NoSQL分层架构并不代表每个产品在每一层只有一种选择。相反,这种分层设计提供了很大的灵活性和兼容性,每种数据库在不同层面可以支持多种特性。
NoSQL数据库在以下这几种情况比较适用:

  • 数据模型比较简单;
  • 需要灵活性更强的IT系統:
  • 对数据库性能要求较高;
  • 不需要高度的数据一致性;
  • 对于给定key,比较容易映射复杂值的环境。

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

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

相关文章

3162. 优质数对的总数 I

给你两个整数数组 nums1 和 nums2&#xff0c;长度分别为 n 和 m。同时给你一个正整数 k。 如果 nums1[i] 可以被 nums2[j] * k 整除&#xff0c;则称数对 (i, j) 为 优质数对&#xff08;0 < i < n - 1, 0 < j < m - 1&#xff09;。 返回 优质数对 的总数。 示…

第100天:权限提升-数据库RedisPostgre第三方软件TV向日葵服务类

目录 思维导图 案例一: 数据库-Redis 数据库权限提升-计划任务 案例二: 数据库-PostgreSQL 数据库权限提升-漏洞 PostgreSQL 提权漏洞&#xff08;CVE-2018-1058&#xff09; PostgreSQL 高权限命令执行漏洞&#xff08;CVE-2019-9193&#xff09; 案例三: 三方应用-…

【数据结构与算法 经典例题】(C语言)反转链表图文详解

&#x1f493; 博客主页&#xff1a;倔强的石头的CSDN主页 &#x1f4dd;Gitee主页&#xff1a;倔强的石头的gitee主页 ⏩ 文章专栏&#xff1a;《数据结构与算法 经典例题》C语言 期待您的关注 ​ 目录 一、问题描述 二、解题思路分析 三、代码实现 一、问题描述 二、解题…

c++ 函数作为参数

在C中&#xff0c;函数指针或函数对象可以作为参数传递给另一个函数&#xff0c;实现了函数的动态调用和灵活性。这种机制在回调函数、事件处理、泛型编程等领域中非常有用。 1.函数指针作为参数&#xff1a; 函数指针可以指向特定函数&#xff0c;并被用作参数传递给另一个函数…

uniapp使用uQRCode页面不显示也不报错

我使用的版本是&#xff1a;4.0.6 引入到项目中后根据官方的配置教程进行配置&#xff1a; 但是页面上就是不显示&#xff0c;也不报错&#xff0c;看官网发现步骤也没问题 解决方法&#xff1a; 这句话代表的是uQrcode会被自动引用注册&#xff0c;但是你引过组件库或者别的…

Java进阶学习笔记37——正则表达式

正则表达式&#xff1a; 就是由一些特定的字符组成的&#xff0c;代表的是一个规则。 作用&#xff1a; 1&#xff09;用来校验数据格式是否合法&#xff1b; 校验电话号码是否合法&#xff1b; 校验邮箱是否合法&#xff1b; 用户输入的QQ号码是否合法&#xff1b; 2&…

QT treeWidget如何添加虚线

1、添加以下代码即可&#xff1a; ui.treeWidget->setStyle(QStyleFactory::create("windows"));2、效果如下&#xff1a;

基于 vue-element-template 框架添加 tagsview

1. 需求 vue-element-template 是一个基础模板&#xff0c;默认没有 tagsview。所以要手动添加。 参考最全面的集成方案框架 vue-element-admin &#xff0c;拷贝和修改相关文件到你的项目中。 2. 修改 复制如下文件或文件夹 \src\layout\components\TagsView\src\store\mo…

Windows11+Ubuntu24.04双系统安装及配置

目录 0. 前言1. Ubuntu24.04的安装2. Ubuntu24.04的配置2.1 基本配置2.2 开发环境配置 0. 前言 我去年在做一个项目的时候需要用到ros&#xff0c;ros需要运行在Ubuntu系统上。但我的笔记本电脑配置不是很好&#xff0c;采用虚拟机运行的想法随之被否决&#xff0c;决定采用安…

【ZZULI数据结构实验四】:C语言排序算法大比拼

&#x1f4c3;博客主页&#xff1a; 小镇敲码人 &#x1f49a;代码仓库&#xff0c;欢迎访问 &#x1f680; 欢迎关注&#xff1a;&#x1f44d;点赞 &#x1f442;&#x1f3fd;留言 &#x1f60d;收藏 &#x1f30f; 任尔江湖满血骨&#xff0c;我自踏雪寻梅香。 万千浮云遮碧…

分离式光电液位传感器与浮球开关相比具有哪些优势

分离式光电液位传感器与浮球开关相比有哪些优势&#xff1f;分离式光电液位传感器依据光学原理&#xff0c;在传统光学传感器的基础上进行了改进。其特点是将光学组件分离出来&#xff0c;置于水箱外部感应&#xff0c;而传感器本身则独立于水箱外。这种设计有效解决了浮球开关…

EtherCAT 和 UDP 通讯的实时性 区别

EtherCAT 和 UDP 是两种不同的通信协议&#xff0c;它们在实时性方面有着本质的区别&#xff0c;主要体现在以下几个方面&#xff1a; 实时性设计目的&#xff1a; EtherCAT 是专为工业自动化设计的实时以太网协议&#xff0c;它通过独特的数据通信机制实现了极高的实时性能。E…

【智能算法】花斑翠鸟优化算法(PKO)原理及实现

目录 1.背景2.算法原理2.1算法思想2.2算法过程 3.结果展示4.参考文献5.代码获取 1.背景 2024年&#xff0c;A Bouaouda受到自然界中花斑翠鸟社会行为启发&#xff0c;提出了花斑翠鸟优化算法&#xff08;Pied Kingfisher Optimizer, PKO&#xff09;。 2.算法原理 2.1算法思想…

mac安装nigix

1. 查看是否存在 nginx 执行brew search nginx 命令查询要安装的软件是否存在 brew search nginx 2. 安装nginx brew install nginx 3. 查看版本 nginx -v 4. 查看信息 查看ngxin下载的位置以及nginx配置文件存放路径等信息 brew info nginx 下载的存放路径 /usr/loca…

Vue3-Pinia状态管理器

Pinia 是 Vue 的专属状态管理库&#xff0c;它允许你跨组件或页面共享状态。如果你熟悉组合式 API 的话&#xff0c;你可能会认为可以通过一行简单的 export const state reactive({}) 来共享一个全局状态。对于单页应用来说确实可以&#xff0c;但如果应用在服务器端渲染&…

OVF(Open Virtualization Format)或OVA(Open Virtual Appliance)格式有什么区别

OVF&#xff08;Open Virtualization Format&#xff09;和OVA&#xff08;Open Virtual Appliance&#xff09;是两种不同的文件格式&#xff0c;它们都是用于虚拟机的打包和交换的开放标准。以下是它们之间的主要区别&#xff1a; 1. **OVF&#xff08;Open Virtualization …

Ant-Design-Vue动态表头并填充数据

Ant-Design-Vue动态表头并填充数据 Ant-Design-Vue 是一个基于 Vue.js 的前端UI框架&#xff0c;它继承了 Ant Design 的优秀设计理念&#xff0c;并针对 Vue.js 进行了深度优化。在实际开发过程中&#xff0c;我们经常需要处理各种复杂的表格数据&#xff0c;而 Ant-Design-V…

Renesas MCU之使用Keil搭建开发环境

目录 概述 1 软件安装 1.1 软件版本信息 1.2 安装FSP 1.3 安装和配置Keil 2 使用FSP创建工程 2.1 FSP中配置参数 2.2 配置板卡硬件资源 3 Keil中配置项目 3.1 在Keil配置FSP 3.2 添加user src目录 3.3 配置下载项 3.4 测试下载功能 4 使用stm32 NUCLEO板卡的ST-L…

elementplu父级页面怎么使用封装子组件原组件的方法

一、使用原因&#xff1a; 封装了el-table&#xff0c;表格中有多选&#xff0c;父级要根据指定状态&#xff0c;让其选择不上&#xff0c;需要用到elementplus中table原方法toggleRowSelection 附加小知识点&#xff1a;&#xff08;el-tree刷新树后之前选中的保持高亮setCurr…

前端面试宝典总结3-JavaScript(2)

前端面试宝典总结之JavaScript&#xff08;2&#xff09; 本文章 对各大学习技术论坛知识点&#xff0c;进行总结、归纳自用学习&#xff0c;共勉&#x1f64f; 上一篇&#x1f449;: 前端面试宝典总结3-JavaScript&#xff08;1&#xff09; 文章目录 前端面试宝典总结之Ja…