Основные методики моделирования

Содержание

Слайд 2

Реализация основных типов связей

Реализация основных типов связей

Слайд 3

От отношения к логической модели

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

От отношения к логической модели Для логической модели необходимо описать способы реализации
типов связей:
Один к одному
Один ко многим
Многие ко многим
Реализацию проводим с использованием первичных и внешних ключей.

Слайд 4

Один ко многим: 1,1-0,M

Удобнее всего с отношением 1,1-0,M
каждый счет связан с одним

Один ко многим: 1,1-0,M Удобнее всего с отношением 1,1-0,M каждый счет связан
и только одним клиентом
у каждого клиента может быть 0 и более счетов
Это внешний ключ из дочерней таблицы “счета” в родительскую таблицу “клиенты”
Метку NULL для такого внешнего ключа стандартно интерпретируем: “у счета клиент есть, но не помним”
В работе банка это ошибка, соответственно, такой внешний ключ определяется как NOT NULL

Слайд 5

Один ко многим: 0,1-0,M

Если в банке есть обезличенные счета, то можно говорить

Один ко многим: 0,1-0,M Если в банке есть обезличенные счета, то можно
об отношении 0,1-0,M (хотя точнее это 2 подкласса счетов)
И вот тут среди людей есть принципиально разные мнения
Кто-то говорит, что NULL для внешнего ключа - это и есть обезличенный счет, ведь вариант “не знаю” запрещён.
Если для 1,1-0,M nullable FK обычно неуместно, то для 0,1-0,M иметь nullable FK просто опасно, т. к. “ошибочные” NULL получают ложную интерпретацию.
Если проект совсем маленький и короткоживущий, то такое использование nullable FK может ускорить моделирование и упростить написание запросов.

Слайд 6

Один ко многим: 0,1-0,M

Кто-то говорит, что должен быть фиктивный клиент “unassigned”. При

Один ко многим: 0,1-0,M Кто-то говорит, что должен быть фиктивный клиент “unassigned”.
этом FK NOT NULL.
Для многих СУБД вариант “unassigned” быстрее всего работает, но при моделировании обычно еще рано оптимизацией заниматься.
В теории рекомендуют создать третью развязочную таблицу с FK UNIQUE NOT NULL на счет, т. е. shared PK у развязочной таблицы и счетов. Оба FK NOT NULL, никаких фиктивных клиентов нет.
Проблема nullable FK бесконечно обсуждается в теории моделирования. Понятно, что без них можно обойтись. Вопрос в том, бывает ли от них прок. В любом случае надо проявлять с ними большую осторожность.

Слайд 7

Для каждой заявки ровно один заявитель Для каждого заявителя хотя бы одна заявка

Один

Для каждой заявки ровно один заявитель Для каждого заявителя хотя бы одна
ко многим: 1,1-1,M

Слайд 8

“Лучший” ответ

Отношение вопрос-ответ:
Каждый ответ отвечает на конкретный вопрос
На каждый вопрос может быть

“Лучший” ответ Отношение вопрос-ответ: Каждый ответ отвечает на конкретный вопрос На каждый
(0,М) ответов
Вариант 1:
На вопрос среди своих ответов может быть один “лучший ответ”
Вариант 2:
Если на вопрос есть хоть один ответ, то среди своих ответов должен быть один “лучший ответ”

Слайд 9

Распространены 3 способа моделировать отношение 1:1
у сущностей один и тот же первичный

Распространены 3 способа моделировать отношение 1:1 у сущностей один и тот же
ключ (shared PK)
типично при вертикальном секционировании
Только shared PK дают отношение 0,1-0,1
Если в одной из таблиц shared PK одновременно сделать FK (UNIQUE NOT NULL), то будет отношение 1,1-0,1. Как раз при последовательном возникновении частей сущности работает.
Mutual FK возможны, но на практике другие механизмы

Один к одному

Слайд 10

у одной из сущностей FK UNIQUE NOT NULL на другую
FK UNIQUE NOT

у одной из сущностей FK UNIQUE NOT NULL на другую FK UNIQUE
NULL даёт 1,1-0,1
FK UNIQUE NULL не рекомендуется
развязочная таблица, каждый из FK UNIQUE NOT NULL
каждый FK есть потенциальный ключ

Один к одному

У человека ссылка на уникальный паспорт Бывают паспорта без людей Стандартный NULL: паспорт есть, но склероз

Слайд 11

Один к одному: 0,1-1,1 (Weak Entity)

У университета есть Learning Management Systems. Пользователь

Один к одному: 0,1-1,1 (Weak Entity) У университета есть Learning Management Systems.
в ней может быть студентом. Студент - это пользователь.
Shared PK: PK в таблице студентов одновременно является FK UNIQUE NOT NULL на пользователей.
Не все пользователи являются студентами
Каждый пользователь LMS также может быть преподавателем. Быть студентом и преподавателем одновременно можно.
Нет проблем, то же самое делаем

Слайд 12

Один к одному: подклассы

У всех пациентов есть ФИО, но есть сугубо мужские

Один к одному: подклассы У всех пациентов есть ФИО, но есть сугубо
и сугубо женские атрибуты. Быть мужчиной и женщиной одновременно нельзя.

Слайд 13

Один к одному: супруги

Мужчина может быть женат только на одной женщине
Женщина может

Один к одному: супруги Мужчина может быть женат только на одной женщине
быть замужем только за одним мужчиной
И женщины, и мужчины - люди

Слайд 14

Для каждого клиента забронированы комнаты Каждую комнату бронируют клиенты

Многие ко многим

Для каждого клиента забронированы комнаты Каждую комнату бронируют клиенты Многие ко многим

Слайд 15

Через развязочную таблицу (“таблицу-связь”) можно любое бинарное отношение представить
явно храним подмножество декартова

Через развязочную таблицу (“таблицу-связь”) можно любое бинарное отношение представить явно храним подмножество
произведения
очевидно обобщение на отношения больших арностей

Многие ко многим

???

???

???

Слайд 16

Через развязочную таблицу (“таблицу-связь”)
и здесь довольно часто осознают ещё одну новую сущность-транзакцию
связь

Через развязочную таблицу (“таблицу-связь”) и здесь довольно часто осознают ещё одну новую
возникает как событие - да ещё и с атрибутами

Сущности-транзакции

Слайд 17

Популярные логические модели

Популярные логические модели

Слайд 18

Логическая модель

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

Логическая модель Существуют разные подходы к проектированию логической модели т.е. разные методики
по концептуальной
Рассмотрим 3 наиболее популярные для проектирования хранилищ данных (база данных для аналитики):
Нормализованная (как правило, 3-я нормальная форма)
Звезда / снежинка
Data Vault

Слайд 19

Нормализованная модель

Нормальная форма — свойство таблицы, определяющее избыточность и, как следствие, потенциальную

Нормализованная модель Нормальная форма — свойство таблицы, определяющее избыточность и, как следствие,
противоречивость информации в БД:
1-я нормальная форма, 1NF
2-я нормальная форма, 2NF
3-я нормальная форма, 3NF
Усиленная 3-я нормальная форма, BCNF
4-я нормальная форма, 4NF

Процесс перехода от формы N к форме N+1 называется нормализацией. Процесс перехода от формы N+1 к форме N называется денормализацией.

Слайд 20

1-я нормальная форма

Все атрибуты атомарны
Это свойство таблицы, а не математического отношения.
Просто по

1-я нормальная форма Все атрибуты атомарны Это свойство таблицы, а не математического
определению ключа каждый неключевой атрибут «должен предоставлять информацию о ключе».

Слайд 21

2-я нормальная форма

Находится в 1NF
Каждый неключевой атрибут «должен предоставлять информацию о полном

2-я нормальная форма Находится в 1NF Каждый неключевой атрибут «должен предоставлять информацию
ключе»
Автор слов не зависит от названия диска

Слайд 22

3-я нормальная форма

Находится в 2NF
Каждый неключевой атрибут «должен предоставлять информацию ... и

3-я нормальная форма Находится в 2NF Каждый неключевой атрибут «должен предоставлять информацию
ни о чём, кроме ключа».
Фамилия зависит от счёта, но транзитивно через клиента.

Слайд 23

Нормальная форма Бойса—Кодда

Таблица находится в нормальной форме Бойса—Кодда тогда и только тогда,

Нормальная форма Бойса—Кодда Таблица находится в нормальной форме Бойса—Кодда тогда и только
когда детерминанты всех её функциональных зависимостей являются потенциальными ключами.
BCNF во всех отношениях сильнее ранее определённой 3NF
Отличие от 3NF только для нетранзитивных функциональных зависимостей. На практике такие отношения встречаются достаточно редко, для всех прочих отношений 3NF и BCNF эквивалентны.
Типичные примеры 3NF→BCNF связаны с тем, что значение одного из полей является составным, а это заставляет задуматься об атомарности.

Слайд 24

Нормализованная модель

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

Нормализованная модель Конечной целью нормализации является уменьшение потенциальной противоречивости хранимой в базе
информации.
Все таблицы находятся, как правило, в 3NF или BCNF. Сущности сильно связаны между собой.
Свойства:
высокая устойчивость (особенно к ошибкам обновления)
высокая масштабируемость
необходимость длительного проектирования
анализировать данные сложнее (нужно много соединений, прибегают к денормализации)

Слайд 25

Нормализованная модель

Пример “сеть ресторанов”

Нормализованная модель Пример “сеть ресторанов”

Слайд 26

Модель звезда

Два типа таблиц:
Таблица фактов (событий), FACTS
Таблицы измерений, DIMENSIONS
Факты - объекты анализа.
Как

Модель звезда Два типа таблиц: Таблица фактов (событий), FACTS Таблицы измерений, DIMENSIONS
правило, таблица фактов содержит
числовые показатели и ссылки на измерения. Измерения - атрибуты событий. Любые значения, характеризующие не один, а группу объектов.
Это результат нормализации одной таблицы данных.

Слайд 27

Модель звезда

Не должно быть циклов
В частности, в таблице фактов не должно быть

Модель звезда Не должно быть циклов В частности, в таблице фактов не
двух внешних ключей на одно измерение. Например, если для человека указывается страна рождения и страна смерти, то надо обеспечить “разнотипность” этих стран.
Свойства:
Факты, как правило, слабо связаны между собой
Высокая скорость получения «первых результатов»
Удобно анализировать
Много ПО, ориентированного на эту модель

Слайд 28

Модель “звезда”: пример “сеть ресторанов”

Модель “звезда”: пример “сеть ресторанов”

Слайд 29

Модель “снежинка”

В модели “звезда” все измерения в одном шаге от фактов.
Иногда можно

Модель “снежинка” В модели “звезда” все измерения в одном шаге от фактов.
дополнительно нормализовать словарь, получатся новые словари - уже на расстоянии 2 от фактов.
И т. д.

Слайд 30

С точки зрения измерений,
факты - это развязочная таблица для отношения большой арности
Это

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

Слайд 31

Slowly Changing Dimension

Измерения можно хранить с историей или без истории. Историю можно

Slowly Changing Dimension Измерения можно хранить с историей или без истории. Историю
хранить по-разному.
SCD type 0: Ничего не изменяется. Immutable entities. Истории нет. Например, “Календарь”
SCD type 1: Историю не храним. Помним только последние данные.
SCD type 2: Храним историю версий данных. Суррогатный ключ меняется

Слайд 32

SCD type 1

Для одной категории храним ровно одну “последнюю” версию
При изменении категории

SCD type 1 Для одной категории храним ровно одну “последнюю” версию При
обновляем существующую строчку
Можно ограничиться бизнес-ключами сущностей
Суррогатные ключи лишь ускоряют соединения
При связи невозможно выбрать правильную версию: она забыта
Легко для сущности добавлять атрибуты

Слайд 33

SCD type 2

Для одной категории храним несколько версий
запись в такой таблице -

SCD type 2 Для одной категории храним несколько версий запись в такой
это одна из версий категории
Суррогатный ключ при каждом обновлении категории меняется
Получается суррогатный ключ версии
При связи не надо выбирать правильную версию, она точно известна
Проблема, если захотим добавить для сущности атрибут: ключи не разделить
Каждая версия знает свой порядковый номер
Пара (ключ сущности, номер версии) - потенциальный ключ версии
Или есть период актуальности этой версии данных о категории effective date (valid_from, valid_to)
standardized surrogate high date (e.g. 9999-12-31) may be used as an end date, so that the field can be included in an index, and so that NULL-value substitution is not required when querying
при добавлении версии надо менять период актуальности предыдущей версии

Слайд 34

SCD Pure Type 6

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

SCD Pure Type 6 Для одной категории храним несколько версий Используем ключи
они не меняются при обновлении
Можно ограничиться бизнес-ключами, но суррогатные эффективнее
При связи надо выбирать правильную версию, усложняются запросы
Таблица фактов не может явный внешний ключ определить
Легко добавлять атрибуты, разделять версии на несколько
Строка имеет период актуальности этой версии данных о категории effective date (valid_from, valid_to)
Обеспечивает предикат текущей актуальности версии
Обеспечивает выбор правильной версии
Например, таблица “Клиенты”

Слайд 35

Модель Data Vault

Гибрид хороших свойств 3NF и Star Schema (полезная ссылка)
Три основных составляющих:
HUB

Модель Data Vault Гибрид хороших свойств 3NF и Star Schema (полезная ссылка)
(концентратор)
LINK (связь)
SATELLITE (спутник)
Свойства:
гибкость - легко реагировать на изменения (эволюцию) самого бизнеса и информационной инфраструктуры
простота построения отдельных таблиц
анализировать данные сложнее

Слайд 36

HUB

Определяет бизнес-сущность. Точка соединения данных об одной бизнес-сущности из разных источников. Содержит

HUB Определяет бизнес-сущность. Точка соединения данных об одной бизнес-сущности из разных источников.
только:
суррогатный ключ
бизнес-ключ
метка времени загрузки
метка источника загрузки
Бизнес-ключ позволяет узнавать один и тот же объект в разных источниках
VIN для авто

обеспечивают возможность сверки с источником
для hub это информация о первом упоминании данного бизнес-ключа

Слайд 37

LINK

Связи между сущностями. Любой арности. Сущности-транзакции (‘booking’). Содержит:
суррогатные ключи, определяющие связь
метку времени/источника загрузки
Все

LINK Связи между сущностями. Любой арности. Сущности-транзакции (‘booking’). Содержит: суррогатные ключи, определяющие
связи реализованы только как развязочные таблицы. Никаких внешних ключей между HUB’ами
легко модифицировать и добавлять связи
произвольная арность отношения

Слайд 38

SATELLITE

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

SATELLITE Дополнительная описательная информация для сущности. Содержит: суррогатный ключ сущности поля, описывающие сущность

Слайд 39

Модель Data Vault

Пример - служба доставки

Модель Data Vault Пример - служба доставки
Имя файла: Основные-методики-моделирования.pptx
Количество просмотров: 31
Количество скачиваний: 0