根据数据库所使用的数据模型来划分,数据库可以分为层次数据库、网状数据库、关系数据库。
它们分别对应数据库的三种数据模型:层次模型,网状模型,关系模型。
目前最常用的也就是关系型数据库。

根据存储方式可以分为关系型数据库(SQL)和非关系型数据库(Not Only SQL, NoSQL)。
关系型数据库以表格形式存储数据,每个表由行和列组成。行表示数据实例,列表示数据属性。
非关系型数据则没有统一的存储方式,常见啊的存储方式包括:键值数据库、文档数据库、图形数据库。

层次数据库

层次模型用树形结构来表示各类实体以及实体间的联系。

在层次数据库中,每个记录都表示为一个节点,每个节点都有一个或多个子节点。节点之间的关系是父子关系,即一个节点只能有一个父节点,但可以有多个子节点。

层次数据库的优点:

  • 数据结构简单,易于理解和使用。
  • 查询效率高,适合处理层次关系的查询。
  • 支持数据的增删改查操作。

层次数据库的缺点:

  • 只能处理一对多的层次关系,而不能直接处理多对多的关系。
  • 数据的冗余较多,会占用更多的存储空间。
  • 数据的独立性较差,修改数据结构可能会影响到数据。

网状数据库

网状数据库使用网状结构来组织数据。

在网状数据库中,每个记录都表示为一个节点,每个节点可以有一个或多个父节点,也可以有一个或多个子节点。节点之间的关系可以是多对多的关系。

网状数据库的优点包括:

  • 可以表示多对多的关系。
  • 数据结构灵活,可以适应不同的应用场景。
  • 查询效率高,适合处理复杂的查询。

网状数据库的缺点包括:

  • 数据结构复杂,不易理解和使用。
  • 数据的冗余较多,会占用更多的存储空间。
  • 数据的独立性较差,修改数据结构可能会影响到数据。

关系数据库

关系数据库使用关系模型来组织数据。

在关系型数据库中,每个表都表示一个实体,表中的行表示实体的具体实例,表中的列表示实体的属性。
关系型数据库使用关系来表示实体之间的关系。关系是两个或多个表之间的逻辑连接。

关系型数据库的优点包括:

  • 数据结构简单,易于理解和使用。
  • 数据的冗余较少,可以节省存储空间。
  • 数据的独立性较好,修改数据结构不会影响到数据。
  • 支持数据的增删改查操作。

关系型数据库的缺点包括:

  • 只能表示一对一、一对多、多对一的关系,不能表示多对多的关系。
  • 查询效率可能不如非关系型数据库。

关系型数据库的约束完整性:

  • 实体完整性:实体完整性是保证关系中的每个元组都是可识别的和唯一的。实体完整性是指关系数据库中所有的表都必须有主键,而且表中不允许存在无主键值的记录和主键值相同的记录。
  • 参照完整性:参照完整性也称为引用完整性。现实世界中的实体之间往往存在着某种联系,在关系模型中,实体以及实体之间的联系都是用关系来表示的,这样就自然存在着关系与关系之间的引用。参照完整性就是描述实体之间的联系的。参照完整性一般是指多个实体或表之间的关联关系。
  • 用户定义的完整性:用户定义的完整性也称为域完整性或语义完整性。用户定义的完整性实际上就是指明关系中属性的取值范围,也就是属性的域,即限制关系中的属性的取值类型及取值范围,防止属性的值与应用语义矛盾。

关系型数据库的原则:ACID原则。

  • Atomic原子性:一个事务中的所有操作,或者全部完成,或者全部不完成,不会结束在中间某个环节。事务在执行过程中发生错误,会被回滚(Rollback)到事务开始前的状态,就像这个事务从来没有执行过一样。即,事务不可分割、不可约简。
  • Consistency一致性:在事务开始之前和事务结束以后,数据库的完整性没有被破坏。这表示写入的资料必须完全符合所有的预设约束、触发器、级联回滚等。
  • Isolation隔离型:数据库允许多个并发事务同时对其数据进行读写和修改的能力,隔离性可以防止多个事务并发执行时由于交叉执行而导致数据的不一致。隔离性分为不同级别,包括未提交读(Read uncommitted)、提交读(read committed)、可重复读(repeatable read)和串行化(Serializable)。
  • Durability持久性:事务处理结束后,对数据的修改就是永久的,即便系统故障也不会丢失。

(全文完)