跳至主要內容

关系数据模型

njrdatabasebackend关系数据库模型data model大约 2 分钟约 618 字

本文介绍最重要的数据模型之一:「二维表」,或者称为「关系」。

数据模型概述

什么是数据模型

数据模型是用于描述数据或信息的标记,一般由三部分组成:

  • 数据结构:物理数据模型,也称概念模型;
  • 数据操作:查询、修改;
  • 数据约束。

一些重要的数据模型

现今,数据库系统中有两种比较重要的数据模型:

  • 关系数据模型,包括对象关系模型的拓展;
  • 半结构化数据模型,包括 XML 相关的标准。

关系模型

关系模型是一种基于「二维表」的数据模型,由 E.F.Codd 于 1970 年提出。

以电影关系模型为例,这张表中会有大量的数据行,一部电影对应一行数据。

titleyearlengthgenre
The Godfather1972175Crime
The Shawshank Redemption1994142Drama
The Godfather: Part II1974202Crime

关系模型具有 高效性易用性

  • 提供简单的方法进行建模;
  • 提供了一套有限但有效的操作集。

半结构化模型

目前半结构话模型最主要的体现就是 XML,标签与 HTML 类似。

<Movies>
  <Movie>
    <title>The Godfather</title>
    <year>1972</year>
    <length>175</length>
    <genre>Crime</genre>
  </Movie>
  <Movie>
    <title>The Shawshank Redemption</title>
    <year>1994</year>
    <length>142</length>
    <genre>Drama</genre>
  </Movie>
  <Movie>
    <title>The Godfather: Part II</title>
    <year>1974</year>
    <length>202</length>
    <genre>Crime</genre>
  </Movie>
</<Movies>

关系模型基础

属性

关系模型中的属性是一个「命名值」,例如「电影」关系模型中的「title」、「year」等。

模式

关系模型中的模式(schema)是属性的集合。

Movies(title, year, length, genre)

元组

关系中除含属性名所在行以外的其他行称作元组。

('The Godfather', 1972, 175, 'Crime')

关系模型中的域是属性的取值范围。

Movies(title: string, year: integer, length: integer, genre: string)

在关系模型中,可以对数据库模式的关系增加很多约束。

最基本的约束就是「键约束」,通常定义为 id

SQL

最普遍的用于描述和操作关系数据库的语言是 SQL。现今大部分数据管理系统都只实现了标准的一部分,而不是全部实现。

SQL 有两方面的内容:

  • 定义数据库模式的数据定义语言(DDL);
  • 查询和更新数据库的数据操作语言(DML)。