Кратко охарактеризуйте технологию создания бд

Обновлено: 30.06.2024

Развитие вычислительной техники осуществлялось по двум основным направлениям:

  • применение вычислительной техники для выполнения численных расчетов;
  • использование средств вычислительной техники в информационных системах.

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

База данных – это интегрированная совокупность структурированных и взаимосвязанных данных, организованная по определенным правилам, которые предусматривают общие принципы описания, хранения и обработки данных. Обычно база данных создается для предметной области.

Предметная область – это часть реального мира, подлежащая изучению с целью создания базы данных для автоматизации процесса управления.

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

Существуют 4 основные модели данных – списки (плоские таблицы), реляционные базы данных, иерархические и сетевые структуры.

В течение многих лет преимущественно использовались плоские таблицы (плоские БД) типа списков в Excel. В настоящее время наибольшее распространение при разработке БД получили реляционные модели данных. Реляционная модель данных является совокупностью простейших двумерных таблиц – отношений (англ. relation),т.е. простейшая двумерная таблица определяется как отношение (множество однотипных записей объединенных одной темой).

От термина relation (отношение) происходит название реляционная модель данных. В реляционных БД используется несколько двумерных таблиц, в которых строки называются записями, а столбцы полями, между записями которых устанавливаются связи. Этот способ организации данных позволяет данные (записи) в одной таблице связывать с данными (записями) в других таблицах через уникальные идентификаторы (ключи) или ключевые поля.

Основные понятия реляционных БД: нормализация, связи и ключи

1. Принципы нормализации:

  • В каждой таблице БД не должно быть повторяющихся полей;
  • В каждой таблице должен быть уникальный идентификатор (первичный ключ);
  • Каждому значению первичного ключа должна соответствовать достаточная информация о типе сущности или об объекте таблицы (например, информация об успеваемости, о группе или студентах);
  • Изменение значений в полях таблицы не должно влиять на информацию в других полях (кроме изменений в полях ключа).

2. Виды логической связи.

Отношения, которые могут существовать между записями двух таблиц:

  • один – к - одному, каждой записи из одной таблицы соответствует одна запись в другой таблице;
  • один – ко - многим, каждой записи из одной таблицы соответствует несколько записей другой таблице;
  • многие – к - одному, множеству записей из одной таблице соответствует одна запись в другой таблице;
  • многие – ко - многим, множеству записей из одной таблицы соответствует несколько записей в другой таблице.

Тип отношения в создаваемой связи зависит от способа определения связываемых полей:

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

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

Внешний (вторичный) ключ - это одно или несколько полей (столбцов) в таблице, содержащих ссылку на поле или поля первичного ключа в другой таблице. Внешний ключ определяет способ объединения таблиц.

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

Существует три типа первичных ключей: ключевые поля счетчика (счетчик), простой ключ и составной ключ.

Простой ключ. Если поле содержит уникальные значения, такие как коды или инвентарные номера, то это поле можно определить как первичный ключ. В качестве ключа можно определить любое поле, содержащее данные, если это поле не содержит повторяющиеся значения или значения Null.

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

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

Если возникают затруднения с выбором подходящего типа первичного ключа, то в качеcтве ключа целесообразно выбрать поле счетчика.

Программы, которые предназначены для структурирования информации, размещения ее в таблицах и манипулирования данными называются системами управления базами данных (СУБД). Другими словами СУБД предназначены как для создания и ведения базы данных, так и для доступа к данным. В настоящее время насчитывается более 50 типов СУБД для персональных компьютеров. К наиболее распространенным типам СУБД относятся: MS SQL Server, Oracle, Informix, Sybase, MS Access и т. д.

Создание БД. Этапы проектирования

Создание БД начинается с проектирования.

Этапы проектирования БД:

  • исследование предметной области;
  • анализ данных (сущностей и их атрибутов);
  • определение отношений между сущностями и определение первичных и вторичных (внешних) ключей.

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

Сущность – любой конкретный или абстрактный объект в рассматриваемой предметной области. Сущности – это базовые типы информации, которые хранятся в БД (в реляционной БД каждой сущности назначается таблица). К сущностям могут относиться: студенты, клиенты, подразделения и т.д. Экземпляр сущности и тип сущности - это разные понятия. Понятие тип сущности относится к набору однородных личностей, предметов или событий, выступающих как целое (например, студент, клиент и т.д.). Экземпляр сущности относится, например, к конкретной личности в наборе. Типом сущности может быть студент, а экземпляром – Петров, Сидоров и т. д.

Атрибут – это свойство сущности в предметной области. Его наименование должно быть уникальным для конкретного типа сущности. Например, для сущности студент могут быть использованы следующие атрибуты: фамилия, имя, отчество, дата и место рождения, паспортные данные и т.д. В реляционной БД атрибуты хранятся в полях таблиц.

Связь – взаимосвязь между сущностями в предметной области. Связи представляют собой соединения между частями БД (в реляционной БД – это соединение между записями таблиц).

Сущности – это данные, которые классифицируются по типу, а связи показывают, как эти типы данных соотносятся один с другим. Если описать некоторую предметную область в терминах сущности – связь, то получим модель сущность - связь для этой БД.

Рассмотрим предметную область: Деканат (Успеваемость студентов).

Основные предметно-значимые атрибуты сущностей:

  • студенты – фамилия, имя, отчество, пол, дата и место рождения, группа студентов;
  • группы студентов – название, курс, семестр;
  • дисциплины – название, количество часов;
  • успеваемость – оценка, вид контроля.

Основные требования к функциям БД:

  • выбрать успеваемость студента по дисциплинам с указанием общего количества часов и вида контроля;
  • выбрать успеваемость студентов по группам и дисциплинам;
  • выбрать дисциплины, изучаемые группой студентов на определенном курсе или определенном семестре.

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

Логическая связь между сущностями Группы – Студенты определена как один – ко – многим исходя из того, что в группе имеется много студентов, а каждый студент входит в состав одной группе. Логическая связь между сущностями Дисциплины – Успеваемость определена как один – ко – многим, потому что по каждой дисциплине может быть поставлено несколько оценок различным студентам.


Рис. 1.

- стрелка является условным обозначением связи: один – ко – многим.

Для создания БД необходимо применить одну из известных СУБД, например СУБД Access.

Существуют различные программы для создания баз данных. Как правило, в таком ПО реализованы функции управления, редактирования, обработки информации. В зависимости от объема, типа данных, предпочтений компании, выбирается тот или иной софт.

Самое распространенное и знакомое всем решение, правда, не самое удобное для работы с большими массивами – это Excel. Если говорить о продуктах Microsoft, то непосредственно для работы с БД было создано приложение Access. Кроме нее есть не менее удобные варианты. В нашем материале вы найдете подборку наиболее популярных программ для работы с данными.

Принцип работы базы данных и СУБД

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

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

Принцип работы базы данных и СУБД

Принцип работы базы данных и СУБД

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

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

Мы выяснили, что базы данных — это неотъемлемая часть современного мира. Теперь необходимо рассказать о программах для создания и обработки базы данных. Нужно понять, каким образом обрабатываются базы данных в компьютерных системах. Вот сейчас самое время рассказать о системе управления базами данных. СУБД — программное обеспечение, с помощью которого выполняют различные манипуляции с базами данных на компьютере.

Это может быть редактирование, создание, выполнение различных операций вроде вставки данных и т. д. Чтобы все эти операции были выполнимы, СУБД предоставляет необходимые API. Практически ни одна программа не обходится без использования СУБД при работе с данными, хранящимися на диске. Более того, СУБД отвечает за резервное копирование, проверяет, в каком состоянии находятся базы данных, осуществляют проверку доступов и т. д.

Ваш Путь в IT начинается здесь

Подробнее

Именно по этой причине для работы с различными базами данных рекомендовано пользоваться СУБД.

10 популярных программ для создания и обработки базы данных

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

Одна из самых распространенных СУБД — Microsoft Access. Функционал и интуитивно понятный интерфейс делают инструмент доступным даже для начинающих пользователей. Microsoft Access подходит как для обучения, так и для решения конкретных задач. Инструмент содержит в себе функцию переключения между двумя режимами — таблицы и конструктора.

Microsoft Access

Microsoft Access

Пользователь устанавливает тип данных для каждой из ячеек базы. Так, это может быть текстовая информация, число, время и дата, гиперссылка, логическое значение и т. д. Есть встроенный многофункциональный модуль с большим количеством изменяемых параметров. Он используется для составления отчетов, заполнения запросов и форм.

Чтобы разобраться в особенностях работы, пользователи могут изучить подробное руководство, где все процессы подробно описаны. Поддерживается интерфейс на русском языке. Программа для создания базы данных Access платная. Ее распространение возможно лишь в рамках офисного пакета Microsoft.

LibreOffice — аналог Microsoft Office и приложения Access в частности. Он может быть применен при работе с текстовыми документами, таблицами, презентациями, базами данных, графическими изображениями и даже математическими записями. Для работы необходимо установить на компьютере полный пакет и выбрать нужный модуль для запуска. Для БД необходим формат ODB.

LibreOffice содержит практически весь функционал Access. Кроме того, разработчики позаботились об удобном и понятном для пользователя интерфейсе, без загромождения разного рода кнопками и категориями. Главное окно содержит только основные возможности. Но есть нюанс — здесь нет мастера создания баз данных со встроенными шаблонами. Зато поддерживается интерфейс на русском языке, и есть открытый исходный код. Это одна из бесплатных программ для создания баз данных.

Команда GeekBrains совместно с международными специалистами по развитию карьеры подготовили материалы, которые помогут вам начать путь к профессии мечты.

Скачивайте и используйте уже сегодня:

Александр Сагун

Топ-30 самых востребованных и высокооплачиваемых профессий 2022

Подборка 50+ ресурсов об IT-сфере

pdf иконка

3,7 MB

Инструмент предназначен для работы с базами на основе технологии MySQL. Продукт разработан специалистами Workbench и содержит все инструменты для создания и администрирования баз данных, необходимых на практике. Интерфейс очень простой и удобный, справится даже начинающий пользователь. Отдельно стоит выделить возможность установки шаблона, предназначенного для автоматического индексирования ячеек, обработки запросов и смены сценариев SQL.

MySQL Workbench

MySQL Workbench

MySQL Workbench содержит модуль для визуального проектирования. Для формирования таблиц и установки связей между ними предусмотрены ER-диаграммы. Подсвечивается синтаксис SQL, в том числе все возможные ошибки как при наборе простого теста, так и кода. Интерфейс удобен и интуитивно понятен, но не поддерживает русского языка. Это, наверно, самый большой минус для русскоговорящих пользователей.

Интерфейс Navicat состоит из 3 частей. Слева — список всех имеющихся БД пользователя. В центре — место, предназначенное для обработки таблиц, справа — информация по выделенным объектам. Для возможности проектирования имеются удобные ER-диаграммы. Интерфейс на русском языке отсутствует. Есть бесплатная ознакомительная версия. При необходимости можно приобрести подписку на базовую версию, стандартную и коммерческую.

DataExpress — одна из популярных программ для создания и обработки баз данных клиентов. Это своеобразный конструктор, содержаний большое количество разнообразных приложений. У пользователя есть полноценная возможность создать персонализированную программу учета. Инструмент содержит все модули привычных СУБД: мастер ввода данных, опции фильтрации и поиска, шаблоны, автоматическая генерация значений и т. д.

  • Для учеников 1-11 классов и дошкольников
  • Бесплатные сертификаты учителям и участникам

Тема 3. Создание базы данных в Microsoft Access

Создание базы данных

Хранение информации – одна из важнейших функций компьютера. Одним из распространенных средств такого хранения являются базы данных. База данных – это файл специального формата, содержащий информацию, структурированную заданным образом.

База данных – это информационная система, которая хранится в электронном виде.

Базы данных, которые организованы в виде нескольких таблиц, называются реляционными.

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

Создадим комплекс программ по ведению базы данных, используя приложение Microsoft Access. Данная программа входит в стандартный пакет приложений Microsoft Office, поэтому является достаточно доступной для широкого круга пользователей.

Microsoft Access – это набор инструментальных средств для создания и эксплуатации баз данных.

Основные возможности, которые предоставляет Access:

• Проектирование базовых объектов БД – двумерных таблиц, с разными типами данных.

• Установление связей между таблицами, с поддержкой целостности данных, каскадного обновления и удаления записей.

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

• Создание, модификация и использование форм, запросов и отчетов, с помощью которых в свою очередь выполняются следующие операции: o Оптимизация пользовательского ввода и просмотра данных (формы); o Соединение данных из различных таблиц; проведение групповых операций (т.е. операций над группами записей, объединенных каким-то признаком), с расчетами и формированием вычисляемых полей; отбор данных с применением аппарата логической алгебры (запросы);

o Составление печатных отчетов по данным, которые содержатся в таблицах и запросах БД.

Создание таблиц.

Таблицы – это основные объекты любой базы данных. Они хранят все данные, имеющиеся в базе, а также саму структуру базы.

Работа с базой данных начинается с составления таблиц. Для создания таблиц в Access существует три основных способа:

- с помощью Мастера, который предлагает выбрать из уже имеющегося стандартного набора полей нужные пользователю имена полей;

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

- в режиме конструктора, который позволяет пользователю задавать имена полей и самостоятельно определять тип данных этих полей. Ввод данных при этом осуществляется только после задания всех полей и типов в отдельно открывающемся окне таблицы.

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

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

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

Желательно, чтобы поле первичного ключа не было большим. Например, в качестве личного ключа можно использовать код или табельный номер сотрудника, а серию и номер паспорта выбрать альтернативным ключом.

Типы данных.

Тип данных определяет, какого вида данные допускается вводить в поле. Например, недопустим ввод текста в поле денежного типа. Выбор соответствующего типа данных обеспечивает ввод данных в правильной форме для сортировки, вычислений и других операций. Microsoft Access поддерживает следующие типы данных:

Текстовый – Текст или числа, не требующие проведения расчетов, например, номера телефонов.

Поле МЕМО – Длинный текст или комбинация текста и чисел.

Числовой - Числовые данные, используемые для проведения расчетов.

Дата/время - Даты и время, относящиеся к годам с 1000 по 9999, включительно.

Денежный - Денежные значения и числовые данные, используемые в математических расчетах.

Счетчик - Уникальные последовательно возрастающие (на 1) или случайные числа, автоматически вводящиеся при добавлении каждой новой записи в таблицу.

Логический - Логические значения, а также поля, которые могут содержать одно из двух возможных значений (True/False, Да/Нет).

Поле объекта OLE - Объект (например, электронная таблица Microsoft Excel, документ Microsoft Word, рисунок, звукозапись или другие данные в двоичном формате), связанный или внедренный в таблицу Microsoft Access.

Гиперссылка - Строка, состоящая из букв и цифр, и представляющая адрес гиперссылки.

Мастер подстановок - Создает поле, в котором предлагается выбор значений из списка, или из поля со списком, содержащего набор постоянных значений или значений из другой таблицы. Выбор этого параметра в списке в ячейке запускает мастера подстановок, который определяет тип поля.

Рассмотрим создание и работу с базой данных на примерах.

Пример 1. Создание базы данных.

Таблицы в режиме конструктора:

Рис. 1 Рис. 2


Далее создадим межтабличные связи.

Основное назначение связи заключается в следующих двух задачах:

1) обеспечение целостности данных;

2) автоматизация задач обслуживания базы.

Виды связей:

1) один к одному – каждая запись одной таблицы соответствует одной записи в другой таблице. Соотношение целесообразно использовать, если часть данных используется нечасто. Отношение же при этом позволяет увеличивать скорость обработки данных.

2) один ко многим – каждой записи одной таблицы соответствует несколько записей в другой таблице. Отношение используется очень часто.

3) Многие к одному – нескольким записям в одной таблице соответствует одна запись в другой таблице. Отношение аналогично предыдущему и зависит от точки зрения пользователя или разработчика.

4) Многие ко многим – нескольким записям в одной таблице соответствует несколько записей в другой таблице. Отношение используется сравнительно редко и поддерживается не всеми системами разработки баз данных.


Далее можно перейти к заполнению таблиц данными. Заполнение таблиц легче производить с уже созданными связями, так как в таблицах можно просматривать все связанные данные. Это также облегчает процесс заполнения таблиц. Пример вложенности таблиц показан на рис. 5.


Создание запросов.

Запросы – эти объекты служат для извлечения данных из таблиц и предоставления их пользователю в удобном виде. С помощью запросов выполняют такие операции, как отбор данных, их сортировку и фильтрацию.

Запросы в Access существуют нескольких типов:

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

- Запрос с параметром – наиболее гибкий вид запроса, позволяющий получать разные результирующие таблицы, в зависимости от введенного в специальном диалоговом окне параметра;

- Запрос на изменение, обновление, удаление данных – запрос позволяет изменять и обновлять данные в автоматическом режиме, без открытия самих таблиц, что существенно упрощает работу.

- Запрос на создание таблиц – позволяет создавать новые таблицы на основе уже существующих, а также систематизировать данные из нескольких таблиц.

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

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

Пример 2. Простой запрос на выборку данных

Постановка задачи: С помощью запроса создать таблицу, показывающую в хронологическом порядке список всех льготников и те препараты, которые им выданы.

Командой главного меню Создание / Конструктор запросов переходим в режим построения структуры запроса. В поле таблиц размещаем все три таблицы базы. Ниже, в строке Поле, указываем последовательно те поля, которые будет содержать наша будущая таблица запроса: Дата выдачи, Фамилия, Имя, Отчество, Название препарата. Имена таблиц будут выбираться автоматически при выборе поля. Для удобства просмотра данных можно указать для каждой колонки тип сортировки, по возрастанию или убыванию.


Далее окно запроса закрывается и сохраняется, ему присваивается имя.

Просмотр результата работы запроса происходит в левой колонке объектов, подраздел Запросы. Двойной щелчок мыши по названию запроса откроет его в виде сформированной таблицы с данными.

Пример 3. Запрос с параметром.

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

Запрос в режиме конструктора:


При запуске запроса сначала появляется диалоговое окно, в которое необходимо ввести фамилию исполнителя работ.


Далее при нажатии кнопки ОК получаем результат работы запроса.

Пример 4. Запрос на выборку с заданным условием (для логического типа данных).

Постановка задачи: Сформировать с помощью запроса список всех льготников, которые имеют инвалидность.


Рис. 9. Конструктор запроса с условием.

Пример 5. Запрос на выборку с заданным условием (для текстового типа данных)

Постановка задачи: Создать запрос, который формирует список льготников, получающих препарат Инсулин.


Пример 6. Запрос на выборку в заданном диапазоне календарных дат

Постановка задачи: Сформировать список льготников, получивших препараты в заданном

диапазоне дат (с 14.12.2016 по 21.01.2017)


Пример 7. Итоговый запрос.

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


Рис. 12. Конструктор итогового запроса с групповыми операциями.

Создание отчетов.

Отчёты в Microsoft Access служат для вывода на экран либо печати информации из базы данных. Любой отчёт можно создать на основе таблицы или на основе запроса. Особенность отчетов и отличие их от форм заключается в основном в том, что они позволяют легко выполнить группировку данных и подвести итоги.

Отчеты можно создавать автоматически (Автоотчет), автоматизированно (Мастер отчетов) и ручным проектированием (Конструктор отчетов).

Создание отчета с использованием мастера.

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

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

Как это часто бывает, архитектору БД нужно разработать базу данных под конкретное решение.
Однажды в пятницу вечером, возвращаясь на электричке домой с работы, я подумал о том, как бы я создал сервис по найму сотрудников в разные компании. Ведь ни один из существующих сервисов не позволяет быстро понять насколько подходит тебе кандидат. Нет возможности создать сложные фильтры, включающие или исключающие совокупность определенных навыков, проектов или позиций. Максимум, что обычно предлагают сервисы — фильтры по компаниям и частично по навыкам.

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

Для начала, разберем создание базы данных в 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) в двух сущностях (таблицах):

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 (п.1.1 и п.1.2) — первое и второе формальные правила
  2. п.2 (п.2.1 и п.2.2) — третье и четвертое формальные правила
  3. п.3 (аналогично п.2) — пятое и шестое формальные правила
  4. п.4 — седьмое формальное правило

Говоря о нормализации, нужно понимать ее суть. Нормализация ведет к уменьшению повторяемости хранения информации, а следовательно и к уменьшению возможности появления аномалий в данных. Однако, нормализация при дроблении сущностей приводит к более сложным построениям запросов для манипуляций с данными (вставки, модификации, выборки и удаления).

Обратным процессом нормализации называется денормализация. Это упрощение построения запросов доступа к данным за счет укрупнения и вложенности сущностей (например, как было показано выше в пунктах 2.1.1 и 2.2.1 с помощью неполно-структурированных данных (NoSQL)).

Вот и вся суть правил проектирования баз данных.

А вы уверены, что поняли отношения в семи формальных правилах? Именно поняли, а не узнали? Ведь знать и понимать — две совершенно разных концепции.

Объясню более детально. Спросите себя, можете ли вы за пару часов набросать пусть и укрупненную по сущностям, но модель базы данных для любой предметной области и для любой информационной системы? (тонкости и детали можно достроить, поспрашивав аналитиков и представителей заказчиков). Если вопрос вас удивил, и вы думаете, что это невозможно, значит вы знаете семь формальных правил, но не понимаете их.

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

Также, эти отношения могут меняться, переходя из один к одному к одному ко многим, многие к одному или многие ко многим. Обязательность связи может меняться или остаться неизменной.

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

В свое время меня смущало то, что в ВУЗе я знал эти семь формальных правил, но на производственной практике (ВУЗ отправляет студентов в различные компании для приобретения профессионального опыта) очень долго строил модели баз для разных предметных областей. Я задумался и понял, что не понимаю этих отношений.

Мне помогло наблюдение за людьми, а суть отношений раскрылась в сновидении. Этот сон я перескажу в упрощенной форме: только то, что позволяет лучше понять именно эти семь формальных правил — без детализации всего остального.

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

Вы проследили, какие отношения были между субъектами, и как менялись эти отношения?
Давайте присмотримся внимательнее.

  • Когда семья была полной, с несколькими детьми, отношение между родителями и детьми имело вид многие ко многим.
  • Когда остались мать и дети, отношение между родителем и детьми стало один ко многим с обязательной связью. Однако, в любой семье, где может и не быть детей, это отношение будет таким же, но уже с необязательной связью.
  • А вот со стороны детей отношение к родителю было как многие к одному с обязательной связью пока родителя не лишили родительских прав.
  • Когда дети оказались в детском доме — отношение изменилось на многие к одному с необязательной связью.
  • Когда у детей появились попечители, связь между ними стала многие ко многим: у каждого попечителя могут быть другие подопечные дети, а у каждого ребенка могут быть другие попечители (родители).

Надеюсь, теперь вы значительно приблизились к пониманию этих семи формальных правил.

Стоит постоянно практиковаться: наблюдать за людьми и выявлять существующие отношения как между субъектами, так и между субъектами и объектами. Выше описывался гражданин и его паспорт как отношение один к одному с обязательной связью. В тоже время, пример человека и его паспорта — это отношение один к одному с необязательной связью.

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

Хорошо спроектированную модель базы данных с учетом изменения отношений в реальности или в предметной области не понадобится менять годами или даже десятилетия. Это особенно важно для хранилищ данных, где изменения влекут пересохранение больших объемов данных (от нескольких гигабайт до многих терабайт).

Важно запомнить, что таблицы в реляционной модели — это отношения сущностей, а строки (кортежи) — это экземпляры этих отношений. Но чтобы было проще, под таблицами часто понимаются сущности, а под строками таблицы — экземпляры сущностей. Их отношения выражаются через связи в форме внешних ключей.

Проектирование схемы базы данных для поиска соискателей на работу

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

Для начала, определим, что важно для сотрудников из компании, которые ищут кандидатов:

  1. Сотрудник (Employee)
  2. Компания (Company)
  3. Позиция (должность) (Position)
  4. Проект (Project)
  5. Навык (Skill)
  • Компании и сотрудники относятся как многие ко многим, так как сотрудник мог работать в нескольких компаниях, а в компании работают многие люди.
  • Аналогично относятся позиции и сотрудники: несколько сотрудников могут занимать одну позицию как в рамках как одной, так и нескольких компаний.
  • С другой стороны, сотрудник мог работать на разных позициях как в рамках одной, так разных компаний. Таким образом, отношение между позициями и компаниями — многие ко многим.
  • Аналогично и по проектам: проекты относятся ко всем выше рассмотренным сущностям как многие ко многим.
  • Для простоты будем считать, что в проекте сотрудник использует один набор навыков.
  • Тогда проекты и навык относятся как многие ко многим.



Рис.11. Схема базы данных для поиска соискателей на работу

Здесь таблица JobHistory выступает как сущность истории работы каждого соискателя. То есть, это резюме, которое педставляет отношения многие ко многим между сущностями сотрудник, компания, позиция и проект.

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

Подобная модель лежит в основе базы данных проекта Geecko.

Что именно мы возьмем из реальности и вложим в сущность схемы, и какие отношения построим в модели, будет зависеть от того, что мы хотим от информационной системы в общем, здесь и в будущем. Иными словами — какие данные мы хотим получить в текущий момент времени и через определенное время в будущем.

Немного лирики

После того, как вы внедрите модель в работу, остановитесь на миг и подумайте: только что был создан новый маленький мир. В нем есть свои сущности из реального мира и свои отношения. Да, это цифровой мир, но он теперь будет развиваться своей дорогой. Он будет общаться (интегрироваться) с другими системами (мирами), тоже созданными по своим правилам. Данные будут течь в этих системах, как кровь в живом организме.

А перед сном подумайте о том, что семь формальных правил были всегда, и что они окружают нас всюду. Не больше и не меньше, всегда семь. Все отношения реальной жизни можно разложить на эти семь формальных правил. А когда вы думаете или видите сны, как там сущности относятся друг к другу — не по тем же семи формальным правилам?

Вообще, я уверен, что эти отношения (семь формальных правил) выявил очень хороший психотерапевт, возможно — женщина. Это было очень давно, задолго до появления самого понятия информационных технологий. И самое интересное, что эти отношения живут вне базы данных и ИТ — последние лишь используют их для моделирования информационных систем.

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

Послесловие

Диаграммы для примеров были реализованы с помощью инструмента Database Diagram Tool for SQL Server. Однако, подобный функционал есть и в DBeaver.

Читайте также: