SlideShare a Scribd company logo
1 of 58
Реляционные базы
данных
Александр Бекбулатов
Где хранить данные
Где хранить данные
1.На стороне пользователя
2.В памяти
3.На диске
4.На диске и в памяти
База данных
База данных — взаимосвязанная информация (данные)
об объектах, которая организованна специальным
образом и хранится на каком-либо носителе.
СУБД и базы данных
Система управления базами данных
СУБД — совокупность программных и лингвистических
средств общего или специального назначения,
обеспечивающих управление созданием и
использованием баз данных.
Функции СУБД
СУБД и базы данных
• управление данными во внешней памяти
• управление данными в оперативной памяти
• журнализация изменений, резервное копирование и
восстановление базы данных после сбоев
• поддержка языков БД (язык определения данных, язык
манипулирования данными).
Решаемые проблемы
СУБД и базы данных
• структура хранения
• примитивные операции (проекции, селекции, соединения и т.п.)
• эффективный поиск данных
• управление памятью
• совместный доступ к данным
• изоляция и блокировки
• атомарные операции
Классификация СУБД по модели данных
СУБД и базы данных
• Иерархические
• Сетевые
• Реляционные
• Объектно-ориентированные
• Объектно-реляционные
Реляционные СУБД
Реляционная СУБД — СУБД, управляющая реляционными базами
данных.
Реляционная база данных — база данных, основанная на реляционной
модели данных.
Основные понятия реляционной модели данных:
• Отношение, relation, таблица
• Кортеж, tuple, строка
• Атрибут, столбец
• Реляционная алгебра – запрос
Реляционная модель
Кортежи не упорядочены. Данные в столбце однотипны.
Реляционная модель данных
Операции реляционной алгебры
Реляционная модель данных
• Выборка (where …)
• Проекция (select …)
• Объединение (union)
• Пересечение (intersect)
• Разность (except)
• Произведение (from t1, t2)
• Деление (обратное пересечение)
• Соединение (пересечение с условием, join)
Выборка
Реляционная модель данных
Имя Возраст Вес
Harry 34 80
Donald 29 70
Helena 54 54
Peter 34 80
Персоны
Имя Возраст Вес
Harry 34 80
Helena 54 54
Peter 34 80
σВозраст ≥ 34(Персоны)
Проекция
Реляционная модель данных
Имя Возраст Вес
Harry 34 80
Donald 29 70
Helena 54 54
Peter 34 80
Персоны
πВозраст,Вес(Персоны)
Возраст Вес
34 80
29 70
54 54
34 80
Объединение
Реляционная модель данных
Имя Возраст Вес
Harry 34 80
Donald 29 70
Helena 54 54
Персоны
Имя Возраст Вес
Daffy 24 19
Donald 29 70
Персонажи
Имя Возраст Вес
Harry 34 80
Donald 29 70
Helena 54 54
Daffy 24 19
Donald 25 23
Пересечение
Реляционная модель данных
Имя Возраст Вес
Harry 34 80
Donald 29 70
Helena 54 54
Peter 34 80
Персоны
Имя Возраст Вес
Daffy 24 19
Donald 29 70
Scrooge 81 27
Персонажи
Имя Возраст Вес
Donald 29 70
Разность
Реляционная модель данных
Имя Возраст Вес
Harry 34 80
Donald 29 70
Helena 54 54
Персоны
Имя Возраст Вес
Daffy 24 19
Donald 29 70
Персонажи
Имя Возраст Вес
Harry 34 80
Donald 29 70
Helena 54 54
Daffy 24 19
Donald 25 23
Произведение
Реляционная модель данных
Код_мульта Название_мульта
0 The Simpsons
1 Family Guy
2 Duck Tales
Мультфильмы
Код_канала Название_канала
0 СТС
1 2х2
Каналы
Код_мульта Название_мульта Код_канала Название_канала
0 The Simpsons 0 СТС
0 The Simpsons 1 2х2
1 Family Guy 0 СТС
1 Family Guy 1 2х2
2 Duck Tales 0 СТС
2 Duck Tales 1 2х2
Деление
Реляционная модель данных
Мультфильмы
ID Название_мульта Название_канала
0 The Simpsons RenTV
0 The Simpsons 2х2
0 The Simpsons CTC
1 Family Guy RenTV
1 Family Guy 2х2
2 Duck Tales СТС
2 Duck Tales 2x2
Название_канала
RenTV
2х2
ID Название_мульта
0 The Simpsons
1 Family Guy
Каналы
Соединение
Реляционная модель данных
Мультфильмы
КаналыКод
мульта
Название_мульта Код канала
0 The Simpsons 2х2
1 Family Guy 2х2
2 Duck Tales RenTV
Код канала Частота
RenTV 3,1415
2х2 783,25
Код
мульта
Название_мульта Код канала Код канала Частота
0 The Simpsons 2х2 2х2 783,25
1 Family Guy 2х2 2х2 783,25
2 Duck Tales RenTV RenTV 3,1415
SQL
• DDL (Data Definition Language) - oпределение
структуры отношений
• DML (Data Manipulation Language) - изменение
хранимых данных
• DQL (Data Query Language) - запросы
SQL
Выборка
SELECT id, name, length(name) AS len
FROM users
WHERE email LIKE '%@mail.ru' AND age > 10
ORDER BY name DESC
LIMIT 10 OFFSET 15
Data Query Language
Агрегация
SELECT name, count(id) cnt
FROM users
GROUP BY name
ORDER BY cnt
HAVING cnt > 1
Data Query Language
Агрегатные функции: COUNT, SUM, AVG, GROUP_CONCAT
Соединения
SELECT h.name, a.name
FROM heroes h
INNER JOIN abilities a ON h.id = a.hero_id
SELECT h.name, a.name
FROM heroes h, abilities a
WHERE h.id = a.hero_id
Data Query Language
• CROSS JOIN (A, B)
• INNER JOIN (JOIN)
• LEFT OUTER JOIN ( A LEFT JOIN B )
• RIGH OUTER JOIN ( A RIGHT JOIN B )
• FULL OUTER JOIN ( A LEFT JOIN B UNION A RIGHT
JOIN B)
Data Query Language
Разновидности JOIN
Data Query Language
Вложенные запросы
SELECT title
FROM article t1
JOIN (
SELECT rubric_id, MAX(id) max_id
FROM article
GROUP BY rubric_id LIMIT 5
) t2
ON t1.id = t2.max_id;
Data Query Language
Объединение
SELECT * FROM t1
LEFT JOIN t2 ON t1.id = t2.id
UNION
SELECT * FROM t1
RIGHT JOIN t2 ON t1.id = t2.id
Data Query Language
INSERT INTO users (name, age) VALUES ('petr', 10);
UPDATE users SET age = 10 WHERE name = 'petr';
UPDATE users SET age = age + 1;
DELETE FROM users WHERE name = 'masha';
DELETE FROM users WHERE age > 150;
REPLACE INTO users (name, age) VALUES ('petr', 10);
INSERT INTO users (name, age) VALUES ('petr', 10) ON DUPLICATE
KEY UPDATE name = 'petr', age = 10;
Data Manipulation Language
CREATE TABLE users (
id INTEGER UNSIGNED NOT NULL,
email VARCHAR(64) NOT NULL,
name VARCHAR(255) NOT NULL,
birthdate DATE,
registred DATETIME DEFAULT NOW(),
PRIMARY KEY (id),
UNIQUE KEY (email),
KEY birthdate_idx (birthdate)
);
Data Definition Language
CREATE TABLE users (
id SERIAL,
name VARCHAR(255) NOT NULL
);
CREATE TABLE cars (
id SERIAL,
number VARCHAR(10) NOT NULL,
owner_id BIGINT NOT NULL,
FOREIGN KEY (owner_id) REFERENCES users (id) ON DELETE CASCADE
);
Data Definition Language
DROP TABLE useless;
ALTER TABLE users ADD COLUMN language enum('ru', 'en') NOT
NULL DEFAULT 'ru' after name;
ALTER TABLE users DROP COLUMN langauge;
ALTER TABLE users ADD INDEX ('name');
ALTER TABLE users CHANGE nickname fullname varchar(255)
NOT NULL;
CREATE DATABASE test;
Data Definition Language
Проектирование
Проектирование
Блюдо Вид Дата Продукт Калорийность Вес
(г)
Поставщи
к
Город Страна Вес (кг) Цена ($)
Лобио Закуска 1/9/2012 Фасоль 307 200 "Хуанхэ" Пекин Китай 250 0.37
Лобио Закуска 1/9/2012 Лук 45 40 "Наталка" Киев Украина 100 0.52
Лобио Закуска 1/9/2012 Масло 742 30 "Лайма" Рига Латвия 70 1.55
Лобио Закуска 1/9/2012 Зелень 18 10 "Даугава" Рига Латвия 15 0.99
Борщ Суп 1/9/2012 Мясо 166 80 "Наталка" Киев Украина 100 2.18
Борщ Суп 1/9/2012 Лук 450 30 "Наталка" Киев Украина 100 0.52
Борщ Суп 1/9/2012 Томаты 24 40 "Полесье
"
Киев Украина 120 0.45
Борщ Суп 1/9/2012 Рис 334 50 "Хуанхэ" Пекин Китай 75 0.44
Борщ Суп 1/9/2012 Масло 742 15 "Полесье
"
Киев Украина 50 1.62
Борщ Суп 1/9/2012 Зелень 18 15 "Наталка" Киев Украина 10 0.88
Избыточность
Противоречивость (добавление / удаление / обновление)
Задачи проектирования
Проектирование
• Обеспечение хранения в БД всей необходимой информации.
• Обеспечение возможности получения данных по всем необходимым
запросам.
• Сокращение избыточности и дублирования данных.
• Обеспечение целостности данных (правильности их содержания):
исключение противоречий в содержании данных, исключение их
потери и т.д.
Нормализация
Минимальный набор аттрибутов, обеспечивающий уникальность
кортежа. Если у двух кортежей совпадают все ключевые аттрибуты →
кортежи совпадают. Никакое подмножество ключа не является
ключом.
Ключ
Первичный ключ
Если существует несколько ключей, один из них называют первичным.
1ая нормальная форма
Переменная отношения находится в первой нормальной форме тогда и
только тогда, когда в любом допустимом значении отношения каждый
его кортеж содержит только одно значение для каждого из атрибутов.
Сотрудник Номер телефона
Иванов И. И. 283-56-82
390-57-34
Петров П. П. 708-62-34
Сотрудник Номер телефона
Иванов И. И. 283-56-82
Иванов И. И. 390-57-34
Петров П. П. 708-62-34
2ая нормальная форма
Схема отношений находится во второй нормальной форме тогда и
только тогда, когда она находится в первой нормальной форме и каждый
неключевой атрибут X неприводимо зависит от ее потенциального
ключа.
(т.е. невозможно выделить подключ, от которого зависит)
Сотрудник Должность Компьютер
Гришин Кладовщик Нет
Васильев Программист Есть
Иванов Кладовщик Нет
Сотрудник Должность
Гришин Кладовщик
Васильев Программист
Иванов Кладовщик
Должность Компьютер
Кладовщик Нет
Программист Есть
3 и 4 нормальные формы
Схема отношений R находится в третьей нормальной форме тогда и
только тогда, когда она находится во второй нормальной форме и ни
один неключевой атрибут R не находится в транзитивной
функциональной зависимости от потенциального ключа R.
3я нормальная форма
4я нормальная форма (Бойса-Кодда)
Переменная отношения находится в четвёртой нормальной форме, если
она находится в нормальной форме Бойса — Кодда и не содержит
нетривиальных многозначных зависимостей
Формализация на практике
Проектирование
• Логическое разделение сущностей
• Выделение синтетических первичных ключей
• Связи 1:N, N:1 реализуются через внешний ключ
• Связи N:M реализуются через промежуточную таблицу
• Атрибут с фиксированным числом значений – внешняя
таблица либо поле типа enum
Проектирование
Блюдо Вид Дата Продукт Калорийност
ь
Вес
(г)
Поставщ
ик
Город Страна Вес (кг) Цена ($)
Лобио Закуска 1/9/2012 Фасоль 307 200 "Хуанхэ" Пекин Китай 250 0.37
Лобио Закуска 1/9/2012 Лук 45 40 "Наталка
"
Киев Украина 100 0.52
Лобио Закуска 1/9/2012 Масло 742 30 "Лайма" Рига Латвия 70 1.55
Лобио Закуска 1/9/2012 Зелень 18 10 "Даугава" Рига Латвия 15 0.99
Борщ Суп 1/9/2012 Мясо 166 80 "Наталка
"
Киев Украина 100 2.18
Борщ Суп 1/9/2012 Лук 450 30 "Наталка
"
Киев Украина 100 0.52
Борщ Суп 1/9/2012 Томаты 24 40 "Полесье
"
Киев Украина 120 0.45
Борщ Суп 1/9/2012 Рис 334 50 "Хуанхэ" Пекин Китай 75 0.44
Борщ Суп 1/9/2012 Масло 742 15 "Полесье
"
Киев Украина 50 1.62
Борщ Суп 1/9/2012 Зелень 18 15 "Наталка
"
Киев Украина 10 0.88
Внешние ключи
Проектирование
Внешний ключ – подмножество атрибутов некоторой схемы отношения R2,
значения которых должны совпадать со значениями некоторого
потенциального ключа некоторой схемы отношения R1.
Изменение/удаление внешнего ключа
• RESTRICT
• CASCADE
• SET NULL
• NO ACTION
Внутренняя структура
Индексы
• Первичный ключ PRIMARY
• Уникальный индекс UNIQUE
• Неуникальный индекс INDEX
• Пространственный индекс SPATIAL
• Полнотекстовый индекс FULLTEXT
B-дерево
Индексы
• Сбалансированное дерево.
• Эффективное заполнение блоков
• Применяется для индексирования ключевых и неключевых
атрибутов
• Возможность поиска диапазона значений
B-дерево
Индексы
Хеш-таблица
Индексы
• Быстрый доступ к данным
• Вероятность возникновения длинной цепочки блоков
• Отсутствие возможности поиска диапазона значений
Хеш-таблица
Индексы
Методы оптимизации
• Создавать индексы для полей по которым происходит соединение
таблиц (JOIN)
• Создавать индексы для полей по которым фильтруются записи
(WHERE)
• Создавать индексы для полей по которым идет сортировка (ORDER)
• Проверять план выполнения запроса (EXPLAIN)
• Управление оптимизатором (принудительное использование индекса,
порядок соединения таблиц)
«Ну и запросы у вас…» – сказала
база данных и повисла
ACID
1.Atomicity – атомарность операций
2.Consistency – согласованность
3.Isolation – изоляция клиентов
4.Durability – гарантия сохранения после успешного
завершения операции
Транзакции
START TRANSACTION;
SELECT balance FROM checking WHERE customer_id = 10233276;
UPDATE checking SET balance = balance - 200.00 WHERE customer_id = 10233276;
UPDATE savings SET balance = balance + 200.00 WHERE customer_id = 10233276;
COMMIT;
Транзакция – группа операций,
которые либо происходят все
вместе, либо не происходят
вообще
Уровни изоляции
Транзакции
Уровень
изоляции
Возможность
чернового
чтения
Возможность
невоспроизводи
мого чтения
Возможность
фантомного
чтения
Блокиров
ка чтения
READ
UNCOMMITTED
Да Да Да Нет
READ
COMMITTED
Нет Да Да Нет
REPEATABLE
READ
Нет Нет Да Нет
SERIALIZABLE Нет Нет Нет Да
Блокировки
Уровень:
• Строка (InnoDB)
• Страница памяти (BDB)
• Таблица (MyISAM, MEMORY, MERGE)
Тип:
• На чтение (READ LOCK)
• На запись (WRITE LOCK)
Хранимые процедуры
Хранимая процедура – набор команд SQL, которые могут
компилироваться и храниться на сервере.
DELIMITER //
DROP PROCEDURE IF EXISTS p1//
CREATE PROCEDURE `p1` ()
LANGUAGE SQL
DETERMINISTIC
SQL SECURITY DEFINER
COMMENT 'A procedure'
BEGIN
SELECT 'Hello World !';
END//
Триггеры
Триггер – программа, к которой обращается ядро СУБД до, и/или после
обрабатывания записи в таблице
CREATE TRIGGER add_count_comment AFTER INSERT ON comments
FOR EACH ROW BEGIN
UPDATE user SET user.countcomment= user.countcomment+1 WHERE
user.id = NEW.user_id;
UPDATE blog SET comment = comment+1 WHERE id = NEW.owner_id;
END
Репликация
Репликация — это процесс, под которым понимается копирование
данных из одного источника на множество других и наоборот.
Домашнее задание
Спроектировать базу данных для хранения
журнала посещения занятий.
Спасибо за внимание
Бекбулатов Александр
e-mail: a.bekbulatov@corp.mail.ru

More Related Content

Viewers also liked

реляционные базы данных
реляционные базы данныхреляционные базы данных
реляционные базы данныхishuk
 
Основы баз данных
Основы баз данныхОсновы баз данных
Основы баз данныхEvgeny Smirnov
 
реляционные базы данных
реляционные базы данныхреляционные базы данных
реляционные базы данныхbismax
 
JSON-RPC или когда rest неудобен
JSON-RPC или когда rest неудобенJSON-RPC или когда rest неудобен
JSON-RPC или когда rest неудобенPyNSK
 
ITmozg, Даниил Павлючков
ITmozg, Даниил ПавлючковITmozg, Даниил Павлючков
ITmozg, Даниил ПавлючковEYevseyeva
 
Поговорим про арифметику
Поговорим про арифметикуПоговорим про арифметику
Поговорим про арифметикуAndrey Akinshin
 

Viewers also liked (8)

базы данных
базы данныхбазы данных
базы данных
 
реляционные базы данных
реляционные базы данныхреляционные базы данных
реляционные базы данных
 
Основы баз данных
Основы баз данныхОсновы баз данных
Основы баз данных
 
реляционные базы данных
реляционные базы данныхреляционные базы данных
реляционные базы данных
 
JSON-RPC или когда rest неудобен
JSON-RPC или когда rest неудобенJSON-RPC или когда rest неудобен
JSON-RPC или когда rest неудобен
 
ITmozg, Даниил Павлючков
ITmozg, Даниил ПавлючковITmozg, Даниил Павлючков
ITmozg, Даниил Павлючков
 
REST
RESTREST
REST
 
Поговорим про арифметику
Поговорим про арифметикуПоговорим про арифметику
Поговорим про арифметику
 

Similar to Web осень 2012 лекция 5

Web весна 2013 лекция 5
Web весна 2013 лекция 5Web весна 2013 лекция 5
Web весна 2013 лекция 5Technopark
 
Реляционные базы данных
Реляционные базы данныхРеляционные базы данных
Реляционные базы данныхLevon Avakyan
 
Web осень 2013 лекция 6
Web осень 2013 лекция 6Web осень 2013 лекция 6
Web осень 2013 лекция 6Technopark
 
Лекция Android. БД SQLite, ContentProvider, Loader
Лекция Android. БД SQLite, ContentProvider, LoaderЛекция Android. БД SQLite, ContentProvider, Loader
Лекция Android. БД SQLite, ContentProvider, LoaderАлександр Брич
 
Web весна 2012 лекция 5
Web весна 2012 лекция 5Web весна 2012 лекция 5
Web весна 2012 лекция 5Technopark
 
Тестування міграції: свіжий досвід від першої особи, Катя Шепелева
Тестування міграції: свіжий досвід від першої особи, Катя ШепелеваТестування міграції: свіжий досвід від першої особи, Катя Шепелева
Тестування міграції: свіжий досвід від першої особи, Катя ШепелеваSigma Software
 
Groovy jug-moscow-part 1
Groovy jug-moscow-part 1Groovy jug-moscow-part 1
Groovy jug-moscow-part 1Evgeny Borisov
 
Сергей Пузанков — XPath
Сергей Пузанков — XPathСергей Пузанков — XPath
Сергей Пузанков — XPathYandex
 
13 14 15_индексирование
13 14 15_индексирование13 14 15_индексирование
13 14 15_индексированиеEvgeniy Golendyhin
 
школа открытых данны. открытые базы знаний и семантические вики
школа открытых данны. открытые базы знаний и семантические викишкола открытых данны. открытые базы знаний и семантические вики
школа открытых данны. открытые базы знаний и семантические викиOlga Romanova
 
Павел Павлов - Scala для профессионалов - Joker 2013
Павел Павлов - Scala для профессионалов - Joker 2013Павел Павлов - Scala для профессионалов - Joker 2013
Павел Павлов - Scala для профессионалов - Joker 2013ScalaNsk
 
MongoDB в продакшен - миф или реальность?
MongoDB в продакшен - миф или реальность?MongoDB в продакшен - миф или реальность?
MongoDB в продакшен - миф или реальность?Alexey Tokar
 
Web страницы.язык html
Web страницы.язык htmlWeb страницы.язык html
Web страницы.язык htmlГимназия
 
Распределенные системы в Одноклассниках / Олег Анастасьев (Одноклассники)
Распределенные системы в Одноклассниках / Олег Анастасьев (Одноклассники)Распределенные системы в Одноклассниках / Олег Анастасьев (Одноклассники)
Распределенные системы в Одноклассниках / Олег Анастасьев (Одноклассники)Ontico
 
MongoDB. Области применения, преимущества и узкие места, тонкости использован...
MongoDB. Области применения, преимущества и узкие места, тонкости использован...MongoDB. Области применения, преимущества и узкие места, тонкости использован...
MongoDB. Области применения, преимущества и узкие места, тонкости использован...phpdevby
 
Cоциальный граф "Одноклассников" в myTarget
Cоциальный граф "Одноклассников" в myTargetCоциальный граф "Одноклассников" в myTarget
Cоциальный граф "Одноклассников" в myTargetOleg Tsarev
 

Similar to Web осень 2012 лекция 5 (20)

Web весна 2013 лекция 5
Web весна 2013 лекция 5Web весна 2013 лекция 5
Web весна 2013 лекция 5
 
базы данных
базы данныхбазы данных
базы данных
 
Реляционные базы данных
Реляционные базы данныхРеляционные базы данных
Реляционные базы данных
 
Rgsu04
Rgsu04Rgsu04
Rgsu04
 
Rgsu04
Rgsu04Rgsu04
Rgsu04
 
Web осень 2013 лекция 6
Web осень 2013 лекция 6Web осень 2013 лекция 6
Web осень 2013 лекция 6
 
Лекция Android. БД SQLite, ContentProvider, Loader
Лекция Android. БД SQLite, ContentProvider, LoaderЛекция Android. БД SQLite, ContentProvider, Loader
Лекция Android. БД SQLite, ContentProvider, Loader
 
Web весна 2012 лекция 5
Web весна 2012 лекция 5Web весна 2012 лекция 5
Web весна 2012 лекция 5
 
Тестування міграції: свіжий досвід від першої особи, Катя Шепелева
Тестування міграції: свіжий досвід від першої особи, Катя ШепелеваТестування міграції: свіжий досвід від першої особи, Катя Шепелева
Тестування міграції: свіжий досвід від першої особи, Катя Шепелева
 
Groovy jug-moscow-part 1
Groovy jug-moscow-part 1Groovy jug-moscow-part 1
Groovy jug-moscow-part 1
 
Сергей Пузанков — XPath
Сергей Пузанков — XPathСергей Пузанков — XPath
Сергей Пузанков — XPath
 
13 14 15_индексирование
13 14 15_индексирование13 14 15_индексирование
13 14 15_индексирование
 
школа открытых данны. открытые базы знаний и семантические вики
школа открытых данны. открытые базы знаний и семантические викишкола открытых данны. открытые базы знаний и семантические вики
школа открытых данны. открытые базы знаний и семантические вики
 
Павел Павлов - Scala для профессионалов - Joker 2013
Павел Павлов - Scala для профессионалов - Joker 2013Павел Павлов - Scala для профессионалов - Joker 2013
Павел Павлов - Scala для профессионалов - Joker 2013
 
MongoDB в продакшен - миф или реальность?
MongoDB в продакшен - миф или реальность?MongoDB в продакшен - миф или реальность?
MongoDB в продакшен - миф или реальность?
 
Web страницы.язык html
Web страницы.язык htmlWeb страницы.язык html
Web страницы.язык html
 
Распределенные системы в Одноклассниках / Олег Анастасьев (Одноклассники)
Распределенные системы в Одноклассниках / Олег Анастасьев (Одноклассники)Распределенные системы в Одноклассниках / Олег Анастасьев (Одноклассники)
Распределенные системы в Одноклассниках / Олег Анастасьев (Одноклассники)
 
MongoDB. Области применения, преимущества и узкие места, тонкости использован...
MongoDB. Области применения, преимущества и узкие места, тонкости использован...MongoDB. Области применения, преимущества и узкие места, тонкости использован...
MongoDB. Области применения, преимущества и узкие места, тонкости использован...
 
Управление данными (реляционная модель)
Управление данными (реляционная модель)Управление данными (реляционная модель)
Управление данными (реляционная модель)
 
Cоциальный граф "Одноклассников" в myTarget
Cоциальный граф "Одноклассников" в myTargetCоциальный граф "Одноклассников" в myTarget
Cоциальный граф "Одноклассников" в myTarget
 

More from Technopark

Лекция 11. Вычислительная модель Pregel
Лекция 11. Вычислительная модель PregelЛекция 11. Вычислительная модель Pregel
Лекция 11. Вычислительная модель PregelTechnopark
 
Лекция 14. Hadoop в Поиске Mail.Ru
Лекция 14. Hadoop в Поиске Mail.RuЛекция 14. Hadoop в Поиске Mail.Ru
Лекция 14. Hadoop в Поиске Mail.RuTechnopark
 
Лекция 13. YARN
Лекция 13. YARNЛекция 13. YARN
Лекция 13. YARNTechnopark
 
Лекция 12. Spark
Лекция 12. SparkЛекция 12. Spark
Лекция 12. SparkTechnopark
 
Лекция 10. Apache Mahout
Лекция 10. Apache MahoutЛекция 10. Apache Mahout
Лекция 10. Apache MahoutTechnopark
 
Лекция 9. ZooKeeper
Лекция 9. ZooKeeperЛекция 9. ZooKeeper
Лекция 9. ZooKeeperTechnopark
 
Лекция 7. Введение в Pig и Hive
Лекция 7. Введение в Pig и HiveЛекция 7. Введение в Pig и Hive
Лекция 7. Введение в Pig и HiveTechnopark
 
Лекция 6. MapReduce в Hadoop (графы)
Лекция 6. MapReduce в Hadoop (графы)Лекция 6. MapReduce в Hadoop (графы)
Лекция 6. MapReduce в Hadoop (графы)Technopark
 
Лекция 5. MapReduce в Hadoop (алгоритмы)
Лекция 5. MapReduce в Hadoop (алгоритмы)Лекция 5. MapReduce в Hadoop (алгоритмы)
Лекция 5. MapReduce в Hadoop (алгоритмы)Technopark
 
Лекция 4. MapReduce в Hadoop (введение)
Лекция 4. MapReduce в Hadoop (введение)Лекция 4. MapReduce в Hadoop (введение)
Лекция 4. MapReduce в Hadoop (введение)Technopark
 
Лекция 3. Распределённая файловая система HDFS
Лекция 3. Распределённая файловая система HDFSЛекция 3. Распределённая файловая система HDFS
Лекция 3. Распределённая файловая система HDFSTechnopark
 
Лекция 2. Основы Hadoop
Лекция 2. Основы HadoopЛекция 2. Основы Hadoop
Лекция 2. Основы HadoopTechnopark
 
Лекция 1. Введение в Big Data и MapReduce
Лекция 1. Введение в Big Data и MapReduceЛекция 1. Введение в Big Data и MapReduce
Лекция 1. Введение в Big Data и MapReduceTechnopark
 
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"Technopark
 
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL" Час...
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL" Час...СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL" Час...
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL" Час...Technopark
 
СУБД 2013 Лекция №9 "Безопасность баз данных"
СУБД 2013 Лекция №9 "Безопасность баз данных"СУБД 2013 Лекция №9 "Безопасность баз данных"
СУБД 2013 Лекция №9 "Безопасность баз данных"Technopark
 
СУБД 2013 Лекция №8 "Конфигурирование базы данных"
СУБД 2013 Лекция №8 "Конфигурирование базы данных"СУБД 2013 Лекция №8 "Конфигурирование базы данных"
СУБД 2013 Лекция №8 "Конфигурирование базы данных"Technopark
 
СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"
СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"
СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"Technopark
 
СУБД 2013 Лекция №5 "Определение узких мест"
СУБД 2013 Лекция №5 "Определение узких мест"СУБД 2013 Лекция №5 "Определение узких мест"
СУБД 2013 Лекция №5 "Определение узких мест"Technopark
 
СУБД 2013 Лекция №6 "Профилирование запросов. Сложноструктурированные SQL-зап...
СУБД 2013 Лекция №6 "Профилирование запросов. Сложноструктурированные SQL-зап...СУБД 2013 Лекция №6 "Профилирование запросов. Сложноструктурированные SQL-зап...
СУБД 2013 Лекция №6 "Профилирование запросов. Сложноструктурированные SQL-зап...Technopark
 

More from Technopark (20)

Лекция 11. Вычислительная модель Pregel
Лекция 11. Вычислительная модель PregelЛекция 11. Вычислительная модель Pregel
Лекция 11. Вычислительная модель Pregel
 
Лекция 14. Hadoop в Поиске Mail.Ru
Лекция 14. Hadoop в Поиске Mail.RuЛекция 14. Hadoop в Поиске Mail.Ru
Лекция 14. Hadoop в Поиске Mail.Ru
 
Лекция 13. YARN
Лекция 13. YARNЛекция 13. YARN
Лекция 13. YARN
 
Лекция 12. Spark
Лекция 12. SparkЛекция 12. Spark
Лекция 12. Spark
 
Лекция 10. Apache Mahout
Лекция 10. Apache MahoutЛекция 10. Apache Mahout
Лекция 10. Apache Mahout
 
Лекция 9. ZooKeeper
Лекция 9. ZooKeeperЛекция 9. ZooKeeper
Лекция 9. ZooKeeper
 
Лекция 7. Введение в Pig и Hive
Лекция 7. Введение в Pig и HiveЛекция 7. Введение в Pig и Hive
Лекция 7. Введение в Pig и Hive
 
Лекция 6. MapReduce в Hadoop (графы)
Лекция 6. MapReduce в Hadoop (графы)Лекция 6. MapReduce в Hadoop (графы)
Лекция 6. MapReduce в Hadoop (графы)
 
Лекция 5. MapReduce в Hadoop (алгоритмы)
Лекция 5. MapReduce в Hadoop (алгоритмы)Лекция 5. MapReduce в Hadoop (алгоритмы)
Лекция 5. MapReduce в Hadoop (алгоритмы)
 
Лекция 4. MapReduce в Hadoop (введение)
Лекция 4. MapReduce в Hadoop (введение)Лекция 4. MapReduce в Hadoop (введение)
Лекция 4. MapReduce в Hadoop (введение)
 
Лекция 3. Распределённая файловая система HDFS
Лекция 3. Распределённая файловая система HDFSЛекция 3. Распределённая файловая система HDFS
Лекция 3. Распределённая файловая система HDFS
 
Лекция 2. Основы Hadoop
Лекция 2. Основы HadoopЛекция 2. Основы Hadoop
Лекция 2. Основы Hadoop
 
Лекция 1. Введение в Big Data и MapReduce
Лекция 1. Введение в Big Data и MapReduceЛекция 1. Введение в Big Data и MapReduce
Лекция 1. Введение в Big Data и MapReduce
 
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"
 
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL" Час...
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL" Час...СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL" Час...
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL" Час...
 
СУБД 2013 Лекция №9 "Безопасность баз данных"
СУБД 2013 Лекция №9 "Безопасность баз данных"СУБД 2013 Лекция №9 "Безопасность баз данных"
СУБД 2013 Лекция №9 "Безопасность баз данных"
 
СУБД 2013 Лекция №8 "Конфигурирование базы данных"
СУБД 2013 Лекция №8 "Конфигурирование базы данных"СУБД 2013 Лекция №8 "Конфигурирование базы данных"
СУБД 2013 Лекция №8 "Конфигурирование базы данных"
 
СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"
СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"
СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"
 
СУБД 2013 Лекция №5 "Определение узких мест"
СУБД 2013 Лекция №5 "Определение узких мест"СУБД 2013 Лекция №5 "Определение узких мест"
СУБД 2013 Лекция №5 "Определение узких мест"
 
СУБД 2013 Лекция №6 "Профилирование запросов. Сложноструктурированные SQL-зап...
СУБД 2013 Лекция №6 "Профилирование запросов. Сложноструктурированные SQL-зап...СУБД 2013 Лекция №6 "Профилирование запросов. Сложноструктурированные SQL-зап...
СУБД 2013 Лекция №6 "Профилирование запросов. Сложноструктурированные SQL-зап...
 

Web осень 2012 лекция 5

  • 3. Где хранить данные 1.На стороне пользователя 2.В памяти 3.На диске 4.На диске и в памяти
  • 4. База данных База данных — взаимосвязанная информация (данные) об объектах, которая организованна специальным образом и хранится на каком-либо носителе. СУБД и базы данных Система управления базами данных СУБД — совокупность программных и лингвистических средств общего или специального назначения, обеспечивающих управление созданием и использованием баз данных.
  • 5. Функции СУБД СУБД и базы данных • управление данными во внешней памяти • управление данными в оперативной памяти • журнализация изменений, резервное копирование и восстановление базы данных после сбоев • поддержка языков БД (язык определения данных, язык манипулирования данными).
  • 6. Решаемые проблемы СУБД и базы данных • структура хранения • примитивные операции (проекции, селекции, соединения и т.п.) • эффективный поиск данных • управление памятью • совместный доступ к данным • изоляция и блокировки • атомарные операции
  • 7. Классификация СУБД по модели данных СУБД и базы данных • Иерархические • Сетевые • Реляционные • Объектно-ориентированные • Объектно-реляционные
  • 8. Реляционные СУБД Реляционная СУБД — СУБД, управляющая реляционными базами данных. Реляционная база данных — база данных, основанная на реляционной модели данных. Основные понятия реляционной модели данных: • Отношение, relation, таблица • Кортеж, tuple, строка • Атрибут, столбец • Реляционная алгебра – запрос
  • 10. Кортежи не упорядочены. Данные в столбце однотипны. Реляционная модель данных
  • 11. Операции реляционной алгебры Реляционная модель данных • Выборка (where …) • Проекция (select …) • Объединение (union) • Пересечение (intersect) • Разность (except) • Произведение (from t1, t2) • Деление (обратное пересечение) • Соединение (пересечение с условием, join)
  • 12. Выборка Реляционная модель данных Имя Возраст Вес Harry 34 80 Donald 29 70 Helena 54 54 Peter 34 80 Персоны Имя Возраст Вес Harry 34 80 Helena 54 54 Peter 34 80 σВозраст ≥ 34(Персоны)
  • 13. Проекция Реляционная модель данных Имя Возраст Вес Harry 34 80 Donald 29 70 Helena 54 54 Peter 34 80 Персоны πВозраст,Вес(Персоны) Возраст Вес 34 80 29 70 54 54 34 80
  • 14. Объединение Реляционная модель данных Имя Возраст Вес Harry 34 80 Donald 29 70 Helena 54 54 Персоны Имя Возраст Вес Daffy 24 19 Donald 29 70 Персонажи Имя Возраст Вес Harry 34 80 Donald 29 70 Helena 54 54 Daffy 24 19 Donald 25 23
  • 15. Пересечение Реляционная модель данных Имя Возраст Вес Harry 34 80 Donald 29 70 Helena 54 54 Peter 34 80 Персоны Имя Возраст Вес Daffy 24 19 Donald 29 70 Scrooge 81 27 Персонажи Имя Возраст Вес Donald 29 70
  • 16. Разность Реляционная модель данных Имя Возраст Вес Harry 34 80 Donald 29 70 Helena 54 54 Персоны Имя Возраст Вес Daffy 24 19 Donald 29 70 Персонажи Имя Возраст Вес Harry 34 80 Donald 29 70 Helena 54 54 Daffy 24 19 Donald 25 23
  • 17. Произведение Реляционная модель данных Код_мульта Название_мульта 0 The Simpsons 1 Family Guy 2 Duck Tales Мультфильмы Код_канала Название_канала 0 СТС 1 2х2 Каналы Код_мульта Название_мульта Код_канала Название_канала 0 The Simpsons 0 СТС 0 The Simpsons 1 2х2 1 Family Guy 0 СТС 1 Family Guy 1 2х2 2 Duck Tales 0 СТС 2 Duck Tales 1 2х2
  • 18. Деление Реляционная модель данных Мультфильмы ID Название_мульта Название_канала 0 The Simpsons RenTV 0 The Simpsons 2х2 0 The Simpsons CTC 1 Family Guy RenTV 1 Family Guy 2х2 2 Duck Tales СТС 2 Duck Tales 2x2 Название_канала RenTV 2х2 ID Название_мульта 0 The Simpsons 1 Family Guy Каналы
  • 19. Соединение Реляционная модель данных Мультфильмы КаналыКод мульта Название_мульта Код канала 0 The Simpsons 2х2 1 Family Guy 2х2 2 Duck Tales RenTV Код канала Частота RenTV 3,1415 2х2 783,25 Код мульта Название_мульта Код канала Код канала Частота 0 The Simpsons 2х2 2х2 783,25 1 Family Guy 2х2 2х2 783,25 2 Duck Tales RenTV RenTV 3,1415
  • 20. SQL
  • 21. • DDL (Data Definition Language) - oпределение структуры отношений • DML (Data Manipulation Language) - изменение хранимых данных • DQL (Data Query Language) - запросы SQL
  • 22. Выборка SELECT id, name, length(name) AS len FROM users WHERE email LIKE '%@mail.ru' AND age > 10 ORDER BY name DESC LIMIT 10 OFFSET 15 Data Query Language
  • 23. Агрегация SELECT name, count(id) cnt FROM users GROUP BY name ORDER BY cnt HAVING cnt > 1 Data Query Language Агрегатные функции: COUNT, SUM, AVG, GROUP_CONCAT
  • 24. Соединения SELECT h.name, a.name FROM heroes h INNER JOIN abilities a ON h.id = a.hero_id SELECT h.name, a.name FROM heroes h, abilities a WHERE h.id = a.hero_id Data Query Language
  • 25. • CROSS JOIN (A, B) • INNER JOIN (JOIN) • LEFT OUTER JOIN ( A LEFT JOIN B ) • RIGH OUTER JOIN ( A RIGHT JOIN B ) • FULL OUTER JOIN ( A LEFT JOIN B UNION A RIGHT JOIN B) Data Query Language Разновидности JOIN
  • 27. Вложенные запросы SELECT title FROM article t1 JOIN ( SELECT rubric_id, MAX(id) max_id FROM article GROUP BY rubric_id LIMIT 5 ) t2 ON t1.id = t2.max_id; Data Query Language
  • 28. Объединение SELECT * FROM t1 LEFT JOIN t2 ON t1.id = t2.id UNION SELECT * FROM t1 RIGHT JOIN t2 ON t1.id = t2.id Data Query Language
  • 29. INSERT INTO users (name, age) VALUES ('petr', 10); UPDATE users SET age = 10 WHERE name = 'petr'; UPDATE users SET age = age + 1; DELETE FROM users WHERE name = 'masha'; DELETE FROM users WHERE age > 150; REPLACE INTO users (name, age) VALUES ('petr', 10); INSERT INTO users (name, age) VALUES ('petr', 10) ON DUPLICATE KEY UPDATE name = 'petr', age = 10; Data Manipulation Language
  • 30. CREATE TABLE users ( id INTEGER UNSIGNED NOT NULL, email VARCHAR(64) NOT NULL, name VARCHAR(255) NOT NULL, birthdate DATE, registred DATETIME DEFAULT NOW(), PRIMARY KEY (id), UNIQUE KEY (email), KEY birthdate_idx (birthdate) ); Data Definition Language
  • 31. CREATE TABLE users ( id SERIAL, name VARCHAR(255) NOT NULL ); CREATE TABLE cars ( id SERIAL, number VARCHAR(10) NOT NULL, owner_id BIGINT NOT NULL, FOREIGN KEY (owner_id) REFERENCES users (id) ON DELETE CASCADE ); Data Definition Language
  • 32. DROP TABLE useless; ALTER TABLE users ADD COLUMN language enum('ru', 'en') NOT NULL DEFAULT 'ru' after name; ALTER TABLE users DROP COLUMN langauge; ALTER TABLE users ADD INDEX ('name'); ALTER TABLE users CHANGE nickname fullname varchar(255) NOT NULL; CREATE DATABASE test; Data Definition Language
  • 34. Проектирование Блюдо Вид Дата Продукт Калорийность Вес (г) Поставщи к Город Страна Вес (кг) Цена ($) Лобио Закуска 1/9/2012 Фасоль 307 200 "Хуанхэ" Пекин Китай 250 0.37 Лобио Закуска 1/9/2012 Лук 45 40 "Наталка" Киев Украина 100 0.52 Лобио Закуска 1/9/2012 Масло 742 30 "Лайма" Рига Латвия 70 1.55 Лобио Закуска 1/9/2012 Зелень 18 10 "Даугава" Рига Латвия 15 0.99 Борщ Суп 1/9/2012 Мясо 166 80 "Наталка" Киев Украина 100 2.18 Борщ Суп 1/9/2012 Лук 450 30 "Наталка" Киев Украина 100 0.52 Борщ Суп 1/9/2012 Томаты 24 40 "Полесье " Киев Украина 120 0.45 Борщ Суп 1/9/2012 Рис 334 50 "Хуанхэ" Пекин Китай 75 0.44 Борщ Суп 1/9/2012 Масло 742 15 "Полесье " Киев Украина 50 1.62 Борщ Суп 1/9/2012 Зелень 18 15 "Наталка" Киев Украина 10 0.88 Избыточность Противоречивость (добавление / удаление / обновление)
  • 35. Задачи проектирования Проектирование • Обеспечение хранения в БД всей необходимой информации. • Обеспечение возможности получения данных по всем необходимым запросам. • Сокращение избыточности и дублирования данных. • Обеспечение целостности данных (правильности их содержания): исключение противоречий в содержании данных, исключение их потери и т.д.
  • 36. Нормализация Минимальный набор аттрибутов, обеспечивающий уникальность кортежа. Если у двух кортежей совпадают все ключевые аттрибуты → кортежи совпадают. Никакое подмножество ключа не является ключом. Ключ Первичный ключ Если существует несколько ключей, один из них называют первичным.
  • 37. 1ая нормальная форма Переменная отношения находится в первой нормальной форме тогда и только тогда, когда в любом допустимом значении отношения каждый его кортеж содержит только одно значение для каждого из атрибутов. Сотрудник Номер телефона Иванов И. И. 283-56-82 390-57-34 Петров П. П. 708-62-34 Сотрудник Номер телефона Иванов И. И. 283-56-82 Иванов И. И. 390-57-34 Петров П. П. 708-62-34
  • 38. 2ая нормальная форма Схема отношений находится во второй нормальной форме тогда и только тогда, когда она находится в первой нормальной форме и каждый неключевой атрибут X неприводимо зависит от ее потенциального ключа. (т.е. невозможно выделить подключ, от которого зависит) Сотрудник Должность Компьютер Гришин Кладовщик Нет Васильев Программист Есть Иванов Кладовщик Нет Сотрудник Должность Гришин Кладовщик Васильев Программист Иванов Кладовщик Должность Компьютер Кладовщик Нет Программист Есть
  • 39. 3 и 4 нормальные формы Схема отношений R находится в третьей нормальной форме тогда и только тогда, когда она находится во второй нормальной форме и ни один неключевой атрибут R не находится в транзитивной функциональной зависимости от потенциального ключа R. 3я нормальная форма 4я нормальная форма (Бойса-Кодда) Переменная отношения находится в четвёртой нормальной форме, если она находится в нормальной форме Бойса — Кодда и не содержит нетривиальных многозначных зависимостей
  • 40. Формализация на практике Проектирование • Логическое разделение сущностей • Выделение синтетических первичных ключей • Связи 1:N, N:1 реализуются через внешний ключ • Связи N:M реализуются через промежуточную таблицу • Атрибут с фиксированным числом значений – внешняя таблица либо поле типа enum
  • 41. Проектирование Блюдо Вид Дата Продукт Калорийност ь Вес (г) Поставщ ик Город Страна Вес (кг) Цена ($) Лобио Закуска 1/9/2012 Фасоль 307 200 "Хуанхэ" Пекин Китай 250 0.37 Лобио Закуска 1/9/2012 Лук 45 40 "Наталка " Киев Украина 100 0.52 Лобио Закуска 1/9/2012 Масло 742 30 "Лайма" Рига Латвия 70 1.55 Лобио Закуска 1/9/2012 Зелень 18 10 "Даугава" Рига Латвия 15 0.99 Борщ Суп 1/9/2012 Мясо 166 80 "Наталка " Киев Украина 100 2.18 Борщ Суп 1/9/2012 Лук 450 30 "Наталка " Киев Украина 100 0.52 Борщ Суп 1/9/2012 Томаты 24 40 "Полесье " Киев Украина 120 0.45 Борщ Суп 1/9/2012 Рис 334 50 "Хуанхэ" Пекин Китай 75 0.44 Борщ Суп 1/9/2012 Масло 742 15 "Полесье " Киев Украина 50 1.62 Борщ Суп 1/9/2012 Зелень 18 15 "Наталка " Киев Украина 10 0.88
  • 42. Внешние ключи Проектирование Внешний ключ – подмножество атрибутов некоторой схемы отношения R2, значения которых должны совпадать со значениями некоторого потенциального ключа некоторой схемы отношения R1. Изменение/удаление внешнего ключа • RESTRICT • CASCADE • SET NULL • NO ACTION
  • 44. Индексы • Первичный ключ PRIMARY • Уникальный индекс UNIQUE • Неуникальный индекс INDEX • Пространственный индекс SPATIAL • Полнотекстовый индекс FULLTEXT
  • 45. B-дерево Индексы • Сбалансированное дерево. • Эффективное заполнение блоков • Применяется для индексирования ключевых и неключевых атрибутов • Возможность поиска диапазона значений
  • 47. Хеш-таблица Индексы • Быстрый доступ к данным • Вероятность возникновения длинной цепочки блоков • Отсутствие возможности поиска диапазона значений
  • 49. Методы оптимизации • Создавать индексы для полей по которым происходит соединение таблиц (JOIN) • Создавать индексы для полей по которым фильтруются записи (WHERE) • Создавать индексы для полей по которым идет сортировка (ORDER) • Проверять план выполнения запроса (EXPLAIN) • Управление оптимизатором (принудительное использование индекса, порядок соединения таблиц) «Ну и запросы у вас…» – сказала база данных и повисла
  • 50. ACID 1.Atomicity – атомарность операций 2.Consistency – согласованность 3.Isolation – изоляция клиентов 4.Durability – гарантия сохранения после успешного завершения операции
  • 51. Транзакции START TRANSACTION; SELECT balance FROM checking WHERE customer_id = 10233276; UPDATE checking SET balance = balance - 200.00 WHERE customer_id = 10233276; UPDATE savings SET balance = balance + 200.00 WHERE customer_id = 10233276; COMMIT; Транзакция – группа операций, которые либо происходят все вместе, либо не происходят вообще
  • 53. Блокировки Уровень: • Строка (InnoDB) • Страница памяти (BDB) • Таблица (MyISAM, MEMORY, MERGE) Тип: • На чтение (READ LOCK) • На запись (WRITE LOCK)
  • 54. Хранимые процедуры Хранимая процедура – набор команд SQL, которые могут компилироваться и храниться на сервере. DELIMITER // DROP PROCEDURE IF EXISTS p1// CREATE PROCEDURE `p1` () LANGUAGE SQL DETERMINISTIC SQL SECURITY DEFINER COMMENT 'A procedure' BEGIN SELECT 'Hello World !'; END//
  • 55. Триггеры Триггер – программа, к которой обращается ядро СУБД до, и/или после обрабатывания записи в таблице CREATE TRIGGER add_count_comment AFTER INSERT ON comments FOR EACH ROW BEGIN UPDATE user SET user.countcomment= user.countcomment+1 WHERE user.id = NEW.user_id; UPDATE blog SET comment = comment+1 WHERE id = NEW.owner_id; END
  • 56. Репликация Репликация — это процесс, под которым понимается копирование данных из одного источника на множество других и наоборот.
  • 57. Домашнее задание Спроектировать базу данных для хранения журнала посещения занятий.
  • 58. Спасибо за внимание Бекбулатов Александр e-mail: a.bekbulatov@corp.mail.ru