一般情况下,可以在应用程序上实现和管理最简单的数据库,即可以用它来存储数据和一堆用逗号分隔的值文件或CSV文件。
假设数据库中有两个实体(Artist和Album),以及对应的属性。
如果要存储在CSV文件中,会在每个属性上用引号标注,然后用逗号分隔。
假设需要查找“Ice Cube” 的出道年份,通过Python方式来实现。
for line in file:
record = parse(line)
if "Ice Cube" == record[0]:
print(int(record[1]))
但是这种方式并不是最好的,存在一些问题。
基于以上问题,就出现了数据库管理系统(DBMS)来对数据进行管理操作。
数据库管理软件是一种专业的软件,允许程序在无须底层实现的情况下,对数据库中的信息进行存储和分析,是一种能够被多种应用所复用的软件。避免重复造轮子的问题。
第一个数据库是 1965 年由通用电气制造。
缺点:
1970年被Ted Codd提出并发表论文,引发了关系数据模型革命的原始论文。
通过数据库抽象的方式避免维护问题:
data model(数据模型)
:用于描述数据库中的数据的概念的集合
。
schema(模式)
: 使用给定数据模型对特定数据集合的描述
。
常见的关系数据模型
数据库优势并不能一概而论,在某些应用领域中,一些数据模型比关系型数据模型能够更好地描述数据。
关系
:数据的一个列,是一个实体的属性之一。
主键(Primary Keys)
:某一个唯一属性或一个属性组能够唯一标识一条记录。称其属性或属性组为主键。
由于无法控制无法重名,所以引入id来进行唯一索引。 如果不指定主键,有些DB会增加一个隐式的主键。
外键(Foreign Keys)
:用于指定一张表中的属性必须存在于另一张表中。
数据操纵语言(Data Manipulation Language, DML):负责对数据库对象运行数据访问工作的指令集。DML有两种方式
关系代数
)Ted Codd 提出在关系代数中的7种最核心的关系运算符
查询复合条件的tuple的一个子集。
生成一个新的输出关系,厘米包含一个给定输入关系中的指定属性。
将两个关系组合成一个新的关系。(
并集
)
两个关系表里共同的部分。(
交集
)
从第一个元素集中将第二个元素集中出现的元素过滤掉。(
差集
)
笛卡尔积
。所有可能性不重复的组合。
自然链接。
后续增加的关系代数
关系演算
)参考内容:《Database system concepts》 chapter01 and chapter02
数据库管理系统(DataBase-Management System,DBMS) 是一个互相关联的数据的集合
和一组用以访问数据的程序
组成。
数据集合称为数据库(Database)
。
数据库的应用广泛,代表性的应用有:
文件处理系统是传统的操作系统所支持的。存在的弊端如下:
数据库系统的一个目的:给用户提供数据的抽象视图。
- 逻辑层:比物理层稍高的抽象。
> 描述数据库中存储什么数据及这些数据间存在什么关系。
- 视图层:最高层次的抽象。
> 描述整个数据库的某个部分。
信息的集合
称作数据库的一个 实例(instance)
。数据库系统的几个模式:物理模式(在物理层描述数据库的设计)
、逻辑模式(在逻辑层描述数据库的设计)
。
子模式
:描述数据库的不同视图。
数据库系统实现遵循的完整性约束:
域约束
参照完整性
断言
授权
笔记暂无,参考课程笔记
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。