ITMO-Study-Note

主页/Lecture1/目录

Lecture 1: ИСБД

讲座1:数据库系统概论

1. 引言

Зачем нужны БД?
为什么我们需要数据库? Просто хранить данные в файлах неудобно:

仅仅将数据存储在文件中并不方便:

Решение — хранить данные и метаданные (данные о данных) вместе.
解决方案是将数据和元数据(关于数据的数据)存储在一起。

База данных 数据库

База данных — это файлы, снабжённые описанием хранимых в них данных и находящиеся под управлением специальных программных комплексов, называемых “Системы управления базами данных” (СУБД).
数据库是存储有数据描述的文件,由称为 “数据库管理系统”(DBMS)的专用软件包管理。

Классификация СУБД 数据库管理系统分类

  1. По степени распределённости:
    • локальные;
    • распределённые.

根据分类特性:

  1. По способу доступа к БД.
    数据库的访问方式:
    • Файл-серверные — данные находятся на файлсервере, СУБД — на каждом клиентском компьютере. Примеры — M$ Access, dBase, FoxPro.
    • 文件服务器 - 数据位于文件服务器上,数据库管理系统位于每台客户端计算机上。 例如:M$ Access、dBase、FoxPro。
    • Клиент-серверные — СУБД находятся на сервере вместе с данными. Примеры — Oracle, M$ SQL Server, Caché.
    • 客户端-服务器 - DBMS 与数据一起驻留在服务器上。 与数据一起驻留在服务器上。 例如:Oracle、M$ SQL Server、Caché。
    • Встраиваемые — СУБД встраивается в приложение, хранит только его данные и не требует отдельной установки. Примеры — SQLite, BerkeleyDB.
    • 嵌入式 - DBMS 嵌入在应用程序中,只存储数据,无需单独安装。 例如:SQLite、BerkeleyDB。
  2. По модели данных:
    关于数据模型:
    • Сетевые — используют сетевую модель данных. Частный случай — графовые СУБД. Примеры — HypergraphDB, OrientDB.
    • 网络 - 使用网络数据模型。 图 DBMS 就是一个特例。 例如 HypergraphDB、OrientDB。
    • Объектно-ориентированные — используют ОО-модель данных. Пример — InterSystems Caché.
    • 面向对象 - 使用 OO 数据模型。 例如 InterSystems Caché。
    • Реляционные и объектно-реляционные — используют реляционную модель данных (возможно, с частичной поддержкой ООП). Примеры — Oracle, PostgreSQL.
    • 关系型和对象关系型–使用关系数据模型(可能部分支持 OOP)。 例如:Oracle、PostgreSQL。

2. Реляционные БД 关系数据库

Реляционная (relation — отношение, связь) или табличная модель данных была предложена в конце 60-х годов Эдгаром Коддом (IBM).
关系(relation)或表格数据模型是由埃德加-科德(IBM)在 60 年代末提出的。

Ключевые особенности:
主要功能:

  1. Данные хранятся в таблицах 数据存储在表格中
  2. Каждая таблица состоит из строк, имеющих одну и ту же структуру, и имеет уникальное имя.
    每个表都由具有相同结构的行组成,并具有唯一的名称。
  3. Строки имеют фиксированное число полей (столбцов) и значений (множественные поля и повторяющиеся группы недопустимы).
    行有固定数量的字段(列)和值(不允许多个字段和重复组)。
  4. В каждой позиции таблицы на пересечении строки и столбца всегда имеется в точности одно значение или ничего.
    在表格中的每个位置,行和列的交叉点总是正好有一个值,或者什么都没有。
  5. Строки таблицы обязательно отличаются друг от друга хотя бы единственным значением. 表格各行之间必须至少相差一个数值。
  6. Столбцам таблицы однозначно присваиваются имена. 表列都有明确的名称。
  7. В каждом из столбцов размещаются однородные значения данных (даты, фамилии, целые числа). 每一列中都放置了同类数据值(日期、姓氏、整数)。
  8. Содержание базы данных представляется в виде явных значений данных (не существует каких-либо специальных “связей” или указателей, соединяющих одну таблицу с другой). 数据库的内容以明确的数据值呈现(没有特殊的 “链接 “或指针将一个表连接到另一个表)。
  9. При выполнении операций с таблицей ее строки истолбцы можно обрабатывать в любом порядке безотносительно к их содержанию. 在对表格执行操作时,可以按照任意顺序处理表格的行和列,而无需考虑其内容。
  10. Таблицы базы данных часто группируют в схемы. 数据库表通常按模式分组。

Терминология 术语

Переменная отношения/Имя таблицы
关系变量/表格名称 Атрибут/Колонка
属性/列
Заголовок
标题
Тело
主体
Кортеж/Строка
元组/字符串

Ключи 键

Целостность данных 数据完整性

Целостность (от англ. integrity) — корректность данных в любой момент времени.
完整性 - 数据在任何时间点的正确性。
Выделяют три группы правил целостности.
完整性规则分为三类。

3. Язык SQL SQL语言

Особенности языка 语言特点

Каждое предложение SQL — это либо запрос данных из базы, либо обращение к базе данных, которое приводит к изменению данных в базе.
每句 SQL 语句要么是对数据库数据的查询,要么是对数据库的访问,其结果是对数据库中的数据进行更改。
Различают следующие типы запросов: 以下查询类型是有区别的:

Операторы SQL SQL 语句(操作符)

Операторы определения данных (Data Definition Language, DDL):
数据定义语言 (DDL) 操作符:

Операторы манипуляции данными (Data Manipulation Language, DML):
数据处理语言(DML):

Операторы определения доступа к данным (Data Control Language, DCL):
数据控制语言(DCL)操作符: