40
СУБД Лекция 1 Павел Щербинин

СУБД осень 2012 лекция 1

Embed Size (px)

Citation preview

Page 1: СУБД осень 2012  лекция 1

СУБДЛекция 1

Павел Щербинин

Page 2: СУБД осень 2012  лекция 1

Интересные факты

• база данных > 2 петабайт

• отсутствие готовых решений

• практически ни одно приложение не обходится без БД

• в большинстве вакансий разработчика упоминается SQL ,

по данным

Page 3: СУБД осень 2012  лекция 1

Получение студентами знаний в областях:

Задача курса

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

• язык запросов SQL

• оптимизация запросов и схем данных

• High-Load и Big Data

• администрирование и настройка серверов БД

• noSQL и его использование в WEB

Page 4: СУБД осень 2012  лекция 1

Проектирование и диаграммы

• ER, FA, KB – диаграммы

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

• DDL

Page 5: СУБД осень 2012  лекция 1

SQL

• CRUD

• Транзакции

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

• Тригеры

Page 6: СУБД осень 2012  лекция 1

Оптимизация

• EXPLAIN, slow_log

• Индексы

• Денормализация

“Ну и запросы у вас”, - сказала база данных и повисла

Page 7: СУБД осень 2012  лекция 1

Администрирование

• Конфигурирование

• Репликация

• Резервное копирование

• Пользователи и права

• SQL-injections

На моей работе самая страшная фраза это: “ребята, за какую дату у нас есть бэкап базы данных?” © bash.im

Page 8: СУБД осень 2012  лекция 1

noSQL

• Концепция Map-Reduce

• Краткий обзор существующих решений

• Tarantool

“… многие отдали предпочтение реляционным системам баз данных, поскольку используемый в них стандартизованный язык SQL открывал возможности безболезненногоперехода от одной СУБД к другой. Хотя воспользовались ими на практике только единицы, мысль о возможной смене поставщика СУБД, не связанной со сколько-нибудь ощутимыми затратами, согревала всех.” © Мартин Фаулер

Page 9: СУБД осень 2012  лекция 1

Контроль знаний

• групповая разработка проекта

• нагрузочное тестирование

• экзамен

Экзамен - это уникальная возможность для студента два раза в год узнать что-то полезное хотя бы на несколько дней. © Французский бизнесмен и творческая личность Джордж Элгози

Page 10: СУБД осень 2012  лекция 1

Литература

1. Дейт К. Дж. Введение в системы баз данных

2. Бьюли А. Изучаем SQL

3. Молинаро Э. SQL – сборник рецептов

4. Заводны Дж, Шварц Б., Зайцев П., Ткаченко В., Ленц А.

MySQL. Оптимизация производительности

5. http://www.intuit.ru/catalog/database/

6. http://citforum.ru/database/

7. http://www.sql.ru/

8. http://www.mysql.com/

Page 11: СУБД осень 2012  лекция 1

Определение БД

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

Page 12: СУБД осень 2012  лекция 1

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

Page 13: СУБД осень 2012  лекция 1

Реляционные часть

• один-к-одному (1:1)

• один-ко-многим (1:M)

• многие-к-одному (M:1)

• многие-ко-многим (M:N) Мужчина ЖенщинаБракM N

Мужчина ЖенщинаБракM 1

Мужчина ЖенщинаБрак1 M

Мужчина ЖенщинаБрак1 1

Page 14: СУБД осень 2012  лекция 1

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

• Выборка

• Проекция

• Объединение

• Пересечение

• Разность

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

• Деление

• Соединение

Page 15: СУБД осень 2012  лекция 1

Выборка

Имя Возраст ВесHarry 34 80Donald 29 70Helena 54 54Peter 34 80

Персоны

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

Harry 34 80

Helena 54 54

Peter 34 80

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

Page 16: СУБД осень 2012  лекция 1

Проекция

Имя Возраст ВесHarry 34 80Donald 29 70Helena 54 54Peter 34 80

Персоны

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

29 70

54 54

34 80

Page 17: СУБД осень 2012  лекция 1

Объединение

Имя Возраст ВесHarry 34 80Donald 29 70Helena 54 54Peter 34 80

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

Daffy 24 19

Donald 29 70

Scrooge 81 27

Персонажы

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

Harry 34 80

Donald 29 70

Helena 54 54

Peter 34 80

Daffy 24 19

Scrooge 81 27

Page 18: СУБД осень 2012  лекция 1

Пересечение

Имя Возраст ВесHarry 34 80Donald 29 70Helena 54 54Peter 34 80

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

Daffy 24 19

Donald 29 70

Scrooge 81 27

Персонажы

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

Donald 29 70

Page 19: СУБД осень 2012  лекция 1

Разность

Имя Возраст ВесHarry 34 80Donald 29 70Helena 54 54Peter 34 80

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

Daffy 24 19

Donald 29 70

Scrooge 81 27

Персонажы

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

Harry 34 80

Helena 54 54

Peter 34 80

Page 20: СУБД осень 2012  лекция 1

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

Код_мульта Название_мульта0 The Simpsons1 Family Guy2 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 21: СУБД осень 2012  лекция 1

Деление

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

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

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

0 The Simpsons

1 Family Guy

Page 22: СУБД осень 2012  лекция 1

Соединение

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

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 23: СУБД осень 2012  лекция 1

Проектирования БД

Проектирование баз данных — процесс создания схемы базы данных и определения необходимых ограничений целостности.

Page 24: СУБД осень 2012  лекция 1

Основные задачи

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

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

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

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

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

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

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

Page 25: СУБД осень 2012  лекция 1

Критерии оценки модели данных

Критерий Описание

Структурная достоверность Соответствие способу определения и организации информации

ПростотаУдобство изучения модели как профессионалами в области разработки информационных систем, так и обычными пользователями

ВыразительностьСпособность представлять различия между данными, связи между данными и ограничения

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

Page 26: СУБД осень 2012  лекция 1

Критерии оценки модели данных

Критерий Описание

Способность к совместному использованию

Отсутствие принадлежности к какому-то особому приложению или технологии и, следовательно, возможность использования модели во многих приложениях и технологиях

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

ЦелостностьСогласованность со способом использования и управления информацией внутри предприятия

Схематическое представлениеВозможность представления модели с помощью наглядных схематических обозначений

Page 27: СУБД осень 2012  лекция 1

Особенности концептуального проектирования

"Сложная система, спроектированная наспех, никогда не работает, и исправить её, чтобы заставить работать, невозможно".

Законы Мерфи. 16-й закон системантики

• максимум командной работы

• привлечение наиболее

опытных специалистов

• заглядываем в будущее

Page 28: СУБД осень 2012  лекция 1

Этапы проектирования

• Внешнее представление (внешняя схема) данных -

совокупностью требований со стороны конкретной функции,

выполняемой пользователем.

• Концептуальная схема - полная совокупностью всех

требований к данным, полученной из пользовательских

представлений о реальном мире.

• Внутренняя схема - сама база данных.

Page 29: СУБД осень 2012  лекция 1

Инфологическое проектирование

• сущности

• атрибуты

• связи

Концептуальное (инфологическое) проектирование — построение семантической модели предметной области, то есть информационной модели наиболее высокого уровня абстракции

Page 30: СУБД осень 2012  лекция 1

Логическоепроектирование

• записи

• элементы данных

• связи между записями

Логическое (даталогическое) проектирование — создание схемы базы данных на основе конкретной модели данных, например, реляционной модели данных

Page 31: СУБД осень 2012  лекция 1

Физическоепроектирование

• группирование данных

• индексы

• методы доступа

Физическое проектирование — создание схемы базы данных для конкретной СУБД

Page 32: СУБД осень 2012  лекция 1

Почему проект БД может быть плохим?

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

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

Лобио Закуска 1/9/2012 Фасоль 307 200 "Хуанхэ" Пекин Китай 0.37

Лук 45 40 "Наталка" Киев Украина 0.52

Масло 742 30 "Лайма" Рига Латвия 1.55

Зелень 18 10 "Даугава" Рига Латвия 0.99

Борщ Суп 1/9/2012 Мясо 166 80 "Наталка" Киев Украина 2.18

Лук 45 30 "Наталка" Киев Украина 0.52

Томаты 24 40 "Полесье" Киев Украина 0.45

Рис 334 50 "Хуанхэ" Пекин Китай 0.44

Масло 742 15 "Полесье" Киев Украина 1.62

Зелень 18 15 "Наталка" Киев Украина 0.88

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

2. Потенциальная противоречивость

(аномалии обновления)

3. Аномалии включения

4. Аномалии удаления

Page 33: СУБД осень 2012  лекция 1

Типы данных MySQL

1. Числовые

2. Строковые

3. Календарные

4. NULL

Page 34: СУБД осень 2012  лекция 1

NULL

mysql> SELECT 1 = NULL, 1 <> NULL, 1 < NULL, 1 > NULL;

1 = NULL 1 <> NULL 1 < NULL 1 > NULL

NULL NULL NULL NULL

mysql> SELECT 1 IS NULL, 1 IS NOT NULL, NULL IS NULL, NULL IS NOT NULL;

1 IS NULL 1 IS NOT NULL NULL IS NULL NULL IS NOT NULL

0 1 1 0

Page 35: СУБД осень 2012  лекция 1

Целые числа

Тип столбца, поля Обьем занимаемой памяти

Диапазон допустимых значений

TINYINT [ (M) ] 1 байт От -128 до 127От 0 до 255

SMALLINT [ (M) ] 2 байта От -32768 до 32767От 0 до 65535

MEDIUM INT [ (M) ] 3 байта От -8388608 до 8388608От 0 до 16777215

INT [ (M) ] 4 байта От -2147683648 до 2147683648От 0 до 4294967295

BIGINT [ (M) ] 8 байт От -263 до 263 -1От 0 до 264

Page 36: СУБД осень 2012  лекция 1

Числа с плавающей точкой

Тип столбца, поля Обьем занимаемой памяти

Диапазон допустимых значений

DECIMAL [ (M [, D ] ) ],DEC [ (M [, D ] ) ],NUMERUC [ (M [, D ] ) ]

M + 2 байта Повышенная точность; зависимость от параметров

FLOAT [ (M, D) ] 4 байта -3.402823466E+38 до -1.175494351E-38 01.175494351E-38 до 3.402823466E+38.

DOUBLE [ (M, D) ],REAL [ (M, D) ],DOUBLE PRECISION [ (M, D) ]

8 байт -1.7976931348623157E+308до -2.2250738585072014E-30802.2250738585072014E-308до 1.7976931348623157E+308

Page 37: СУБД осень 2012  лекция 1

Бинарные

Тип столбца, поля Обьем занимаемой памяти

Диапазон допустимых значений

BIT [ (M) ] (M + 7) / 8 байт От 1 до 64 бита, в зависимости от M

BOOLEAN [ (M) ] 1 байт 0 или 1

Page 38: СУБД осень 2012  лекция 1

Строки

Тип столбца, поля Обьем занимаемой памяти

Диапазон допустимых значений

CHAR (M) M M символов

VARCHAR (M) L + 1 M символов

TINYBLOB, TINYTEXT L + 1 28 - 1 символов

BLOB, TEXT L + 2 216 - 1 символов

MEDIUMBLOB, MEDIUMTEXT

L + 3 224 - 1 символов

LONGBLOB, LONGTEXT L + 4 2(32) — 1 символов

ENUM ('value1', 'value2',...)

1 или 2 65 536 элементов

SET ('value1', 'value2',...) 1,2,3,4 или 8 64 элемента

Page 39: СУБД осень 2012  лекция 1

Дата и время

Тип столбца, поля Обьем занимаемой памяти

Диапазон допустимых значений

DATE 3 байта От "1000-01-01" до "9999-12-31"

TIME 3 байта От "-828:59:59" до "828:59:59"

DATATIME 8 байт От "1000-01-01 00:00:00"до "9999-12-31 59:59:59"

TIMESTAMP 4 байта От "1970-01-01 00:00:00"до "2038-12-31 59:59:59"

YEAR 1 байт От 1901 до 2155 для YEAR (4)От 1970 до 2069 для YEAR (2)

Page 40: СУБД осень 2012  лекция 1

Спасибо за вниманиеПавел Щербинин

@gent: [email protected]