cmu 15-445学习笔记-1
Course Intro & Relational Model
课程简介与关系模型
DBMS
database management system(DBMS):软件、应用存储分析数据
general-purpose DBMS:通用数据库,mysql等,创建和定义、修改数据(健全的数据库应该包括的)
1970 Edgar F.Codd提出关系型数据库:
- 数据库在简单易用的结构上存储
- 需要使用高级的语言获取这些数据(sql),DBMS将这些语言变成物理逻辑计划并执行
- 物理上如何存储这些数据用户不需要考虑
DATA MODEL
- data model:有一组概念描述数据的模型(更偏向概念)
- schema:更具像,表内容(字段、关系等)一个数据库,或者一个命名控件(不同的数据库的schema实现不同)
不同数据库模型:
- Relational:关系型数据库(绝大多数DB)
- NoSQL:概念上的说法:(有人说是非关系型DB、也有人说是not only SQL,不仅仅是关系型DB)
- Key/Value:键值对存在K-V
- Graph:图数据库,比较好的记录点和边的数据
- Document:文档数据库
- Column-family:列族数据库(十个数据可以拆成两个列族,例如十个数存在二维数组的两行在数据库中这是不同的数据库表)
- Array/Matrix:存矩阵的
- obsolete/legacy/race:偏门古老淘汰的
- Hierarchical
- Network
- Multi-Value
RELATIONAL MODEL
relational(关系型数据库)都是什么东西?
- 定义数据的相互关系和内容的
- 保证数据库中的内容有一定的约束(插入的字段要求)
- 可以线上提供编程接口(GBDC,OBDC等)
关系型数据库一个关系表示的是无序集合之间字段之间的关系一些字段组成了attributes(关系),一些关系组成了一个entities(实体)即relation
a relation is an unordered set that contain the relationship of attributes that represent entities
关系是一个无序的集合,包含表示实体的属性关系
一组属性关系被称为一个元组,值通常是原子(不可再分,原子性)或标量(vector和scalar对应,vector是向量,一般都是标量的数据,好进行标量进行运算),特殊值NULL是每个域的成员
a tuple is a set of attributes value (also known as its domain) in the relation.
→Value are (normally) atomic/scalar.
→The special value NULL is a member of every domain.
一个表中n-ary relation也就是n个关系就 = table with n columns表中的n行(n个字段)
RELATIONAL MODEL:PRIMARY KEYS
A relation’s primary key uniquely…
每一个关系型数据库都有一个主键,通过关系中的主键是可以唯一确定一条数据的,一些DB中没有指定primarykey,大部分表都会在表上加上一个主键,一般是行id等。在未定义的情况下,因为你没定义所以认为你不使用,即使自动生成了你也不能用。
当指定一个表的主键id后,不想自己给数据编号,使用auto自动编号,在SQL:2003后使用SEQUENCE/MySQL(AUTO_INCREMENT)进行自增,使用的最多的还是MySQL,自动增长在定义的时候使用关键字自增
RELATIONAL MODEL:FOREIGN KEYS
foreignkeys:就是说,数据表的某一列属性是另一列属性关联起来的属性就叫外键
关系型数据库的一个常用搞法就是在外键进行两个表的映射时使用一个中间表存储映射关系,来防止一对多的混乱(在做业务的时候如果某两个数据表的主键或者对应列是多对多的关系就可以使用一个中间表,使用中间表的化一般外键就直接干掉就可以了)
DATA MANIPULATION LANGUAGES(DML)
数据操作语言(DML):存储、查询等数据增删改查
DDL对于数据结构进行修改的语言:加索引、建表等
- relational algebra(关系型代数):告诉数据库怎么操作(相对于SQL更具体的告诉数据库怎么做)
- relational calculus(关系型算子/关系型计算):类似于SQL语句写法
RELATIONAL ALGEBRA
文献中关系型代数符号
σ select:查询
π projection:投影(投影在sql中是计算结果的视图)
∪ union:联合(联合在sql中是将两个表结果连接,union是去重的,不去重的是union all)(select emp1 union all select emp2)
∩ intersection:交集(与union相反,取交集)
- difference:补集(从emp1中将emp2数据去掉)
× product:笛卡尔积(很多数据库不写cross join,sql语句直接写join,或者隐式join)(select * from R, S)
⋈ join:连接(左连接、右连接、全连接)
…还有一些不常见的连接方式
方案:SQL is the de facto standard(many dialects)有许多独创的方法,也就是方言
SQL语言在顶层指定了我们需要执行数据操作的答案,但是不告诉数据库怎么执行
conclusion
- database are ubiquitous(无处不在的)
- relational algebra defines the primitives for processing queries on a relational data base.(关系代数定义了查询原语)
- we will see relational algebra again when we talk about query optimization + execution.(谈论到查询优化执行时还会看到关系代数)
原文地址:https://blog.csdn.net/m0_51765675/article/details/142847430
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!