Причинами низкой эффективности проектируемых бд могут быть интуит
Содержание статьи
Ответы на тесты Интуит «Работа с базами данных»
Буферизация данных в оперативной памяти необходима
- для сглаживания различий между оперативной и внешней памятью
- для хранения данных в оперативной памяти
- (Правильный ответ) для увеличения скорости обмена данными с внешней памятью
- для уменьшения числа ошибок при работе БД
- для доступа к оперативной памяти
Причинами низкой эффективности проектируемых БД могут быть
- скорость работы программных средств
- (Правильный ответ) недостаточно глубокий анализ требований
- количество подготовленных документов
- скорость заполнения таблиц
- (Правильный ответ) большая длительность процесса структурирования
Внешними ключами называются
- ключ, составленный из нескольких полей, совокупность значений которых гарантирует уникальность
- (Правильный ответ) атрибуты, представляющие собой копии ключей других отношений
- ключ, состоящий из одного поля
- все ответы
- ключ, состоящий из единственного поля таблицы, значения которого уникальны для каждой записи
Язык описания данных (ЯОД),
- (Правильный ответ) называется языком описания схем, — для построения структуры таблиц БД
- язык поиска наборов величин в файле в соответствии с заданной совокупностью критериев поиска и выдачи затребованных данных без изменения содержимого файлов и БД
- язык преобразования критериев в систему команд
- называется язык для заполнения БД данными и операций обновления
- объектный язык программирования БД
Система управления базами данных (СУБД)
- это совокупность программных средств, для создания файлов в БД
- (Правильный ответ) это совокупность языковых и программных средств, предназначенных для создания, ведения и совместного использования БД многими пользователями
- состоит из совокупности файлов расположенных на одной машине
- это совокупность нескольких программ предназначенных для совместного использования БД многими пользователями
- это совокупность баз данных
Отношение называется нормализованным или приведенным к первой нормальной форме
- если функциональная зависимость позволяет выделить самостоятельные информационные объекты
- если атрибуты представляют, из себя групповые отношения
- если все его атрибуты связаны между собой
- если Описательные реквизиты информационного объекта логически связаны с общим для них ключом
- (Правильный ответ) если все его атрибуты простые
База данных — это средство для …
- обработки информации
- хранения данных
- (Правильный ответ) хранения, поиска и упорядочения данных
- поиска данных
- сортировки данных
Алгоритм — это
- последовательность операций чередующих алгоритмический и геометрический подходы
- (Правильный ответ) последовательность правил перехода от исходных данных к результату
- процедура перехода данных
- процедура расчета данных, построенная на геометрическом подходе
- процедура расчета данных, построенная на алгоритмическом подходе
Укажите состав СУБД
- (Правильный ответ) пакеты прикладных программ
- файловая система
- обслуживающий персонал
- (Правильный ответ) языковые средства
- администратор
Методология БД
- проявляется при создании БД
- определяется в процедуре использования
- определяется при создании программного обеспечения
- (Правильный ответ) определяется в процедуре проектирования, но проявляется и в процедуре использования
- проявляется в проектировании
Атрибут — это
- наименьшая запись позволяющая ввести данные
- (Правильный ответ) наименьшая единица структуры данных
- запись позволяющая программировать
- элемент СУБД
- наименьший элемент БД
Данные — это
- совокупность расчетов
- совокупность переменных
- (Правильный ответ) совокупность объективных сведений
- совокупность сведений об арифметическом предмете
- совокупность знаний
Физический уровень включает в себя
- языки программирования
- (Правильный ответ) внутренняя модель
- (Правильный ответ) БД
- внешняя модель
- концептуальная модель БД
Перечислите классы членства подчиненных записей в групповых отношениях
- (Правильный ответ) обязательное
- сложные
- (Правильный ответ) фиксированное
- аналитические
- элементарные
Если данные представлены в виде древовидной структуры, то такая модель является …
- элементарная
- (Правильный ответ) иерархической
- объектно-реляционной
- сетевой
- реляционной
Для групповых отношений в иерархической модели обеспечивается
- ручной режим включения и не фиксированное членство
- автоматизированный режим включения и не фиксированное членство
- (Правильный ответ) автоматический режим включения и фиксированное членство
- полуавтоматический режим включения и фиксированное членство
- ручной режим включения и фиксированное членство
Групповое отношение
- простое отношение между записями
- отношение совокупности атрибутов
- сетевое отношение между записями двух типов
- отношение между подчиненными записями БД
- (Правильный ответ) иерархическое отношение между записями двух типов
Что называется файлом в прикладной программе?
- — это область, которая находится во внешней памяти и применяется для создания программы
- (Правильный ответ) — это именованная область внешней памяти, в которую можно записывать и из которой можно считывать данные
- — это имя данных, которые применяются для создания программы
- — это именованная область внутренней памяти, в которую записываются данные
- — это имя поименованных данных, которые можно изменять
Основные отличия запросов и фильтров заключаются в следующем
- фильтры не позволяют в одной строке отображать данные из нескольких таблиц
- фильтры не позволяют вычислять суммы, средние значения, подсчитывать количество записей
- фильтры не могут быть сохранены как отдельный объект в окне базы данных
- фильтры не дают возможности указывать поля, которые должны отображаться в результирующем наборе записей
- (Правильный ответ) все ответы
В каком виде могут быть представлены данные?
- в виде алгоритмов решения задач с помощью геометрических последовательностей
- (Правильный ответ) в виде алгоритмов, процедур и эвристических последовательностей
- в виде алгоритмов задач, арифметических последовательностей
- в виде процедур алгоритмических решений задач
Знания — это
- совокупность эвристических правил построенных экспериментальным методом
- совокупность факторов, с помощью которых строится общество
- совокупность правил изученных в результате обучения
- совокупность факторов полученных опытным способом
- (Правильный ответ) совокупность фактов, закономерностей и эвристических правил, с помощью которых решается поставленная задача
Какими характеристиками определяется информация?
- (Правильный ответ) уровнем знаний субъекта и степенью его восприятия
- уровнем понимания
- уровнем развития общества
- степенью познания
- степенью понимания того или иного объекта
Основные требования, предъявляемые к банкам данных
- сохранение затрат умственного труда
- наличие интерфейса прикладного программирования
- (Правильный ответ) язык взаимодействия
- (Правильный ответ) быстрая обработка запросов на данные
- взаимодействие с конечными пользователями программ
Основные этапы разработки БД
- создание структуры базы и создания её объектов, анализ данных
- создание логических и физических связей
- (Правильный ответ) уточнение задач, Последовательность выполнения задач
- изменение структуры базы и создания её объектов, тестирование
- (Правильный ответ) анализ данных, Определение структуры данных
Система управления базами данных (СУБД) —
- это совокупность взаимодействия конечных пользователей с системой для обеспечения конечным пользователям возможности получения данных без использования прикладных программ
- это запросы на данные, которые обрабатываются с помощью высокоуровневого языка
- это основа для будущего наращивания прикладных программ: базы данных должны обеспечивать возможность быстрой и дешевой разработки новых приложений
- это существующие программы и логические структуры данных для внесения изменений в базу данных
- (Правильный ответ) это совокупность языковых и программных средств, предназначенных для создания, ведения и совместного использования БД многими пользователями
Если данные представлены в виде двумерной таблицы, то такая модель является
- (Правильный ответ) реляционной
- иерархической
- аналитическая
- сетевой
- объектно-ориентированной
Распределённая БД состоит
- состоит из нескольких программ соединенных в одну БД
- (Правильный ответ) состоит из нескольких частей, хранимых в различных ЭВМ вычислительной сети (работа с такой БД происходит с помощью СУБД)
- в памяти одной вычислительной системы (применяется в локальных сетях ПК)
- состоит из нескольких частей, хранимых в одной ЭВМ (применяется в локальных сетях ПК)
- состоит из одной части, которая хранится в памяти одной вычислительной системы
Основные требования, предъявляемые к базе данных
- контроль за целостностью данных
- распределенная обработка данных
- (Правильный ответ) все ответы
- адаптивность и расширяемость
- восстановление данных после сбоев
Физическая независимость от данных
- тем группам пользователей, которых эти изменения не касаются, не потребуется вносить изменения в свои программы
- (Правильный ответ) пользователем могут быть замечены изменения только в общей производительности системы
- (Правильный ответ) означает защищенность концептуальной схемы от изменений, вносимых во внутреннюю схему
- означает защищенность системы от перезаписи
- означает полную защищенность внешних схем от изменений, вносимых в концептуальную схему
Информационный объект — это
- (Правильный ответ) имеет множество реализации — экземпляров, каждый из которых представлен совокупностью конкретных значений реквизитов
- описание некоторой сущности в виде совокупности аналитически связанных реквизитов
- двумерный массив в виде совокупности связанных реквизитов
- (Правильный ответ) описание некоторой сущности в виде совокупности логически связанных реквизитов
- массив в виде иерархии отношений
На этапе формулирования и анализа требований устанавливаются
- (Правильный ответ) цели организации
- (Правильный ответ) определяются требования к БД
- определяется концептуальная модель БД
- определяются логические связи в БД
- определяется состав программ
Объект — термин
- информацию об объекте
- (Правильный ответ) предмет, о котором могут быть собраны данные
- совокупность записей в полях данных
- (Правильный ответ) обозначающий факт, лицо, событие
- совокупность запросов
Достоинства ранних СУБД
- высокий уровень требований к знаниям о физической организации БД
- (Правильный ответ) развитые средства управления данными во внешней памяти на низком уровне
- возможность разделения памяти на физическом уровне
- перегруженность логики прикладных систем
- (Правильный ответ) возможность экономии памяти за счет разделения подобъектов
Язык запросов
- (Правильный ответ) язык поиска наборов величин в файле в соответствии с заданной совокупностью критериев поиска и выдачи затребованных данных без изменения содержимого файлов и БД
- (Правильный ответ) язык преобразования критериев в систему команд
- язык программирования предназначенных для описания объектов в БД
- называется язык для заполнения БД данными и операций обновления
- называется языком описания схем, — для построения структуры таблиц БД
Проектировочный режим предназначен для . . .
- использование концептуальных моделей для строительства БД
- (Правильный ответ) создания структуры базы и создания её объектов
- использование подготовленных объектов для наполнения базы использование подготовленных объектов для получения данных из БД
- (Правильный ответ) изменения структуры базы и создания её объектов
Что подразумевается под восстановлением данных?
- совокупность программ для настройки системы данных
- система должна осуществлять контроль ошибок в данных и выполнять проверку взаимного логического соответствия данных
- база данных должна быть настраиваемой, причем настройка не должна вызывать перезаписи прикладных программ
- (Правильный ответ) в случае аппаратных или программных сбоев система должна возвращаться к некоторому согласованному состоянию данных
- (Правильный ответ) это автоматическое восстановление без потери данных транзакции
Существующие подходы к построению БД
- совместный
- (Правильный ответ) классический
- централизованный
- (Правильный ответ) современный
- разделенный
Состав БД для классического подхода
- (Правильный ответ) интерфейс пользователя
- программное приложение
- система нисходящих документов
- (Правильный ответ) БД
- приложение (алгоритм бизнеса)
Операции, обеспечивающие безопасность
- правильное проектирование; шифрование данных
- правильное построение БД, ограничение доступа
- (Правильный ответ) защита паролем; ограничение уровня доступа
- правильное оформление документов к БД; защита паролем
- (Правильный ответ) шифрование прикладных программ; шифрование данных
Пользовательский режим предназначен для . . .
- изменения структуры базы и создания её объектов
- (Правильный ответ) использование подготовленных объектов для наполнения базы
- (Правильный ответ) использование подготовленных объектов для получения данных из БД
- использование концептуальных моделей для строительства БД
- создания структуры базы и создания её объектов
СУБД имеет режимы работы
- промежуточный
- конечный
- стартовый
- (Правильный ответ) пользовательский
- (Правильный ответ) проектировочный
Основные функции СУБД
- создание БД
- (Правильный ответ) управление буферами оперативной памяти
- создание файлов и работа с ними файлов
- управление данными во внутренней памяти
- (Правильный ответ) непосредственное управление данными во внешней памяти
Состав БД для современного подхода
- система нисходящих документов
- система программ
- (Правильный ответ) БД, Интерфейс пользователя
- программное приложение
- (Правильный ответ) приложение (алгоритм бизнеса)
Источник
НОУ ИНТУИТ | Лекция | Проектирование реляционных баз данных на основе принципов нормализации: дальнейшая нормализация
Заключение
Процесс проектирования реляционной базы на основе метода нормализации преследует две основных цели:
- избежать избыточности хранения данных;
- устранить аномалии обновления отношений.
Рассмотрим, насколько эти цели актуальны в современных условиях, когда объемы доступных носителей внешней памяти непрерывно возрастают, стоимость их падает, а современные серверы реляционных баз данных способны автоматически поддерживать целостность баз данных. Здесь следует отметить два важных обстоятельства.
Во-первых, теория реляционных баз данных и методы их проектирования активно развивались уже более 25 лет тому назад. Ситуация в области технологии аппаратуры и программного обеспечения тогда была совсем иной, чем сегодня, и хорошо нормализованные реляционные базы данных в значительной степени способствовали росту эффективности приложений.
Во-вторых, в то время реляционные базы преимущественно использовались в информационных системах оперативной обработки транзакций (On-Line Transaction Processing – OLTP). Характерные примеры таких систем мы отмечали в лекции 1 – банковские системы, системы резервирования билетов и мест в гостиницах. Системам категории OLTP свойственны частые обновления базы данных, поэтому аномалии обновлений, даже если их корректировка производится СУБД автоматически, могут заметно снижать эффективность приложения.
Сегодня на переднем крае приложений баз данных находятся системы категории оперативной аналитической обработки (On-Line Analytical Processing – OLAP). В подобных системах, в частности, системах поддержки принятия решений, базы данных в основном используются для выборки данных, поэтому аномалиями обновлений можно пренебречь, а объем этих баз настолько огромен, что можно пренебречь и избыточностью хранения.
Значит ли это, что подход к проектированию реляционных баз данных методом нормализации утратил свою роль? Нет!
Мир приложений баз данных в настоящее время огромен. Сегодня любое мало-мальски приличное предприятие использует хотя бы одно приложение баз данных – бухгалтерские, складские, кадровые системы. Это системы категории OLTP с частым обновлением данных и умеренными запросами к базе данных, не вызывающими соединений многих отношений. Для небольших компаний равно важны как эффективность информационных систем, так и стоимость используемых аппаратно-программных средств. Правильно спроектированные, хорошо нормализованные реляционные базы данных помогают решению корпоративных проблем.
Да, любое правильно развивающееся предприятие рано или поздно приходит к использованию систем категории OLAP, например, некоторой разновидности систем поддержки принятия решений (Decision Support System – DSS). В базах данных таких систем обновления очень редки, а запросы могут иметь произвольную сложность, включая соединения многих отношений. Но, во-первых, технологически правильно для системы OLAP поддерживать отдельную базу данных (обычно подобные базы данных называют хранилищами данных – DataWarehouse ), а во-вторых, основными источниками данных для построения таких хранилищ данных являются базы данных систем OLTP. Так что актуальность правильно спроектированных баз данных OLTP-систем не уменьшается, а постоянно возрастает.
Следует ли из этого, что принципы нормализации непригодны для проектирования баз данных OLAP-приложений? И снова в ответ категорическое НЕТ! Возможно, окончательная схема такой базы данных должна быть денормализована из соображений повышения эффективности выполнения запросов. Но чтобы получить правильную денормализованную схему, нужно сначала понять, как выглядит нормализованная схема.
Основной вывод этой и предыдущей лекций можно сформулировать следующим образом. Пока мы остаемся в мире реляционных баз данных, для правильного проектирования базы данных необходимо понимать принципы нормализации, воспринимая их не как догму, а как руководство к действию. Кстати, это относится не только к «ручному» проектированию реляционных баз данных, но и к их проектированию с применением семантических моделей данных и CASE-средств, которые мы обсудим в следующих двух лекциях.
Источник
Основы правил проектирования базы данных
Введение
Как это часто бывает, архитектору БД нужно разработать базу данных под конкретное решение.
Однажды в пятницу вечером, возвращаясь на электричке домой с работы, я подумал о том, как бы я создал сервис по найму сотрудников в разные компании. Ведь ни один из существующих сервисов не позволяет быстро понять насколько подходит тебе кандидат. Нет возможности создать сложные фильтры, включающие или исключающие совокупность определенных навыков, проектов или позиций. Максимум, что обычно предлагают сервисы — фильтры по компаниям и частично по навыкам.
В данной статье я позволю себе немного разбавить строгое изложение материала, смешав техническую информацию с не техническими примерами из жизни.
Для начала, разберем создание базы данных в MS SQL Server для сервиса поиска соискателей на работу.
Этот материал можно перенести и на другую СУБД такую как MySQL или PostgreSQL.
Основы правил проектирования
Для проектирования схемы базы данных, нужно вспомнить 7 формальных правил и саму концепцию нормализации и денормализации. Они и лежат в основе всех правил проектирования.
Опишем более детально 7 формальных правил:
- отношение один к одному:
1.1) с обязательной связью:
примером может выступать гражданин и его паспорт: у любого гражданина должен быть паспорт; паспорт один для каждого гражданина
Реализовать данную связь можно двумя способами:
1.1.1) в одной сущности (таблице):
Рис.1. Сущность Citizen
Здесь таблица Citizen представляет собой сущность гражданина, а атрибут (поле) PassportData содержит все паспортные данные гражданина и не может быть пустым (NOT NULL).
1.1.2) в двух разных сущностях (таблицах):
Рис.2. Отношение сущностей Citizen и PassportData
Здесь таблица Citizen представляет собой сущность гражданина, а таблица PassportData — сущность паспортных данных гражданина (самого паспорта). Сущность гражданина содержит атрибут (поле) PassportID, который ссылается на первичный ключ таблицы PassportData. В свою очередь сущность паспортных данных содержит атрибут (поле) CitizenID, которое ссылается на первичный ключ CitizenID таблицы Citizen. Поле PassportID таблицы Citizen не может быть пустым (NOT NULL). Также здесь важно поддерживать целостность поля CitizenID таблицы PassportData, чтобы обеспечить связь один к одному. Иными словами, поле PassportID таблицы Citizen и поле CitizenID таблицы PassportData должны ссылаться на одни и те же записи как если бы это была одна сущность (таблица), представленная в пункте 1.1.1.
1.2) с необязательной связью:
примером может выступать человек, имеющий или не имеющий паспорт конкретной страны. В первом случае он будет являться гражданином рассматриваемой страны, а во втором — нет.
Реализовать данную связь можно двумя способами:
1.2.1) в одной сущности (таблице):
Рис.3. Сущность Person
Таблица Person представляет собой сущность человека, а атрибут (поле) PassportData содержит все его паспортные данные и может быть пустым (NULL).
1.2.2) в двух сущностях (таблицах):
Рис.4. Отношение сущностей Person и PassportData
Таблица Person представляет собой сущность человека, а таблица PassportData — сущность паспортных данных человека (самого паспорта). Сущность человека содержит атрибут (поле) PassportID, который ссылается на первичный ключ таблицы PassportData. В свою очередь сущность паспортных данных содержит атрибут (поле) PersonID, которое ссылается на первичный ключ PersonID таблицы Person. Поле PassportID таблицы Person может быть пустым (NULL). Здесь также важно поддерживать целостность поля PersonID таблицы PassportData. Это нужно, чтобы обеспечить связь один к одному. Поле PassportID таблицы Person и поле PersonID таблицы PassportData должны ссылаться на одни и те же записи как если бы это была одна сущность (таблица), показанная в пункте 1.2.1. Или же данные поля должны быть неопределенными, то есть, содержать NULL. - отношение один ко многим:
2.1) с обязательной связью:
примером могут выступать родитель и его дети. У каждого родителя есть как минимум один ребенок.
Реализовать данную связь можно двумя способами:
2.1.1) в одной сущности (таблице):
Рис.5. Сущность Parent
Таблица Parent представляет сущность родителя, а атрибут (поле) ChildList содержит информацию о детях. Данное поле не может быть пустым (NOT NULL). Обычно типом поля ChildList выступают неполно структурированные данные (NoSQL) такие как XML, JSON и т д.
2.1.2) в двух сущностях (таблицах):
Рис.6. Отношение сущностей Parent и Child
Таблица Parent представляет сущность родителя, а таблица Child — сущность ребенка. У таблицы Child есть поле ParentID, ссылающееся на первичный ключ ParentID таблицы Parent. Поле ParentID таблицы Child не может быть пустым (NOT NULL).
2.2) с необязательной связью:
примером может выступать человек, у которого могут быть дети или их может не быть.
Реализовать данную связь можно двумя способами:
2.2.1) в одной сущности (таблице):
Рис.7. Сущность Person
Таблица Parent представляет сущность родителя, а атрибут (поле) ChildList содержит информацию о детях. Данное поле может быть пустым (NULL). Обычно типом поля ChildList выступают неполно структурированные данные (NoSQL) такие как XML, JSON и т д.2.2.2) в двух сущностях (таблицах):
Рис.8. Отношение сущностей Person и Child
Таблица Parent представляет сущность родителя, а таблица Child — сущность ребенка. У таблицы Child есть поле ParentID, ссылающееся на первичный ключ ParentID таблицы Parent. Поле ParentID таблицы Child может быть пустым (NULL).
2.2.3) в одной сущности со ссылкой на саму себя при условии, что у сущностей (таблиц) родителя и ребенка будут одинаковые наборы атрибутов (полей) без учета ссылки на родителя:
Рис.9. Сущность Person со связью на саму себя
Сущность (таблица) Person содержит атрибут (поле) ParentID, который ссылается на первичный ключ PersonID этой же таблицы Person и может содержать пустое значение (NULL).Также данная реализация является примером реализации отношения «многие к одному» с необязательной связью.
- отношение многие к одному:
Эту связь можно рассмотреть зеркально к приведенной выше связи один ко многим. Иными словами, отношение сущности «дети» к сущности «родители», где обязательная связь будет при условии, что у ребенка есть хотя бы один родитель. Если же участвуют все дети, в том числе и находящиеся в детских домах, отношение будет с необязательной связью.
- отношение многие ко многим:
Примером может выступить недвижимость: она может быть в собственности как одного человека, так и нескольких. С другой стороны, один человек может владеть несколькими домами или долями нескольких домов.
Реализовать данное отношение, с привлечением NoSQL, можно так же, как в описанных выше отношениях. Однако, в рамках реляционной модели обычно такое отношение реализуют через 3 сущности (таблицы):
Рис.10. Отношение сущностей Person и RealEstate Таблицы Person и RealEstate представляют соответственно сущности человека и недвижимости. Связываются данные сущности (таблицы) через сущность (таблицы) PersonRealEstate. Атрибуты (поля) PersonID и RealEstateID ссылаются на первичные ключи PersonID таблицы Person и RealEstateID таблицы RealEstate соответственно. Обратите внимание, что для таблицы PersonRealEstate пара (PersonID; RealEstateID) всегда является уникальной и потому может выступать первичный ключем для самой связующей сущности PersonRealEstate.
Также данное отношение можно реализовать через более чем три сущности. Для этого добавляются нужные атрибуты, которые ссылаются на первичные ключи необходимых соответствующих сущностей. Такая реализация схожа с примерами, описанными выше в пунктах 1.1.2 и 1.2.2.
Отношения один ко многим и многие к одному можно реализовать через более чем две сущности. Для этого добавляются нужные атрибуты, которые ссылаются на первичные ключи необходимых соответствующих сущностей. Такая реализация схожа с примерами, описанными выше в пунктах 1.1.2 и 1.2.2.
А где же семь формальных правил?
Вот они:
- п.1 (п.1.1 и п.1.2) — первое и второе формальные правила
- п.2 (п.2.1 и п.2.2) — третье и четвертое формальные правила
- п.3 (аналогично п.2) — пятое и шестое формальные правила
- п.4 — седьмое формальное правило
В тексте выше эти семь формальных правил объединены в четыре блока по функционалу.
Говоря о нормализации, нужно понимать ее суть. Нормализация ведет к уменьшению повторяемости хранения информации, а следовательно и к уменьшению возможности появления аномалий в данных. Однако, нормализация при дроблении сущностей приводит к более сложным построениям запросов для манипуляций с данными (вставки, модификации, выборки и удаления).
Обратным процессом нормализации называется денормализация. Это упрощение построения запросов доступа к данным за счет укрупнения и вложенности сущностей (например, как было показано выше в пунктах 2.1.1 и 2.2.1 с помощью неполно-структурированных данных (NoSQL)).
Вот и вся суть правил проектирования баз данных.
А вы уверены, что поняли отношения в семи формальных правилах? Именно поняли, а не узнали? Ведь знать и понимать — две совершенно разных концепции.
Объясню более детально. Спросите себя, можете ли вы за пару часов набросать пусть и укрупненную по сущностям, но модель базы данных для любой предметной области и для любой информационной системы? (тонкости и детали можно достроить, поспрашивав аналитиков и представителей заказчиков). Если вопрос вас удивил, и вы думаете, что это невозможно, значит вы знаете семь формальных правил, но не понимаете их.
Почему-то многие источники игнорируют тот факт, что эти отношения были не придуманы, а выявлены. Они изначально существуют в реальном мире как между субъектами, так и между субъектами и объектами.
Также, эти отношения могут меняться, переходя из один к одному к одному ко многим, многие к одному или многие ко многим. Обязательность связи может меняться или остаться неизменной.
Позволю себе рассказать об одном случае, когда от знания семи формальных правил я пришел именно к пониманию этих отношений.
В свое время меня смущало то, что в ВУЗе я знал эти семь формальных правил, но на производственной практике (ВУЗ отправляет студентов в различные компании для приобретения профессионального опыта) очень долго строил модели баз для разных предметных областей. Я задумался и понял, что не понимаю этих отношений.
Мне помогло наблюдение за людьми, а суть отношений раскрылась в сновидении. Этот сон я перескажу в упрощенной форме: только то, что позволяет лучше понять именно эти семь формальных правил — без детализации всего остального.
Сон был про семью, в которой есть отец, мать и дети. Отец погибает в автомобильной катастрофе, а мать начинает пить, и детей в итоге забирают в детский дом. Эти дети надолго остаются без родителей. Затем у некоторых детей появляются попечители, их тоже несколько.
Вы проследили, какие отношения были между субъектами, и как менялись эти отношения?
Давайте присмотримся внимательнее.
- Когда семья была полной, с несколькими детьми, отношение между родителями и детьми имело вид многие ко многим.
- Когда остались мать и дети, отношение между родителем и детьми стало один ко многим с обязательной связью. Однако, в любой семье, где может и не быть детей, это отношение будет таким же, но уже с необязательной связью.
- А вот со стороны детей отношение к родителю было как многие к одному с обязательной связью пока родителя не лишили родительских прав.
- Когда дети оказались в детском доме — отношение изменилось на многие к одному с необязательной связью.
- Когда у детей появились попечители, связь между ними стала многие ко многим: у каждого попечителя могут быть другие подопечные дети, а у каждого ребенка могут быть другие попечители (родители).
Отношение между мужем и женой один к одному с обязательной связью при официальной брака или один к одному с необязательной связью до регистрации. Жена может быть только одна, как и муж может быть только один. По крайней мере, в России. Но в другой стране возможно многоженство, и тогда связь между мужем и женами будет один ко многим, а между женами и мужем — многие к одному.
Надеюсь, теперь вы значительно приблизились к пониманию этих семи формальных правил.
Стоит постоянно практиковаться: наблюдать за людьми и выявлять существующие отношения как между субъектами, так и между субъектами и объектами. Выше описывался гражданин и его паспорт как отношение один к одному с обязательной связью. В тоже время, пример человека и его паспорта — это отношение один к одному с необязательной связью.
Поняв семь формальных правил, вы сможете без труда спроектировать модель базы данных любой сложности для любой информационной системы.
Также вы увидите, что реализовать отношение можно разными способами, а сами отношения могут меняться. Модель (схема) базы данных — это «снимок» отношений между сущностями в определенный момент времени. Именно поэтому важно определить как сами сущности — образы объектов из реального мира или предметной области, так и их отношения между собой с учетом изменений в будущем.
Хорошо спроектированную модель базы данных с учетом изменения отношений в реальности или в предметной области не понадобится менять годами или даже десятилетия. Это особенно важно для хранилищ данных, где изменения влекут пересохранение больших объемов данных (от нескольких гигабайт до многих терабайт).
Важно запомнить, что таблицы в реляционной модели — это отношения сущностей, а строки (кортежи) — это экземпляры этих отношений. Но чтобы было проще, под таблицами часто понимаются сущности, а под строками таблицы — экземпляры сущностей. Их отношения выражаются через связи в форме внешних ключей.
Проектирование схемы базы данных для поиска соискателей на работу
После того, как мы описали основы правил проектирования БД в первой части, давайте создадим схему базы данных для поиска соискателей на работу.
Для начала, определим, что важно для сотрудников из компании, которые ищут кандидатов:
- для HR:
1.1) компании, где работал соискатель
1.2) позиции, которые ранее занимал соискатель в данных компаниях
1.3) навыки и умения, которыми соискатель пользовался в работе;
а также продолжительность работы соискателя в каждой компании на каждой позиции и длительность использования каждого навыка и умения - для технического специалиста:
2.1) позиции, которые занимал соискатель в данных компаниях
2.2) навыки и умения, которыми соискатель пользовался в работе
2.3) проекты, в которых участвовал соискатель;
а также продолжительность работы соискателя на каждой позиции и в каждом проекте, длительность использования каждого навыка и умения
Для начала выявим нужные сущности:
- Сотрудник (Employee)
- Компания (Company)
- Позиция (должность) (Position)
- Проект (Project)
- Навык (Skill)
- Компании и сотрудники относятся как многие ко многим, так как сотрудник мог работать в нескольких компаниях, а в компании работают многие люди.
- Аналогично относятся позиции и сотрудники: несколько сотрудников могут занимать одну позицию как в рамках как одной, так и нескольких компаний.
- С другой стороны, сотрудник мог работать на разных позициях как в рамках одной, так разных компаний. Таким образом, отношение между позициями и компаниями — многие ко многим.
- Аналогично и по проектам: проекты относятся ко всем выше рассмотренным сущностям как многие ко мно?