58
Реляционные базы данных Александр Бекбулатов

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

Embed Size (px)

DESCRIPTION

 

Citation preview

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

Реляционные базы данных

Александр Бекбулатов

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

Где хранить данные

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

Где хранить данные

1.На стороне пользователя

2.В памяти

3.На диске

4.На диске и в памяти

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

База данных

База данных — взаимосвязанная информация (данные) об объектах, которая организованна специальным образом и хранится на каком-либо носителе.

СУБД и базы данных

Система управления базами данных

СУБД — совокупность программных и лингвистических средств общего или специального назначения, обеспечивающих управление созданием и использованием баз данных.

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

Функции СУБД

СУБД и базы данных

• управление данными во внешней памяти

• управление данными в оперативной памяти

• журнализация изменений, резервное

копирование и восстановление базы данных

после сбоев

• поддержка языков БД (язык определения

данных, язык манипулирования данными).

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

Решаемые проблемы

СУБД и базы данных

• структура хранения

• примитивные операции (проекции, селекции,

соединения и т.п.)

• эффективный поиск данных

• управление памятью

• совместный доступ к данным

• изоляция и блокировки

• атомарные операции

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

Классификация СУБД по модели данных

СУБД и базы данных

• Иерархические

• Сетевые

• Реляционные

• Объектно-ориентированные

• Объектно-реляционные

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

Реляционные СУБД

Реляционная СУБД — СУБД, управляющая реляционными

базами данных.

Реляционная база данных — база данных, основанная на

реляционной модели данных.

Основные понятия реляционной модели данных:

• Отношение, relation, таблица

• Кортеж, tuple, строка

• Атрибут, столбец

• Реляционная алгебра – запрос

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

Реляционная модель

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

Кортежи не упорядочены. Данные в столбце однотипны.

Реляционная модель данных

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

Операции реляционной алгебры

Реляционная модель данных

• Выборка (where …)

• Проекция (select …)

• Объединение (union)

• Пересечение (intersect)

• Разность (except)

• Произведение (from t1, t2)

• Деление (обратное пересечение)

• Соединение (пересечение с условием, join)

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

Выборка

Реляционная модель данных

Имя Возраст Вес

Harry 34 80

Donald 29 70

Helena 54 54

Peter 34 80

Персоны

Имя Возраст Вес

Harry 34 80

Helena 54 54

Peter 34 80

σВозраст ≥ 34(Персоны)

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

Проекция

Реляционная модель данных

Имя Возраст Вес

Harry 34 80

Donald 29 70

Helena 54 54

Peter 34 80

Персоны

πВозраст,Вес(Персоны)Возраст Вес

34 80

29 70

54 54

34 80

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

Объединение

Реляционная модель данных

Имя Возраст Вес

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

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

Пересечение

Реляционная модель данных

Имя Возраст Вес

Harry 34 80

Donald 29 70

Helena 54 54

Peter 34 80

ПерсоныИмя Возраст Вес

Daffy 24 19

Donald 29 70

Scrooge 81 27

Персонажи

Имя Возраст Вес

Donald 29 70

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

Разность

Реляционная модель данных

Имя Возраст Вес

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

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

Произведение

Реляционная модель данных

Код_мульта Название_мульта

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

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

Деление

Реляционная модель данных

Мультфильмы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

Каналы

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

Соединение

Реляционная модель данных

Мультфильмы

КаналыКод мульта

Название_мульта Код канала

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

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

SQL

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

• DDL (Data Definition Language) -

oпределение структуры отношений

• DML (Data Manipulation Language) -

изменение хранимых данных

• DQL (Data Query Language) - запросы

SQL

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

Выборка

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

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

Агрегация

SELECT name, count(id) cnt

FROM users

GROUP BY name

ORDER BY cnt

HAVING cnt > 1

Data Query Language

Агрегатные функции: COUNT, SUM, AVG, GROUP_CONCAT

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

Соединения

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

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

• 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

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

Data Query Language

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

Вложенные запросы

SELECT title FROM article t1 JOIN (

SELECT rubric_id, MAX(id) max_idFROM articleGROUP BY rubric_id LIMIT 5

) t2 ON t1.id = t2.max_id;

Data Query Language

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

Объединение

SELECT * FROM t1LEFT JOIN t2 ON t1.id = t2.idUNIONSELECT * FROM t1RIGHT JOIN t2 ON t1.id = t2.id

Data Query Language

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

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

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

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

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

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

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

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

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

Проектирование

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

ПроектированиеБлюдо Вид Дата Продукт Калорийность Вес

(г)Поставщик

Город Страна Вес (кг) Цена ($)

Лобио Закуска 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

Избыточность

Противоречивость (добавление / удаление / обновление)

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

Задачи проектирования

Проектирование

• Обеспечение хранения в БД всей необходимой

информации.

• Обеспечение возможности получения данных по всем

необходимым запросам.

• Сокращение избыточности и дублирования данных.

• Обеспечение целостности данных (правильности их

содержания): исключение противоречий в содержании

данных, исключение их потери и т.д.

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

Нормализация

Минимальный набор аттрибутов, обеспечивающий

уникальность кортежа. Если у двух кортежей совпадают

все ключевые аттрибуты → кортежи совпадают. Никакое

подмножество ключа не является ключом.

Ключ

Первичный ключЕсли существует несколько ключей, один из них

называют первичным.

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

1ая нормальная форма

Переменная отношения находится в первой нормальной форме тогда и только тогда, когда в любом допустимом значении отношения каждый его кортеж содержит только одно значение для каждого из атрибутов.

Сотрудник Номер телефона

Иванов И. И. 283-56-82390-57-34

Петров П. П. 708-62-34

Сотрудник Номер телефона

Иванов И. И. 283-56-82

Иванов И. И. 390-57-34

Петров П. П. 708-62-34

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

2ая нормальная форма

Схема отношений находится во второй нормальной форме тогда и только тогда, когда она находится в первой нормальной форме и каждый неключевой атрибут X неприводимо зависит от ее потенциального ключа. (т.е. невозможно выделить подключ, от которого зависит)

Сотрудник Должность Компьютер

Гришин Кладовщик Нет

Васильев Программист Есть

Иванов Кладовщик Нет

Сотрудник Должность

Гришин Кладовщик

Васильев Программист

Иванов Кладовщик

Должность Компьютер

Кладовщик Нет

Программист Есть

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

3 и 4 нормальные формы

Схема отношений R находится в третьей нормальной форме тогда и только тогда, когда она находится во второй нормальной форме и ни один неключевой атрибут R не находится в транзитивной функциональной зависимости от потенциального ключа R.

3я нормальная форма

4я нормальная форма (Бойса-Кодда)Переменная отношения находится в четвёртой нормальной форме, если она находится в нормальной форме Бойса — Кодда и не содержит нетривиальных многозначных зависимостей

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

Формализация на практике

Проектирование

• Логическое разделение сущностей

• Выделение синтетических первичных ключей

• Связи 1:N, N:1 реализуются через внешний ключ

• Связи N:M реализуются через промежуточную

таблицу

• Атрибут с фиксированным числом значений –

внешняя таблица либо поле типа enum

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

Проектирование

Блюдо Вид Дата Продукт Калорийность

Вес (г)

Поставщик

Город Страна Вес (кг) Цена ($)

Лобио Закуска 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

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

Внешние ключи

Проектирование

Внешний ключ – подмножество атрибутов некоторой схемы

отношения R2, значения которых должны совпадать со

значениями некоторого потенциального ключа некоторой

схемы отношения R1.

Изменение/удаление внешнего ключа

• RESTRICT

• CASCADE

• SET NULL

• NO ACTION

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

Внутренняя структура

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

Индексы

•Первичный ключ PRIMARY

•Уникальный индекс UNIQUE

•Неуникальный индекс INDEX

•Пространственный индекс SPATIAL

•Полнотекстовый индекс FULLTEXT

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

B-дерево

Индексы

• Сбалансированное дерево.

• Эффективное заполнение блоков

• Применяется для индексирования ключевых и

неключевых атрибутов

• Возможность поиска диапазона значений

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

B-дерево

Индексы

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

Хеш-таблица

Индексы

• Быстрый доступ к данным

• Вероятность возникновения длинной цепочки

блоков

• Отсутствие возможности поиска диапазона

значений

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

Хеш-таблица

Индексы

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

Методы оптимизации

• Создавать индексы для полей по которым происходит

соединение таблиц (JOIN)

• Создавать индексы для полей по которым фильтруются

записи (WHERE)

• Создавать индексы для полей по которым идет

сортировка (ORDER)

• Проверять план выполнения запроса (EXPLAIN)

• Управление оптимизатором (принудительное

использование индекса, порядок соединения таблиц)

«Ну и запросы у вас…» – сказала база данных и повисла

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

ACID

1.Atomicity – атомарность операций

2.Consistency – согласованность

3.Isolation – изоляция клиентов

4.Durability – гарантия сохранения после

успешного завершения операции

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

Транзакции

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;

Транзакция – группа операций, которые либо происходят все вместе, либо не происходят вообще

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

Уровни изоляции

Транзакции

Уровень изоляции

Возможность чернового чтения

Возможность невоспроизводимого чтения

Возможность фантомного чтения

Блокировка чтения

READ UNCOMMITTED

Да Да Да Нет

READ COMMITTED

Нет Да Да Нет

REPEATABLE READ

Нет Нет Да Нет

SERIALIZABLE Нет Нет Нет Да

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

Блокировки

Уровень:

• Строка (InnoDB)

• Страница памяти (BDB)

• Таблица (MyISAM, MEMORY, MERGE)

Тип:

• На чтение (READ LOCK)

• На запись (WRITE LOCK)

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

Хранимые процедуры

Хранимая процедура – набор команд SQL, которые могут компилироваться и храниться на сервере.

DELIMITER //DROP PROCEDURE IF EXISTS p1//CREATE PROCEDURE `p1` ()

LANGUAGE SQL DETERMINISTIC SQL SECURITY DEFINER COMMENT 'A procedure'

BEGINSELECT 'Hello World !';

END//

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

Триггеры

Триггер – программа, к которой обращается ядро СУБД до, и/или после обрабатывания записи в таблице

CREATE TRIGGER add_count_comment AFTER INSERT ON commentsFOR 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

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

Репликация

Репликация — это процесс, под которым понимается копирование данных из одного источника на множество других и наоборот.

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

Домашнее задание

Спроектировать базу данных для хранения журнала посещения занятий.

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

Спасибо за вниманиеБекбулатов Александр

e-mail: [email protected]