Similar presentations:
Теория баз данных
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.
К первым двум нормальнымформам базу данных
настоятельно рекомендуется
приводить