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

Preview:

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 80Donald 29 70Helena 54 54Peter 34 80

Персоны

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

Harry 34 80

Helena 54 54

Peter 34 80

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

Проекция

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

Персоны

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

29 70

54 54

34 80

Объединение

Имя Возраст Вес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

Пересечение

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

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

Daffy 24 19

Donald 29 70

Scrooge 81 27

Персонажы

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

Donald 29 70

Разность

Имя Возраст Вес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

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

Код_мульта Название_мульта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

Деление

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

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-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

Бинарные

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

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

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: p.scherbinin@corp.mail.ru