?《数据库系统概念》1-数据抽象、模型及SQL

?DBMS(database-management system)包括数据库和用于存取数据的程序,DBMS的基本目标是为数据的存取提供方便、高效的方式,此外对大多数企业来说,数据是非常重要的,所以DBMS还要保证数据的安全,比如在系统奔溃或收到未授权访问请求的时候。

一、数据抽象
a) 数据库系统隐藏了数据在存储、维护方面的细节,以视图的形式为用户提供数据。数据库系统必须能满足高效地查询数据的需求,为此设计者将数据库系统抽象为三层:物理层、逻辑层、视图层
b) 物理层,描述了数据在物理存储介质的实际存储方式;
逻辑层,描述了数据在数据库的存储方式以及数据之间的逻辑关系,尽管为了实现这些逻辑关系需要复杂的物理关系,逻辑层为用户隐藏了这些复杂性。
视图层,是对数据库最高级别的抽象,虽然逻辑层隐藏了物理层的复杂度,但对于一个完整的数据库所储存的信息来说,逻辑层仍然是非常复杂的,除了DBA有时可能直接操作逻辑层,普通用户往往只需要访问其中的一部分数据,视图层就是为了简化普通用户与数据库的交互而存在的。同一个数据库可以有多份视图。
c) 随着数据的增删改,数据库会不断变化。在某一刻数据库中所有信息的集合称为Instance;而数据库的整体结构称为Schema,Schema很少发生变化。用程序来类比的话,Schema相当于预先声明的变量,Instance则相当于变量的值。
数据库有不同的分层,对应就有不同的Schema,视图层甚至有多个subschema。

二、数据模型
数据模型是用于描述数据、数据关系、数据语义、一致性约束的一系列工具的集合。数据模型可以从物理、逻辑、视图的层面描述数据库的设计,有多种类型:
a) Relational Model
关系模型用表来描述数据及相互关系,每张表有多个列,每个列有唯一的名称,表和表之间又存在一定的关系。关系模型是一种基于记录的模型,采用这种模型记录的数据都有固定数量的字段或属性(列),这种模型的使用最为广泛。
b) Entity-Relationship Model
E-R模型用了实体和实体间关系这样的概念,实体对应于现实世界的对象。这种模型也被广泛使用。
c) Object-Based Data Model
由于面向对象的编程语言成为主流,基于对象的数据模型也应运而生,这种模型结合和关系模型和E-R模型的特性,并增加了封装、方法等面向对象的思想。
d) Semistructured Data Model
在XML等半结构化的数据模型中,允许数据有不同的字段,这与之前的模型都不相同。

三、数据库语言
SQL包含DDL(data-definition language)和DML(data-manpulate language)。
a) DML
DML用于对数据的操作如增删改查,分为过程化DML和非过程化DML,前者在使用时要指定需要操作的数据以及操作的方式,后者只需要指定需要的数据就可以了,剩下的交给数据库系统(将查询语句翻译成对物理层的操作),所以后者更容易学习和使用。
b) DDL
DDL用于定义数据的schema、存取方式、约束等。
域约束(domain constraints):对数据类型的约束,每次插入数据都会检查
参照完整性(referential

ingegrity):要保证被关联的对象是存在的,比如course表中dept_name与department表的某列关联,那么dept_name的值必须是department实际存在的。数据库的修改有可能会破坏参照完整性,这时应该阻止操作以避免破坏参照完整性。
断言(assertions):是数据库在任何时候都必须满足的条件,域约束和参照完整性是特殊的断言。一般的对类似“每个部门必须提供至少5个节目”这样的限制就可以创建断言,然后每次对数据改动前都会检查是否满足断言。
权限(authorization):常见的权限类型有读取、插入、更新、删除等,可以控制用户拥有某几项权限。
DDL语句执行的结果为数据字典,这种数据字典可以看作是只能被数据库系统维护的特殊表。数据库在进行数据的查询、操作前都会先查阅数据字典。

学习资料:Database System Concepts, by Abraham Silberschatz, Henry F.Korth, S.Sudarshan

时间: 2024-10-09 06:38:03

?《数据库系统概念》1-数据抽象、模型及SQL的相关文章

《数据库系统概念》学习笔记2

第二章       关系模型 a.关系代数基本运算有:选择.投影.并.集合差.笛卡尔积.和更名 b.附加的关系代数运算:集合交.自然连接.除运算.赋值运算. c.扩展的关系代数运算:广义投影,聚集函数,外连接 d.数据库的修改:删除,插入,更新 小结 A.关系数据模型建立在表的集合的基础之上.数据库系统的用户可以对这些表进行查询,可以插入新元组.删除元组以及更新(修改)元组. B.关系代数定义了一套在表上运算,且输出结果也是表的代数运算.这些运算可以混合使用以得到表达所希望查询的表达式.关系代数

从经典架构项目中透析微服务架构的核心概念和充血模型

微服务架构和SOA区别 微服务现在辣么火,业界流行的对比的却都是所谓的Monolithic单体应用,而大量的系统在十几年前都是已经是分布式系统了,那么微服务作为新的理念和原来的分布式系统,或者说SOA(面向服务架构)是什么区别呢? 我们先看相同点: 需要Registry,实现动态的服务注册发现机制:需要考虑分布式下面的事务一致性,CAP原则下,两段式提交不能保证性能,事务补偿机制需要考虑:同步调用还是异步消息传递,如何保证消息可靠性?SOA由ESB来集成所有的消息:都需要统一的Gateway来汇

flume的基本概念,数据流模型

1.flume的基本概念 本文中所有与flume相关术语都采用斜体英文表示,这些术语的含义如下所示. flume             一个可靠的,分布式的,用于采集,聚合,传输海量日志数据的系统. Web Server   一个产生 Events 的系统. Agent            flume 系统中的一个节点,它主要包含三个部件:Source, Channel, Sink. Event            事件,在 flume-agent 内部传输的数据结构.一个 Event 由

数据库系统概念 - 关于这本书

它是什么? 西尔伯沙茨 等著,最新版本第六版 <Database System Concepts> 将数据库系统的概念,要和数据库厂商(如:Oracle,MySql 等等)区分开来.另外,很多高校选择作为本科生,研究生的数据库课程教材. 豆瓣评分80% 四星以上.其中,一个强烈推荐的评语: 我每天读一章.大约每天3小时,在索引,查询处理那两章花了8小时以上,在范式那节重新整理下以前的看法,非常不错的书,翻译的也不错.相比国内的<数据库系统概论>,这书适合自学,并且非常详细,算法伪代

深度神经网络全面概述:从基本概念到实际模型和硬件基础

国内镜像:苏轶然-CSDN 论文地址:https://arxiv.org/pdf/1703.09039.pdf 原文地址:机器之心-深度神经网络全面概述:从基本概念到实际模型和硬件基础 目前,包括计算机视觉.语音识别和机器人在内的诸多人工智能应用已广泛使用了深度神经网络(deep neural networks,DNN).DNN 在很多人工智能任务之中表现出了当前最佳的准确度,但同时也存在着计算复杂度高的问题.因此,那些能帮助 DNN 高效处理并提升效率和吞吐量,同时又无损于表现准确度或不会增加

MySQL Workbench将模型生成SQL文件出错

采用MySQL Workbench 设计好表和表关系后,从 File | Export 菜单中,选择 Forward Engineer SQL CREATE Script(正向引擎), 将我们的模型生成SQL文件出错: [Window Title]MySQL Workbench [Main Instruction]Error [Content]Could not save to file 'ORDER.sql': Failed to create file 'ORDER.sql.B9GCYY':

数据库系统概念:基础的SQL

public class DataBase { public static void main() { } } /* 3.1 SQL查询语言概览 SQL语言有一下几个部分: 数据定义语言:提供定义关系模式,删除关系以及修改关系模式的命令 数据操纵语言:提供从数据库中查询信息,以及在数据库中插入元组,删除元组,修改元组的能力 完整性:定义完整性约束的命令 视图定义: 事务控制:定义事务的开始和结束的命令 嵌入式SQL和动态SQL:嵌入式和和动态SQL定义SQL语如何嵌入到通用编程语言 授权:定义了

数据库系统概念笔记-引言

 数据库管理系统(DBMS)由一个互相关联的数据的集合和一组用以访问这些数据的程序组成.这个数据集合通常称作数据库,其中包含了关于某个企业的信息.   DBMS的主要目标是要提供一种可以方便.高效地存取数据库信息的途径. 1.1 数据视图 1.1.1 数据抽象 一个可用的系统必须能高效地检索数据.这种高效性的需求促使设计者在数据库中使用了复杂的数据结构来表示数据,但是,有很多数据库用户不懂这些.为此,数据库的系统开发人员通过如下几个层次上的抽象来对用户屏蔽复杂性,以简化用户与系统的交互: 物理层

JStorm:概念与编程模型

1.集群架构 JStorm从设计的角度,就是一个典型的调度系统,简单集群的架构如下图所示,其中Nimbus可增加一个备节点,多个Supervisor节点组成任务执行集群. 1.1.Nimbus Nimbus是作为整个集群的调度器角色,负责分发topology代码.分配任务,监控集群运行状态等,其主要通过ZK与supervisor交互.可以和Supervisor运行在同一物理机上,JStorm中Nimbus可采用主从备份,支持热切. 1.2.Supervisor Supervisor 是集群中任务