Выбери формат для чтения
Загружаем конспект в формате pdf
Это займет всего пару минут! А пока ты можешь прочитать работу в формате Word 👇
Центр дистанционного обучения
Управление данными
ФИО преподавателя: Смирнов Михаил Вячеславович
e-mail: smirnov.mirea@gmail.com
Online-edu.mirea.ru
online.mirea.ru
Центр дистанционного обучения
Лекция 4
Реляционная модель
данных. Логическая
noSQL модель.
online.mirea.ru
Центр дистанционного обучения
Содержание:
• Определения реляционной модели данных.
• Элементы реляционной модели данных в языке SQL.
• Первичный ключ и ограничения целостности.
• Ссылочная целостность и внешние ключи.
• Варианты ссылочной целостности.
• Пользовательские представления в реляционной модели данных
• Логическое представление noSQL модели данных
online.mirea.ru
Центр дистанционного обучения
Реляционная модель: основные понятия
Реляционная БД – набор таблиц.
Таблица – элемент реляционной базы данных, который состоит из двух
частей:
Набор столбцов и строк. Столбцы – это арность, строки – это
кардинальность.
Схема: метаинформация (имя таблицы, имя и тип каждого столбца).
Students (sid: string, name: string, login: string, age: integer..)
online.mirea.ru
Центр дистанционного обучения
Пример таблицы Students
online.mirea.ru
Центр дистанционного обучения
Язык запросов SQL
• Разработан IBM (system R) в 1970х
• Используется большинством провайдеров IT услуг, поэтому
стандартизован.
online.mirea.ru
Центр дистанционного обучения
Как работает язык SQL?
• Чтобы вывести всех студентов, которым 18 лет, мы можем
написать:
• SELECT * FROM Students S WHERE S.Age=18;
online.mirea.ru
Центр дистанционного обучения
Запрос к нескольким таблицам
• Вычислим результат следующего запроса:
SELECT S.name, E.cid FROM Students S, Enrolled E WHERE S.sid=E.sid
AND E.grade=“A”
online.mirea.ru
Центр дистанционного обучения
Создание таблиц с помощью инструкций
SQL
Таблица Students
CREATE TABLE Students
(sid: CHAR(20), Name: CHAR(20), Login: CHAR(10), Age: integer, Gpa: real);
Таблица Enrolled
CREATE TABLE Enrolled
(sid: CHAR(20), cid: CHAR(20), Grade: CHAR (2))
online.mirea.ru
Центр дистанционного обучения
Удаление и изменение таблиц
DROP TABLE Students
Полностью удаляет таблицу Students. Схема и строки (экземпляры)
также удаляются.
ALTER TABLE Students ADD COLUMN firstYear: integer
Изменяется схема Students, все строки расширяются в пределах
нового столбца, в котором проставляются значения NULL.
online.mirea.ru
Центр дистанционного обучения
Операции со строками
Вставка одной строки:
INSERT INTO Students (sid, name, login, age, gpa) VALUES (53688,
‘Smith’, ‘smith@ee’, 18, 3.2)
Удаление всех строк, соответствующих условию:
DELETE FROM Students S WHERE S.name = ‘Smith’
online.mirea.ru
Центр дистанционного обучения
Ограничение целостности
Правила, по которым работает каждая таблица в БД:
1. IC (integrity constraint) определяются когда создается схема
2. IC проходят проверку каждый раз, когда таблица изменяется.
Ограничение целостности контролируется DBMS: PRIMARY KEY,
CHECK, UNIQUE, FOREIGN KEY
online.mirea.ru
Центр дистанционного обучения
Первичный ключ и ограничение
целостности
Набор значений (столбец или атрибут) является ключом, если:
1. В ключевом столбце не имеется двух одинаковых значений, и
2. Это недействительно больше ни для одного столбца в данной
таблице, а если нет, то
3. Решение – составной ключ или ключ, выбранный DBA
online.mirea.ru
Центр дистанционного обучения
Внешние ключи, ссылочная целостность
Внешний ключ, это логический указатель (вроде оглавления у книги).
Набор столбцов в таблице, который ссылается на значения строк в
другой таблице.
В нашим примере такой ключ существует в таблице Enrolled (sid: string,
cid: string, grade: string).
Считается, что ссылочная целостность соблюдается, когда все значения
внешнего ключа одной таблицы приводят к “результату” в другой
таблице.
online.mirea.ru
Центр дистанционного обучения
Реализация внешних ключей в SQL
Только те студенты, что имеются в таблице Students могут поступать
на курсы
CREATE TABLE Enrolled
(sid CHAR(20), cid CHAR (20), grade CHAR (2)),
PRIMARY KEY (sid, cid),
FOREIGN KEY (sid) REFERENCES Students)
online.mirea.ru
Центр дистанционного обучения
Реализация внешних ключей в SQL
online.mirea.ru
Центр дистанционного обучения
Как работает ссылочная целостность?
Будем считать, что в таблице Enrolled столбец sid обеспечивает ссылочную
целостность с таблицей Students.
Что произойдет, если в таблицу Enrolled будет вставлена запись с несуществующим id
студента?
А что может произойти при удалении строки из Students?
Удаление всех строк в Enrolled, которые ссылаются на строки Students
Запрет на удаление строки из Students, на который есть ссылки из таблицы Enrolled
Установка во всех строках в Enrolled, которые ссылаются на строки Students значения
“default”.
online.mirea.ru
Центр дистанционного обучения
Варианты установления ссылочной
целостности
По умолчанию DBMS установит значение NO ACTION. При этом в
попытках удаления/обновления будет отказано.
CASCADE. При удалении будут удалены все значения в строках,
ссылающихся на удаленную строку.
SET NULL/SET DEFAULT. При удалении или обновлении в
ссылающиеся строки будут помещены NULL значения или DEFAULT
значения.
online.mirea.ru
Центр дистанционного обучения
Варианты установления ссылочной
целостности
CREATE TABLE Enrolled (sid CHAR (20), cid CHAR (20), grade CHAR (2),
PRIMARY KEY (sid, cid),
FOREIGN KEY (sid) REFERENCES Students
ON DELETE CASCADE
ON UPDATE SET DEFAULT)
online.mirea.ru
Центр дистанционного обучения
Пользовательские представления (user
views)
Представление, это тоже таблица. Однако вы храним в них не
набор строк, а правило, как этот набор получить (виртуальная
таблица).
CREATE VIEW YoungActiveStudents (name, grade)
AS SELECT S.name, E.grade
FROM Students S, Enrolled E WHERE S.sid = E.sid AND s.age<21
online.mirea.ru
Центр дистанционного обучения
Логическое представление noSQL модели
данных. Вариант.
online.mirea.ru
Центр дистанционного обучения
Чтение на дом
• Русский Кренке, стр. 305-324.
• Английский Кренке, стр. 228-260. 68-137.
• MIT, стр. 57-92. 130-173.
online.mirea.ru
Центр дистанционного обучения
Вопросы для самостоятельного изучения
1. В чем ключевое отличие концептуальной модели данных от
логической?
2. Что такое запрос к реляционной базе данных? Где можно
использовать результаты этой процедуры?
3. Возможна ли сортировка данных на физическом уровне
таблицы? А на логическом уровне запроса (query) или
представления (view)? Какие функции сортировки заложены в
SQL?
4. Приведите несколько примеров необходимости
использования пользовательского представления.
5. Почему в логической noSQL модели возможно существование
отношений без собственных ключей?
online.mirea.ru
Центр дистанционного обучения
Спасибо за внимание!
online.mirea.ru