主页/Lecture1/目录
Lecture 1: ИСБД
讲座1:数据库系统概论
1. 引言
Зачем нужны БД?
为什么我们需要数据库?
Просто хранить данные в файлах
неудобно:
- Полное отсутствие гибкости (изменение структуры –
изменение кода программы).
- Невозможность нормальной многопользовательской
работы с данными.
- Вынужденная избыточность (проще создать еще одну
копию данных, чем вносить изменения в десятки
программ).
仅仅将数据存储在文件中并不方便:
- 缺乏灵活性(修改数据结构需要修改代码)。
- 无法实现多用户同时访问数据。
- 被迫冗余(创建另一份数据比修改十几处程序更容易)。
Решение — хранить данные и метаданные (данные о
данных) вместе.
解决方案是将数据和元数据(关于数据的数据)存储在一起。
База данных 数据库
База данных — это файлы, снабжённые описанием
хранимых в них данных и находящиеся под управлением
специальных программных комплексов, называемых
“Системы управления базами данных” (СУБД).
数据库是存储有数据描述的文件,由称为 “数据库管理系统”(DBMS)的专用软件包管理。
Классификация СУБД 数据库管理系统分类
- По степени распределённости:
- локальные;
- распределённые.
根据分类特性:
- По способу доступа к БД.
数据库的访问方式:
- Файл-серверные — данные находятся на файлсервере, СУБД — на каждом клиентском компьютере. Примеры — M$ Access, dBase, FoxPro.
- 文件服务器 - 数据位于文件服务器上,数据库管理系统位于每台客户端计算机上。 例如:M$ Access、dBase、FoxPro。
- Клиент-серверные — СУБД находятся на сервере вместе с данными. Примеры — Oracle, M$ SQL Server, Caché.
- 客户端-服务器 - DBMS 与数据一起驻留在服务器上。
与数据一起驻留在服务器上。 例如:Oracle、M$ SQL Server、Caché。
- Встраиваемые — СУБД встраивается в приложение, хранит только его данные и не требует отдельной установки. Примеры — SQLite, BerkeleyDB.
- 嵌入式 - DBMS 嵌入在应用程序中,只存储数据,无需单独安装。 例如:SQLite、BerkeleyDB。
- По модели данных:
关于数据模型:
- Сетевые — используют сетевую модель данных. Частный случай — графовые СУБД. Примеры — HypergraphDB, OrientDB.
- 网络 - 使用网络数据模型。 图 DBMS 就是一个特例。 例如 HypergraphDB、OrientDB。
- Объектно-ориентированные — используют ОО-модель данных. Пример — InterSystems Caché.
- 面向对象 - 使用 OO 数据模型。 例如 InterSystems Caché。
- Реляционные и объектно-реляционные — используют реляционную модель данных (возможно, с частичной поддержкой ООП). Примеры — Oracle, PostgreSQL.
- 关系型和对象关系型–使用关系数据模型(可能部分支持 OOP)。 例如:Oracle、PostgreSQL。
2. Реляционные БД 关系数据库
Реляционная (relation — отношение, связь) или табличная модель данных была предложена в конце 60-х годов Эдгаром Коддом (IBM).
关系(relation)或表格数据模型是由埃德加-科德(IBM)在 60 年代末提出的。
Ключевые особенности:
主要功能:
- Данные хранятся в таблицах
数据存储在表格中
- Каждая таблица состоит из строк, имеющих одну и ту же структуру, и имеет уникальное имя.
每个表都由具有相同结构的行组成,并具有唯一的名称。
- Строки имеют фиксированное число полей (столбцов) и значений (множественные поля и повторяющиеся группы недопустимы).
行有固定数量的字段(列)和值(不允许多个字段和重复组)。
- В каждой позиции таблицы на пересечении строки и столбца всегда имеется в точности одно значение или ничего.
在表格中的每个位置,行和列的交叉点总是正好有一个值,或者什么都没有。
- Строки таблицы обязательно отличаются друг от друга хотя бы единственным значением.
表格各行之间必须至少相差一个数值。
- Столбцам таблицы однозначно присваиваются имена.
表列都有明确的名称。
- В каждом из столбцов размещаются однородные значения данных (даты, фамилии, целые числа).
每一列中都放置了同类数据值(日期、姓氏、整数)。
- Содержание базы данных представляется в виде явных значений данных (не существует каких-либо специальных “связей” или указателей, соединяющих одну таблицу с другой).
数据库的内容以明确的数据值呈现(没有特殊的 “链接 “或指针将一个表连接到另一个表)。
- При выполнении операций с таблицей ее строки истолбцы можно обрабатывать в любом порядке безотносительно к их содержанию.
在对表格执行操作时,可以按照任意顺序处理表格的行和列,而无需考虑其内容。
- Таблицы базы данных часто группируют в схемы.
数据库表通常按模式分组。
Терминология 术语

Переменная отношения/Имя таблицы
关系变量/表格名称
Атрибут/Колонка
属性/列
Заголовок
标题
Тело
主体
Кортеж/Строка
元组/字符串
Ключи 键
- Ключ — минимальный набор атрибутов, по значениям которых можно однозначно найти требуемый экземпляр сущности.
- 键是一组最小的属性,其值可用于明确查找实体的所需实例。
- Внешний ключ — множество атрибутов сущности для организации ссылок на экземпляры другой сущности(должен соответствовать первичному ключу в другой сущности)
- 外键 - 实体的一组属性,用于组织对另一实体实例的引用(必须与另一实体的主键相对应)。
Целостность данных 数据完整性
Целостность (от англ. integrity) — корректность данных в любой момент времени.
完整性 - 数据在任何时间点的正确性。
Выделяют три группы правил целостности.
完整性规则分为三类。
- Целостность по сущностям.
- 实体的完整性。
- Целостность по ссылкам.
- 参照完整性。
- Целостность, определяемая пользователем
- 用户定义的完整性
- Целостность по сущностям. Не допускается, чтобы какой-либо атрибут, участвующий в первичном ключе, принимал неопределенное значение.
- 实体的完整性。 不允许参与主键的任何属性使用未定义的值。
- Целостность по ссылкам. Значение внешнего ключа должно либо:
- 参照完整性。 外键的值必须是
- быть равным значению первичного ключа ассоциируемой сущности;
- 等于相关实体的主键值;
- быть полностью неопределенным.
- 完全不确定。
- Целостность, определяемая пользователем:
- 用户定义的完整性:
- уникальность тех или иных атрибутов;
- 某些属性的独特性;
- диапазон значений (экзаменационная оценка от 2 до 5);
- 值范围(考试成绩从 2 到 5);
- принадлежность набору значений (пол “М” или “Ж”).
- 属于一组值(性别为 “M “或 “W”)。
3. Язык SQL SQL语言
- SQL (структурированный язык запросов) — декларативный язык программирования.
- SQL(结构化查询语言)是一种声明式编程语言。
- Применяется для получения, создания, модификации и управления данными в реляционной базе данных.
- 用于检索、创建、修改和管理关系数据库中的数据。
- Разработан в 1970-е гг. в компании IBM.
- 20 世纪 70 年代在 IBM 研发。
- Язык используется в большинстве реализаций реляционных БД.
- 这种语言用于大多数关系数据库的实现。
Особенности языка 语言特点
Каждое предложение SQL — это либо запрос данных из базы, либо обращение к базе данных, которое приводит к изменению данных в базе.
每句 SQL 语句要么是对数据库数据的查询,要么是对数据库的访问,其结果是对数据库中的数据进行更改。
Различают следующие типы запросов:
以下查询类型是有区别的:
- запросы на создание или изменение в базе данных новых или существующих объектов;
- 请求创建或修改数据库中的新对象或现有对象;
- запросы на получение данных;
- 数据请求;
- запросы на добавление новых данных (записей);
- 请求添加新数据(记录);
- запросы на удаление данных;
- 数据删除请求;
- обращения к СУБД.
- 数据库管理系统访问。
Операторы SQL SQL 语句(操作符)
Операторы определения данных (Data Definition Language, DDL):
数据定义语言 (DDL) 操作符:
CREATE
создает объект БД (саму базу, таблицу, представление, пользователя и т. д.);
CREATE
创建数据库对象(数据库本身、表、视图、用户等);
ALTER
изменяет объект;
ALTER
可修改对象;
DROP
удаляет объект.
DROP
删除对象。
Операторы манипуляции данными (Data Manipulation Language, DML):
数据处理语言(DML):
SELECT
считывает данные, удовлетворяющие заданным условиям;
SELECT
读取满足指定条件的数据;
INSERT
добавляет новые данные;
INSERT
添加新数据;
UPDATE
изменяет существующие данные;
UPDATE
可修改现有数据;
DELETE
удаляет данные.
DELETE
删除数据。
Операторы определения доступа к данным (Data Control Language, DCL):
数据控制语言(DCL)操作符:
GRANT
предоставляет пользователю (роли) разрешения на определенные операции с объектом;
GRANT
授予用户(角色)对对象执行某些操作的权限;
REVOKE
отзывает ранее выданные разрешения;
REVOKE
撤回之前发放的许可证;