Принципы проектирования баз данных
Выбор подходов к проектированию баз данных (БД) зависит от следующих факторов:
- сложность проекта;
- технологические и экономические возможности (каким оборудованием располагает проект, сколько времени будет длиться разработка, сколько сотрудников в ней будут участвовать);
- корпоративная IT-культура (какие операционные системы и инструменты применяются разработчиками: например, если организация-заказчик предпочитает продукцию компании Microsoft, то, скорее всего, будут выбраны такие инструменты, как Microsoft Access или Microsoft SQL Server, если у заказчика принято использовать ПО категории OpenSource, то, скорее всего, будут задействованы такие продукты, как MySQL, PostgreSQL и т.п.).
Проектирование начинается со сбора информации о предметной области. В ходе серии интервью с заказчиком следует выяснить, учет каких категорий объектов предполагается вести в БД, как они взаимосвязаны между собой, насколько они многочисленны.
Для малочисленных объектов с жестко заданной номенклатурой целесообразно создавать не отдельные таблицы, а ограничения, проверяющие соответствие вводимых данных на соответствие диапазону значений.
Рисунок 1. Этапы проектирования базы данных. Автор24 — интернет-биржа студенческих работ
Следующим этапом проектирования БД может стать подготовка серии диаграмм UML, результатом которой становится диаграмма классов. Между ними устанавливаются связи типов "один-к-одному", "один-к-многим", "многие-к-многим".
Рисунок 2. Диаграмма классов как промежуточный этап проектирования БД. Автор24 — интернет-биржа студенческих работ
Получив необходимую информацию, можно приступать к созданию таблиц реляционной БД. Для этого могут использоваться как визуальные средства (например, в Microsoft Access), так и текстовые запросы, выполняемые непосредственно на языке SQL.
Рисунок 3. Визуальный дизайнер для баз данных MySQL. Автор24 — интернет-биржа студенческих работ
Создание взаимосвязанных таблиц
При подготовке структуры таблиц следует продумать имена колонок и типы данных, которые в них будут содержаться. Современные СУБД предоставляют широкий диапазон типов данных для хранения: числовые (цельночисленные, с плавающей точкой, двойной точности и т. п.), текстовые (char, varchar, text), календарные (дата и время), финансовые (с учетом особенностей валют) и т.п.
Кроме того, в таблицах следует установить некоторые ограничения, чтобы в записи не попадали некорректные данные. Например, если в таблице есть поле, содержащее номер пластиковой карты, то следует убедиться, что последовательность цифр, из которых он состоит, соответствует определенному шаблону.
Помимо обеспечения корректного заполнения таблиц, следует позаботиться о том, чтобы они были связаны правильно. В каждой таблице формируется поле или набор полей, характеризующее запись уникальным образом. Такой идентификатор называется ключом и используется в других таблицах как внешний ключ. Например, в таблице "Водители" базы данных "Гараж" ключевым полем может стать номер водительского удостоверения. Тогда в таблице "Транспортные средства" следует создать колонку "Водитель", ссылающуюся на таблицу "Водители" и содержащую одно из значений ее колонки "Удостоверение".
При проектировании связей между таблицами следует учитывать требования т.н. "нормальных форм".
Нормальная форма — свойство связи между таблицами в реляционной базе данных, свидетельствующее о наличии или отсутствии в ней избыточности. Избыточность может приводить к логическим ошибкам. Иными словами, нормальная форма - совокупность требований, которым должна соответствовать связь между таблицами.
При проектировании БД учитывается сразу несколько нормальных форм (всего их насчитывается до 7, в зависимости от методики подсчета). Свойствам нормальных форм посвящены многочисленные исследования.
Проектирование вспомогательных объектов реляционных БД
После создания взаимосвязанных таблиц проектировщики БД разрабатывают дополнительные средства, облегчающие работу с данными. Реализации языка SQL предусматривают такие удобные возможности, как отчеты (view), индексы, триггеры и т.д. Развитые СУБД предоставляют разработчикам множество встроенных функций для работы с текстом, числами, датами, объектами БД. БД может содержать и вновь созданные конкретно для ее целей функции.
В качестве примера рассмотрим ситуацию, когда из таблицы "Пациенты" базы данных "Поликлиника" нужно выбирать сотрудников возрастом старше 60 лет. Хранить сведения о возрасте в таблице нецелесообразно, т.к. он постоянно меняется, но можно задействовать функцию AGE, которая находит разницу между текущей датой и датой рождения. Создадим соответствующее представление (view):
CREATE VIEW OLD_PERSONS AS
SELECT ID,
EXTRACT (YEAR FROM AGE(CAST(BIRTHDATE AS DATE)))
FROM PATIENTS
WHERE AGE >= 60;
Теперь, совершая запрос
SELECT * FROM OLD_PERSONS;
, мы можем легко получить необходимую информацию.
В СУБД, ориентированных на визуальную разработку, таких, как Microsoft Access, в состав баз данных входят также формы и отчеты с удобными элементами управления и офисного форматирования. Последовательно совершенствуя запросы, формы, отчеты, насыщая базу данных новыми возможностями, разработчики стремятся сделать ее всё более эффективной для обработки данных, соответствующих заданной предметной области.
Применение набирающих популярность баз данных класса NoSQL существенно сокращает время проектирования, поскольку в них для хранения данных применяются не взаимосвязанные таблицы, а принципиально другие способы, предоставляющие в ряде случаев более гибкие возможности по сравнению с SQL-инструментами.