CMU15-445/645
Organized collection of inter-related data that models some aspect of the real-world.
例子
有如下实体集,artist和album
在存储的时候
如何保证
What if somebody overwrites the album year with an invalid string?
How do we store that there are multiple artists on an album?
在查询数据的时候
DURABILITY,安全
A DBMS is software that allows applications to store and analyze information in a database.
DBMS是一个允许应用存储或者分析信息的软件
革命性的paper
《A Relation Model of Data for Large Shared Data Banks》
表和表之间建立关系
数据模型:本质是说如何组织数据
关系型数据库:PG、Oracle、DB2、SQL server,SQLite
NoSQL: KV 图 docu 列簇
MultiValue数据模型:
关系只是一组无序的元素或者记录,这些元素或者记录的属性用来表示关系中的实体的实例。
使用tuple来记录一条数据,所有值都得原子性:不能是数组或者嵌套对象。上面是刚提出RM的时候,现在可以在关系型数据库存JSON对象、数组。
特殊值NULL。
realtion = table
tuple is 记录
主键:如果某一个唯一的属性或者属性组能够唯一标识一条记录,称为主键。通过逻辑层暴露的一个代理键
外键用于指定一张表里面的属性必须存在于另外一张表中
外键约束的例子:
改进之后
Data Manipulation Languages
如何从DB中存取信息
DML是一种操作数据的方式通过它可以用来访问或者修改数据库来生成想要的result
一种是关系代数、一种是关系演算。
关系代数和关系演算的区别?
Answer:
果
2. 非程序性的、声明式的:
[外链图片转存中…(img-szoawlJy-1660151001038)]
一种是关系代数、一种是关系演算。
关系代数和关系演算的区别?
Answer:
选择、投影、并、交、差、乘、连接
select,projection,union,intersection,difference,product,join
输入关系,输出新关系。
投影运算。
并运算,将两个关系组合生成一个新的关系。
简单的合并就行。级联输出。
必须俩关系相同的关系模式。
SQL:Union ALL
交,得到都在两个关系里面出现的tuple
SQL: 有intersect 关键词
R-S:只取出来第一个关系出现的元素,而不是第二个关系里面的。就是找第一个关系中不在第二个关系的元组。
sql:except
R x S 笛卡尔积 sql:cross join
特别指自然连接natural join
先投影后连接效率更高
但是不能依靠写SQL的人去人工优化