428.24K
Category: databasedatabase

Теория баз данных

1.

Теория баз данных

2.

Типовые задачи
при работе с данными
• Добавление данных
• Изменение данных
• Удаление данных
• Поиск данных
• СRUD

3.

База данных (БД) – хранилище
данных, предназначенное для
автоматизированной обработки

4.

Обычно это один или несколько
файлов определённого формата

5.

Система управления базами
данных (СУБД) – программное
обеспечение, которое управляет
базой данных

6.

Модели баз данных
• Иерархические БД
• Сетевые БД
• Реляционные БД
• Объектно-ориентированные БД
• NoSQL БД

7.

Иерархическая модель БД —
это модель данных, где
используется представление БД
в виде древовидной структуры

8.

СУБД, использующие
иерархическую модель БД:
• Information Management System
компании IBM
• Caché InterSystems

9.

Сетевая модель БД —
это модель данных, в которой
все элементы могут быть
связаны произвольным образом

10.

СУБД, использующие сетевую
модель БД:
• IDS (Integrated Data Store)
компании General Electric
• Integrated Database Management
System компании Cullinet Software

11.

Реляционная база данных –
это БД, в которой все данные
организованы в виде таблиц

12.

СУБД, использующие
реляционную модель БД:
• Microsoft SQL Server
• Oracle Database
• MySQL
• Microsoft Access
• Postgre SQL

13.

Объектно-ориентированная
база данных - БД, в которой
данные моделируются в виде
объектов, их атрибутов,
методов и классов

14.

СУБД, использующие
объектно-ориентированную
модель БД:
• IBM Lotus Notes/Domino
• Jasmine
• ObjectStore

15.

NoSQL - подход, направленный
на реализацию хранилищ БД,
имеющих существенные отличия
от моделей, используемых в
реляционных БД

16.

Подход применяется к БД, в
которых делается попытка решить
проблемы масштабируемости
и доступности

17.

Типы хранилищ NoSQL БД:
• Хранилище «ключ-значение»
• Хранилище семейств колонок
• Документо-ориентированная БД
• БД на основе графов

18.

СУБД, использующие
хранилище «ключ-значение»:
• Berkeley DB
• MemcacheDB
• Amazon DynamoDB

19.

СУБД, использующие
хранилище семейств колонок:
• Apache Cassandra
• Apache HBase
• Apache Accumulo

20.

СУБД, использующие
документо-ориентированную
модель БД:
• MongoDB
• CouchDB
• Microsoft DocumentDB

21.

СУБД, использующие БД на
основе графов:
• Neo4j
• AllegroGraph
• Bigdata
• InfiniteGraph

22.

Архитектуры современных
реализаций реляционных БД
• Файл-серверные СУБД (Microsoft
Access, Borland Paradox, FoxPro, dBase)
• Клиент-серверные СУБД (Firebird,
Microsoft SQL Server, Oracle, MySQL)
• Встраиваемые СУБД (SQLite, Microsoft
SQL Server Compact)

23.

Реляционные СУБД является
наиболее распространенными

24.

В основе реляционной модели
лежит понятие отношения
(relation) или таблицы

25.

Объекты в БД хранятся в виде
таблиц, в которых строки
описывают сами объекты, а
столбцы – характеристики
(свойства) этих объектов

26.

Строки обычно называют
записями, а столбцы – полями

27.

Первичный ключ (primary key) –
это одно или несколько полей,
однозначно идентифицирующих
запись в таблице

28.

Т.е. в таблице не может
существовать двух записей с
одинаковым значением
первичного ключа

29.

Реляционная модель была
введена сотрудником
корпорации IBM Коддом

30.

Кодд описал двенадцать правил,
которым должна соответствовать
реляционная БД

31.

Свойства реляционной таблицы
• Каждый элемент таблицы – один
элемент данных
• Все элементы в столбце имеют
одинаковый тип
• Каждый столбец имеет уникальное имя
• Одинаковые строки в таблице
отсутствуют
• Порядок следования строк и столбцов
может быть произвольным

32.

SQL (Structured Query Language)
– язык структурированных
запросов, применяемый для
создания, модификации и
управления данными в
реляционной БД

33.

Идея, заложенная в язык SQL,
отражает суть современного
подхода к работе с БД

34.

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

35.

Язык SQL является не
алгоритмическим языком, а
декларативным языком

36.

Он состоит из команд-запросов,
обрабатываемых реляционной
СУБД и предоставляет все
необходимые средства для
управления БД

37.

Функционально язык SQL делят
на четыре части:
• DDL (Data Definition Language) – язык
определения данных
• DML (Data Manipulation Language) –
язык манипулирования данными
• DCL (Data Control Language) – язык
управления данными
• TCL (Transaction Control Language) –
язык управления транзакциями

38.

Функции агрегирования - это
функции, позволяющие обобщить
значения одного поля: они дают
для этого поля единственное
совокупное значение для всех
записей выборки из таблицы

39.

Аномалии взаимодействия с
однотабличной базой данных

40.

Аномалии взаимодействия с
однотабличной базой данных
• Избыточность данных - повторяются
значения в полях Position и Course,
что влечет значительные расходы
дискового пространства
• Аномалия вставки – невозможно
добавить новый курс, пока нет
преподавателя для этого курса

41.

Аномалии взаимодействия с
однотабличной базой данных
• Аномалия обновления – при
изменении названия курса необходимо
модифицировать всю таблицу
• Аномалия удаления – при увольнении
преподавателя теряется информация о
курсе, который он читал

42.

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

43.

Многотабличная база данных

44.

После декомпозиции необходимо
определить связи между
таблицами, введя в подчиненные
таблицы дополнительные поля –
внешние ключи
Foreign key

45.

Внешним ключом называется поле
подчиненной таблицы, в котором
хранятся значения первичного
ключа главной таблицы

46.

Определение связей между
таблицами

47.

Типы связей между таблицами
• Один к одному – каждой записи одной
таблицы соответствует 1 или 0 записей
другой таблицы (страна – столица)
• Один ко многим – каждой записи
одной таблицы соответствует 0, 1 или
более записей другой таблицы
(континент – страны)

48.

Типы связей между таблицами
• Многие ко многим – каждой записи
из первой таблицы соответствует 0,
1 или более записей во второй
таблице и наоборот. Это реализуется
через вспомогательную таблицу
(языки – континенты, предметы преподаватели)

49.

Помимо организации данных в
таблицы и определения связей
между таблицами необходимо
обеспечить целостность данных

50.

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

51.

При изменении содержимого
базы данных с помощью
операторов INSERT, DELETE и
UPDATE может произойти
нарушение целостности
содержащихся в ней данных

52.

Современные СУБД содержат
достаточно развитые средства,
позволяющие следить за
целостностью данных

53.

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

54.

СУБД следит, чтобы данные,
которые вводятся в поле
внешнего ключа подчиненной
таблицы совпадали с данными,
хранящимися в первичном ключе
главной (родительской) таблицы

55.

В современных СУБД для
обеспечения целостности данных
при обновлении и удалении
существуют четыре решения

56.

Правило удаления определяет
те действия, которые СУБД
выполняет, когда пользователь
пытается удалить запись из
таблицы-предка

57.

NO ACTION - запрещает удаление
записи из таблицы-предка, если
запись имеет потомков

58.

CASCADE - определяет, что
при удалении записи-предка
все записи-потомки также
автоматически удаляются из
таблицы-потомка

59.

SET NULL - определяет, что
при удалении записи-предка
внешним ключам во всех ее
записях-потомках
автоматически присваивается
значение NULL

60.

SET DEFAULT - определяет, что
при удалении записи-предка
внешним ключам во всех ее
записях-потомках присваивается
значение, по умолчанию
установленное для данного поля

61.

Правило обновления
определяет те действия,
которые СУБД выполняет,
когда пользователь пытается
обновить значение первичного
ключа в таблице-предке

62.

NO ACTION - запрещает
обновление первичного ключа
в записи таблицы-предка, если
у записи есть потомки

63.

CASCADE - определяет, что при
изменении значения первичного
ключа в записи-предке
соответствующее значение
внешнего ключа в таблице-потомке
также автоматически изменяется
во всех записях-потомках

64.

SET NULL - определяет, что при
обновлении значения первичного
ключа в записи-предке внешним
ключам во всех ее записяхпотомках автоматически
присваивается значение NULL

65.

SET DEFAULT - определяет, что при
обновлении значения первичного
ключа в записи-предке внешним
ключам во всех ее записяхпотомках по умолчанию
присваивается значение,
установленное для данного поля

66.

Нормализация базы данных

67.

В процессе проектирования БД
сложно сразу учесть все нюансы и
сразу реализовать ее
оптимальным образом

68.

Оптимальность БД – отсутствие
избыточности данных, а также
целостность хранимых данных

69.

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

70.

Примеры нарушений
целостности данных:
• существование дочерних
записей, не имеющих связи с
родительскими записями
• существование одинаковых
первичных ключей

71.

Для упрощения процедуры
устранения неоптимальности БД
существует нормализация

72.

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

73.

Важно то, что нормализация
применяется к конкретной
таблице

74.

Нормализовать базу данных значит нормализовать каждую
из ее таблиц

75.

Нормальные формы - это
требования, к которым
последовательно приводится
таблица

76.

Существует 6 форм нормализации

77.

Однако на практике обычно
применяются три:
• первая нормальная форма (1НФ)
• вторая нормальная форма (2НФ)
• третья нормальная форма (3НФ)

78.

1НФ требует, чтобы каждое
поле таблицы было
неделимым

79.

Требование неделимости означает,
что значение поля не должно
делиться на более мелкие
значения с точки зрения требований
предметной области

80.

Нарушение требования
неделимости

81.

1НФ требует отсутствие
повторяющихся групп полей

82.

Наличие повторяющихся
групп полей

83.

При необходимости
добавления ещё одного
языка придется изменять
структуру таблицы

84.

Таблица должна
увеличиваться в высоту,
а не в ширину!

85.

Приведение таблицы к 1НФ

86.

2НФ требует, чтобы все поля
таблицы зависели от
первичного ключа

87.

Т.е. чтобы первичный ключ
однозначно определял бы
запись и не был избыточен

88.

Те поля, которые зависят
только от части первичного
ключа или не зависят от него
вообще, должны быть выделены
в отдельные таблицы

89.

Обычно это означает, что такие
поля описывают свойства
каких-либо других объектов

90.

Нарушение требования 2НФ

91.

Приведение таблицы к 2НФ

92.

3НФ требует, чтобы в таблице
не было не ключевого поля,
значение которого зависело бы
от значения другого не
ключевого поля

93.

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

94.

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

95.

Нарушение требования 3НФ

96.

Значение total_ex_vat может
быть вычислено из значения
total_inc_vat и наоборот

97.

Нормализация: за и против

98.

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

99.

Нормализация обеспечивает
более быструю сортировку
данных и ускоряет
выполнение запросов

100.

И, следовательно, повышает
производительность

101.

С другой стороны,
проектировщик не должен
выполнять нормализацию БД
любой ценой, формально следуя
всем её требованиям

102.

Чрезмерная нормализация ведет
к созданию большого количества
«узких» таблиц

103.

В случае, если речь идет о
большой БД, это может
существенно затруднить
разработку

104.

Кроме того, это может оказать
влияние на скорость работы БД
и извлечение данных

105.

В первую очередь это относится
к третьей нормальной форме

106.

К первым двум нормальным
формам базу данных
настоятельно рекомендуется
приводить
English     Русский Rules