Upload
technopark
View
203
Download
1
Embed Size (px)
Citation preview
СУБД
Лекция 1
Павел Щербинин
Интересные факты
• база данных > 2 петабайт
• отсутствие готовых решений
• практически ни одно приложение не обходится без БД
• в большинстве вакансий разработчика упоминается SQL ,
по данным
Получение студентами знаний в областях:
Задача курса
• проектирование реляционных баз данных
• язык запросов SQL
• оптимизация запросов и схем данных
• High-Load и Big Data
• администрирование и настройка серверов БД
• noSQL и его использование в WEB
Проектирование и диаграммы
• ER, FA, KB – диаграммы
• Нормализация
• DDL
SQL
• CRUD
• Транзакции
• Хранимые процедуры
• Тригеры
Оптимизация
• EXPLAIN, slow_log
• Индексы
• Денормализация
“Ну и запросы у вас”, - сказала база данных и повисла
Администрирование
• Конфигурирование
• Репликация
• Резервное копирование
• Пользователи и права
• SQL-injections
На моей работе самая страшная фраза это: “ребята, за какую дату у нас есть бэкап базы данных?” © bash.im
noSQL
• Концепция Map-Reduce
• Краткий обзор существующих решений
• Tarantool
“… многие отдали предпочтение реляционным системам баз данных, поскольку используемый в них стандартизованный язык SQL открывал возможности безболезненногоперехода от одной СУБД к другой. Хотя воспользовались ими на практике только единицы, мысль о возможной смене поставщика СУБД, не связанной со сколько-нибудь ощутимыми затратами, согревала всех.” © Мартин Фаулер
Контроль знаний
• групповая разработка проекта
• нагрузочное тестирование
• экзамен
Экзамен - это уникальная возможность для студента два раза в год узнать что-то полезное хотя бы на несколько дней. © Французский бизнесмен и творческая личность Джордж Элгози
Литература
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/
Определение БД
База данных (БД) – это взаимосвязанная информация (данные) об объектах, которая организованна специальным образом и хранится на каком-либо носителе.
Реляционная модель данных
Реляционные часть
• один-к-одному (1:1)
• один-ко-многим (1:M)
• многие-к-одному (M:1)
• многие-ко-многим (M:N) Мужчина ЖенщинаБракM N
Мужчина ЖенщинаБракM 1
Мужчина ЖенщинаБрак1 M
Мужчина ЖенщинаБрак1 1
Реляционной алгебры
• Выборка
• Проекция
• Объединение
• Пересечение
• Разность
• Произведение
• Деление
• Соединение
Выборка
Имя Возраст Вес
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
Персоны
πВозраст,Вес(Персоны)
Возраст Вес
29 70
54 54
34 80
Объединение
Имя Возраст Вес
Harry 34 80
Donald 29 70
Helena 54 54
Peter 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
Пересечение
Имя Возраст Вес
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
Peter 34 80
ПерсоныИмя Возраст Вес
Daffy 24 19
Donald 29 70
Scrooge 81 27
Персонажы
Имя Возраст Вес
Harry 34 80
Helena 54 54
Peter 34 80
Произведение
Код_мульта Название_мульта
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
Деление
Мультфильмы КаналыКод_мульта Название_мульта Название_канала
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
Соединение
Мультфильмы КаналыКод_мульта Название_мульта Название_канала
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
Проектирования БД
Проектирование баз данных — процесс создания схемы базы данных и определения необходимых ограничений целостности.
Основные задачи
• Обеспечение хранения в БД всей необходимой информации.
• Обеспечение возможности получения данных по всем
необходимым запросам.
• Сокращение избыточности и дублирования данных.
• Обеспечение целостности данных (правильности их
содержания): исключение противоречий в содержании данных,
исключение их потери и т.д.
Критерии оценки модели
данных
Критерий Описание
Структурная достоверностьСоответствие способу определения и организации информации
Простота
Удобство изучения модели как профессионалами в области разработки информационных систем, так и обычными пользователями
ВыразительностьСпособность представлять различия между данными, связи между данными и ограничения
Отсутствие избыточностиИсключение излишней информации, т.е. любая часть данных должна быть представлена только один раз
Критерии оценки модели
данных
Критерий Описание
Способность к совместному использованию
Отсутствие принадлежности к какому-то особому приложению или технологии и, следовательно, возможность использования модели во многих приложениях и технологиях
Расширяемость
Способность развиваться и включать новые требования с минимальным воздействием на работу уже существующих приложений
ЦелостностьСогласованность со способом использования и управления информацией внутри предприятия
Схематическое представлениеВозможность представления модели с помощью наглядных схематических обозначений
Особенности концептуального
проектирования
"Сложная система, спроектированная наспех,никогда не работает, и исправить её,
чтобы заставить работать, невозможно".
Законы Мерфи. 16-й закон системантики
• максимум командной работы
• привлечение наиболее
опытных специалистов
• заглядываем в будущее
Этапы проектирования
• Внешнее представление (внешняя схема) данных -
совокупностью требований со стороны конкретной функции,
выполняемой пользователем.
• Концептуальная схема - полная совокупностью всех
требований к данным, полученной из пользовательских
представлений о реальном мире.
• Внутренняя схема - сама база данных.
Инфологическое
проектирование
• сущности
• атрибуты
• связи
Концептуальное (инфологическое) проектирование —построение семантической модели предметной области, то есть информационной модели наиболее высокого уровня абстракции
Логическое
проектирование
• записи
• элементы данных
• связи между записями
Логическое (даталогическое) проектирование —создание схемы базы данных на основе конкретной модели данных, например, реляционной модели данных
Физическое
проектирование
• группирование данных
• индексы
• методы доступа
Физическое проектирование — создание схемы базы данных для конкретной СУБД
Почему проект БД может быть
плохим?Блюдо Вид Дата Продукт Калорийнос
тьВес (г) Поставщик Город Страна Цена ($)
Лобио Закуска 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. Аномалии удаления
Типы данных MySQL
1. Числовые
2. Строковые
3. Календарные
4. NULL
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
Целые числа
Тип столбца, поля Обьем занимаемой памяти
Диапазон допустимых значений
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
Числа с плавающей точкой
Тип столбца, поля Обьемзанимаемой памяти
Диапазон допустимых значений
DECIMAL [ (M [, D ] ) ],DEC [ (M [, D ] ) ],NUMERUC [ (M [, D ] ) ]
M + 2 байта Повышенная точность; зависимость от параметров
FLOAT [ (M, D) ] 4 байта -3.402823466E+38до -1.175494351E-380
1.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
Бинарные
Тип столбца, поля Обьем занимаемой памяти
Диапазон допустимых значений
BIT [ (M) ] (M + 7) / 8 байт От 1 до 64 бита, в зависимости от M
BOOLEAN [ (M) ] 1 байт 0 или 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 элемента
Дата и время
Тип столбца, поля Обьем занимаемой памяти
Диапазон допустимых значений
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)
Спасибо за вниманиеПавел Щербинин
@gent: [email protected]