一、数据库基础
数据库:按照数据结构来组织、存储和管理数据,并且建立在计算机存储设备上的仓库。
二、什么是数据库?
数据库管理系统DBMS:DBMS是由一个相互关联的数据库的集合和一组用于访问这些数据的程序组成,这个数据集合称为数据库。
数据库是通过DBMS创建和操纵的容器。数据库可以是保存在硬设备上的文件,也可以不是。用户并不直接访问数据库,而是使用DBMS。
DBMS为人们提供方便、高效的环境来存储和检索数据的方法。
三、数据库分类
1、关系数据库 relational database
是创建在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据,现实世界中的各种实体以及实体之间的各种联系均用关系模型来表示,它是数据存储的传统标准,标准数据查询语言sql就是一种关系数据库的语言,这种语言执行对关系数据库中数据的检索和操作。
- MySQL
- MariaDB(MySQL的代替品,英文维基百科从MySQL转向MariaDB)
- Percona Server(MySQL的代替品)
- PostgreSQL
- Microsoft Access
- Google Fusion Tables
- SQL Server
- FileMaker
- Oracle
- Sybase
- dBASE
- Clipper
- FoxPro
几乎所有的数据库管理系统都配备了一个开放式数据库连接(ODBC)驱动程序,令各个数据库之间得以互相集成。
RDBMS即关系数据库管理系统(Relational Database Management System)的特点:
- 数据以表格的形式出现
- 每行为各种记录名称
- 每列为记录名称所对应的数据域
- 许多的行和列组成一张表单
- 若干的表单组成database
2. 非关系型数据库(NoSQL)
是Carlo strozzi开发的一个轻量、开源、不提供sql功能的关系数据库,当代典型的关系数据库在一些数据敏感的应用中表现了糟糕的性能,比如为巨量文档创建索引,高流量网站的网页服务,以及发送流式媒体。
关系型数据库的典型实现主要被调整用于执行规模小而读写频繁,或者大批量极少写访问的事务。
四、数据库模型
1. 数据库模型:它描述了在数据库中结构化和操纵数据的方法,模型的结构部分规定了数据如何被描述(例如树、表等)。是一个描述数据、数据联系、数据语义以及一致性约束的概念工具的集合,提供了一种描述物理层、逻辑层和视图层数据库设计的方式,数据库模型分类:
- 关系模型:
- 实体联系模型
- 基于对象的数据模型(增加了封装、方法和对象标识的E-R模型)
- 半结构化数据模型
2. 数据库架构(数据库抽象):
抽象层次:视图层 逻辑层 物理层
- 物理层:记录被描述为存储块,编译器为程序员屏蔽了此状态。
- 逻辑层:用定义类型、定义记录类型的相互关系进行描述每个记录。
- 视图层:屏蔽了数据类型细节的一组应用程序,提供了防止用户访问数据库的某些部分的安全性机制。
这种架构保证了物理模式隐藏在逻辑模式下,且通常可以在应用程序丝毫不受影响的情况下被更改。
3. 数据库索引
五、数据库 vs 文件处理系统
1)文件处理系统:每新增一个列表,就要新增一个永久性文件。
2)文字处理系统的弊端:
①数据的冗余和不一致。数据不一致→同一数据的不同副本不一致。文件和程序是在很长一段时间内由不同的程序员创建的,不同的文件可能有不同的结构,不同的程序的设计语言也可能不同。相同的信息可能在几个地方重复存储。
②数据访问困难。新的搜索需求没有现成的应用程序满足,而需要重新进行人工操作→ Ⅰ. 取得相关表的信息,手工搜索;Ⅱ. 新编写相应程序。
③数据孤立:数据分散在不同文件中,这些文件可能有不同的格式,编写应用程序来检索数据困难,
④完整性问题integrity problem:数据库中存储数据的值需要满足某些相关一致性约束。新建约束时,很难通过修改程序体现这些约束。如果约束设计不同文件中的多个数据项,更加复杂。
⑤原子性问题:文件系统保证原子性很困难。
⑥并发访问异常concurrent access anomaly:有些程序可能会被同时使用修改同一数据,数据可能同时被多个不同的应用程序访问,这些程序相互之间如果没有协调,管理很难进行。
⑦安全性问题:安全性约束,有些用户没有访问某些数据的权限。
六、键类型:主键 vs 候选键
key:一个元组的属性值必须是能够唯一区分元组的。
primary/unique key:主键/主码: