数据库-基础
一、基本概念
1.数据抽象的四个级别
概念数据模型:表达用户需求观点的数据全局逻辑结构的模型,抽象级别特别高,独立于硬件与软件
逻辑数据模型:表达计算机实现观点的数据库全局逻辑结构的模型,分为层次模式、网状模型、关系模型,独立于硬件,但依赖于软件
外部数据模型:反映了用户使用数据库的观点,独立于硬件依赖于软件
内部数据模型:表达数据库物理结构的模型,是数据最底层的抽象,描述了数据在磁盘或者磁带上的存储方式,存取结构和存取方法。
2.关系型数据库和非关系型数据库
当前主流的关系型数据库有:mysql,sql server; 非关系型数据库有mongodb,redis
关系型数据库是指采用了关系模型来组织数据的数据库,简单说就是由二维表及其之间的联系组成的一个数据组织
特点:强调ACID【原子性、一致性、隔离性、持久性】规则,最大的特点就是事务的一致性;
优点:易于理解,二维表的结构非常贴近生活;使用方便,通用的sql语句操作关系型数据库非常方便;易于维护,数据库的acid属性大大降低数据的冗余和不一致的概率
缺点:固定的表结构,灵活性稍欠,不能有效的处理多维数据和互联网应用中的半结构化和非结构化的海量数据,如视频、音频等;高并发读写性能低;容量有限;
数据库的可扩展性和可用性低,数据库没办法像web server那样添加更多的硬件和服务节点来拓展性能和负载能力。
适用于关系型数据库适合存储结构化数据,比如:用户账号、地址:这些数据增长是可预见的;这些数据通常需要结构化查询,如join,这个时候关系型数据库比较合适;事务性,一致性,适合存储比较复杂的数据。
非关系型数据库主要指那些非关系的、分布式的,且一般不保证acid的数据存储系统;非关系型数据库严格上不是一种数据库,应该是一种数据结构化存储方法的集合
特点:利用键值对存储数据,分布式,一般不支持acid特性,没有事务这个概念,每个数据集都是原子级别的
优点:无需经过sql层的解析,读写性能高;基于键值对,数据无耦合,容易扩展;存储数据格式多样,nosql的存储是key,value形式,文档形式,图片形式等。
缺点:不提供sql支持,学习和使用成本高;无事务处理
适合存储非结构化数据,比如:文章、评论: 这些数据是海量的,且增长速度不可预期;这些数据常用于模糊处理,如全文搜索,机器学习,适合存储较为简单的数据;按key获取数据效率高,对于join或者其他结构化查询支持比较差。
3.超键、候选键、主键、外键
超键:在关系着能唯一标识元祖的属性集称为关系模式的超键
候选键:不含多余属性的超键被称之为候选键
主键:用户选作元祖标识的一个候选键为主键
外键:在一个表中存在另一个表的主键,称为此表的外键
## 函数依赖
函数依赖、完全依赖、不完全依赖、传递依赖
##三个范式
作用与背景:消除关系模式的数据冗余,解决删除和插入操作的异常。从而为不同程度的规范化设立不同的标准。
## 数据库语言四大类
数据定义语言(DDL):用来定义数据库的对象,数据表、视图、索引等
数据操纵语音(DML):在数据库表中更新,增加和删除等
数据控制语言(DCL):指用于设置用户权限和控制事务语句
数据查询语言(DQL):表中记录的查询
参考:https://zhuanlan.zhihu.com/p/359915482