post on 26 Aug 2019 about 1664words require 6min
CC BY 4.0 (除特别声明或转载文章外)
如果这篇博客帮助到你,可以请我喝一杯咖啡~
数据的集合
由数据库, 和访问数据库的程序组成.
操作系统已经有文件系统, 但基于文件系统管理数据有一些弊端:
基于文件系统的存储可能由于程序设计过程中的疏漏, 使硬盘上同一份信息存有多份, 这带来了冗余和一致性的问题.
数据的值必需满足特定的一致性约束(consistency constraint).
对数据库的操作不保证原子性.
文件系统难以控制访问权限.
我们需要数据库管理系统为用户提供抽象. 数据库管理系统应该隐藏数据存储和维护的某些细节. 数据库管理系统有以下三个层次的抽象:
flowchart BT
physical-level-->logic-level
logic-level-->view-level(view1,view2,...)
描述数据是怎么存储的
描述数据的数据结构,以及数据间的关系
只描述数据库的一部分, 因为用户常常只关系部分数据. 数据库管理系统可以提供多个视图.
应用隐藏数据类型的细节。视图也会根据安全方面的需求隐藏一些信息。
特定时刻储存在数据库中信息的集合.
database 的逻辑结构,数据库的总体设计.
描述数据库的物理层设计
物理层描述数据库的模式
每个条目存储在的位置,以及便于检索的一些索引、与其他条目的关系。
逻辑层描述数据库的模式
数据模型(data model)是描述数据库系统设计的概念工具的集合.
数据模型可划分为四类:
用表的集合表示数据间的联系. 每个表有多个列, 每个列的列名唯一.
用具有属性的实体及其之间的联系来描述数据.
某一类实体由属性名和实体名描述.
用于刻画实体的特性.
实体间的关联, 可以是一对一, 一对多, 多对多.
允许相同类型的数据项含有不同的属性集的数据说明. XML 可以用于表示半结构化数据.
帮助用户访问或操纵数据. 访问类型有增删查改.类型有:
要求用户指定如何操纵数据.
只要求用户指定需要操纵的数据.
定义数据库模式. 如果说 DML 操纵的是数据, 那么 DDL 操纵的是数据库的元数据(metadata), 元数据放置于数据字典.
数据值必须满足某些一致性约束. 比如账户余额不能低于 100 美元. 数据库系统专注于可以最小代价测试的完整性约束.
每个属性的所有可能的取值构成的一个域(整数, 字符, 日期等)
TODO
域约束和参照完整性是特殊的断言. 但不足以描述所有断言需求, 比如, 账户的余额不小于 1000 美元.
不同用户在数据库中不同数据值上允许的访问类型不同.
关系数据库基于关系模型, 使用一系列表(元数据)来表达数据以及这些数据之间的联系.下面介绍 SQL 语言.
每个表有多个列, 每个列的名字唯一.
声明化
数据库系统的程序部分可以分为存储管理器和查询管理器.
负责数据库中数据的存储, 检索和更新.
为用户提供操纵接口, 查询处理器会操纵存储管理器.
Related posts