Системы управления базами данных (СУБД)
База данных - совместно используемый набор логически связанных данных. Это единое хранилище данных, которое однократно определяется, а затем используется одновременно многими пользователями.
Система управления базами данных (СУБД) - это программное обеспечение, с помощью которого пользователи могут определять, создавать и поддерживать базу данных, а также осуществлять к ней контролируемый доступ.
В реляционных базах данных (БД самого распространенного типа) данные хранятся в таблицах. На первый взгляд, эти таблицы подобны электронным таблицам Excel, поскольку они тоже состоят из строк и столбцов. Столбцы называются полями (fields) и содержат данные определенного типа. Строки именуются записями (records). В одной строке хранится один набор данных, описывающих определенный объект. Например, если в таблице хранятся данные о клиентах, она может содержать поля для имени, адреса, города, почтового индекса, номера телефона и т.д. Для каждого клиента будет создана отдельная запись.
Таблицы – не единственный тип объектов, из которых состоят базы данных. Помимо таблиц, существуют формы, отчеты и запросы.
Формы (forms) применяются для добавления новых данных и изменения уже существующих. Формы облегчают добавление и редактирование информации, а также позволяют контролировать тип водимых данных и избегать при вводе ряда ошибок.
Для отображения данных в удобном для чтения виде используются отчеты (reports). Ознакомиться со всей информацией, хранящейся в таблице, сложно по той причине, что текст не умещается в полях целиком. Существует возможность включать в отчет не все данные, а только некоторые, что значительно повышает удобство использования.
Для вывода в отчеты определенных данных применяются запросы (queries). Использование запросов похоже на процесс поиска, – задаются конкретные критерии отбора, на основе которых база данных формирует и возвращает отчет. Например, если база данных содержит информацию о телефонных номерах, то можно запросить вывести в отчете только те телефоны, которые относятся к конкретному адресу, или только те, которые относятся к конкретной фамилии, или начинающиеся с определенных цифр и т.п. Запросы записываются на языке SQL (Structured Query Language — язык структурированных запросов).
В основе реляционных баз данных лежит понятие связей (отношений, relationships). Они позволяют разработчикам связывать несколько таблиц в базе посредством общих данных. При помощи взаимосвязей разработчики баз данных моделируют таблицы, отражающие взаимодействие объектов в реальности.
Понять принцип работы связей проще всего на примере. Пусть для хранения информации о продажах компании применяется электронная таблица Excel. Со временем в таблице накапливаются сотни записей. Многие из них соответствуют покупкам, совершенным одними и теми же клиентами. Проблема состоит в том, что при совершении повторной покупки информация об адресе клиента снова сохраняется. Со временем некоторые клиенты переезжают. Их новые адреса вводятся в электронную таблицу, но во всех прошлых записях остается прежний адрес. Существует вероятность, что рано или поздно кто-то случайно использует для отправки товара неверный адрес. Обновление адресов становится довольно непростой задачей из-за их невероятного количества. В Excel нет средств, позволяющих устранить эту проблему.
При формировании базы данных логичнее отделить все записи о клиентах от записей, относящихся к совершенным ими покупкам. В этом случае в одной таблице будет храниться информация о покупках, а в другой – о клиентах. В таблице клиентов каждому будет соответствовать только одна запись. При переезде клиента потребуется обновить только одну соответствующую ему запись, а не все записи о его покупках. В таблице, содержащей записи о покупках, вместо перечисления всей информации о покупателе будет указан уникальный идентификатор (в нашем примере поле идентификатора названо cust_ID), соответствующий определенной записи в таблице клиентов. Такие связи между таблицами и позволяют создавать реляционные базы данных.
Обе таблицы содержат поле cust_ID. В таблице клиентов поле cust_ID включает уникальные идентификаторы, называемые также первичными ключами (primary key). У каждой записи в таблице всегда существует свой идентификатор, который не повторяется, благодаря чему, в таблице обеспечен порядок, предполагающий корректное обновление, удаление и добавление данных.
В таблице покупок одно и то же значение cust_ID, напротив, может повторяться больше одного раза — в зависимости от того, сколько покупок совершил тот или иной клиент. Когда первичный ключ одной таблицы применяется в качестве поля другой, он называется внешним ключом. При использовании внешних ключей между таблицами образуются связи (relationships). Они позволяют избавиться от избыточной (дублирующей информации) и сохранить целостность данных.
В приведенном примере таблицы являются достаточно простыми. Например, в порядке вещей будет использование третьей таблицы для хранения информации о товаре (инвентарная таблица) с полем product_ID, добавляемым в таблицу покупок в качестве внешнего ключа.
Рис. 45. Схема данных. |
На рисунке 45 показана взаимосвязь между двумя таблицами, описанными в этом примере. Линия между таблицами обозначает существование связи. Число 1, расположенное слева, означает, что в таблице Клиенты параметр cust_ID является уникальным, а знак бесконечности, находящийся справа, указывает, что в таблице Покупки одно и то же значение параметра cust_ID может повторяться сколько угодно. Такое отношение называется "один-ко-многим".
Возможности связей между таблицами не ограничены уменьшением избыточности данных. Они также позволяют создать SQL-запрос, извлекающий данные из обеих таблиц на основе определенного критерия. Например, можно создать запрос, выводящий имена и фамилии всех клиентов, совершивших покупки на сумму, превышающую некоторое пороговое значение. Формы, предназначенные для записи сразу в несколько таблиц, тоже функционируют на основе связей.
Модель реляционной СУБД была разработана в 70-80 годы XX века. К реляционным СУБД относится целый ряд программных продуктов, среди них Microsoft Access из пакета Microsoft Office, MySQL или более мощные системы промышленного уровня, таких как Microsoft SQL Server или Oracle.
В последнее время активно развивается и другая модель представления баз данных – объектная. Реляционная модель акцентирует свое внимание на структуре и связях сущностей, объектная - на их свойствах и поведении.