Нормализация базы данных и ее формы
Примечание:
Во всех статьях текущей категории уроков по SQL используются примеры и задачи, основанные на учебной базе данных.
Приступая к изучению данного материала, рекомендуется ознакомиться с описанием учебной БД.
Материал этой статьи напрямую не относиться к изучению языка SQL, так как имеет отношение к проектированию баз данных (БД), но для общего понимания взаимосвязи хранимой в системе информации она будет полезна.
По поводу того, как должна быть спроектирована база нет 100% решения, потому что конкретный вариант может удовлетворять либо не удовлетворять различным бизнес-процессам и целям. Но не принимать во внимание элементарные правила нельзя, так как их соблюдение сохранит много времени, нервов и денег при работе с данными.
Нормализация баз данных заключается в приведении структуры хранения данных к нормальным формам (NF). Всего таких форм существует 8, но часто достаточным является соблюдение первых трех. Рассмотрим их более подробно на примере учебной базы данных. Примеры будут строится по принципу «что было бы, если было иначе, чем сейчас».
Описание MS Access
Microsoft Access 2007 – это система управления базами данных (СУБД), реализующая полноценный графический интерфейс пользователя, принцип создания сущностей и связей между ними, а также структурный язык запросов SQL. Единственный минус этой СУБД – невозможность работать в промышленных масштабах. Она не предназначена для хранения огромных объемов данных. Поэтому MS Access 2007 используется для небольших проектов и в личных некоммерческих целях.
Но прежде чем показывать пошагово создание БД, нужно ознакомиться с базовыми понятиями из теории баз данных.
1. Как организовываются связи?
Связи создаются с помощью внешних ключей (foreign key).
Внешний ключ — это атрибут или набор атрибутов, которые ссылаются на primary key или unique другой таблицы. Другими словами, это что-то вроде указателя на строку другой таблицы.
Связи делятся на:
- Многие ко многим.
- Один ко многим.
- с обязательной связью;
- с необязательной связью;
- Один к одному.
- с обязательной связью;
- с необязательной связью;
4. Сортировка данных в таблице
Записи в таблицах автоматически воспроизводятся отсортированными в порядке возрастания по ключевому полю. При работе с базами данных может возникнуть необходимость сортировки данных по какому-либо полю таблицы в определенном порядке:
- По алфавиту, если это поле текстовое.
- По значению числа, если поле числовое.
- По времени, если поле имеет тип Дата и время.
Сортировка может производиться либо по возрастанию, либо по убыванию значений поля. При сортировке целостность данных в записях не нарушается.
Для сортировки данных таблицы в Access выделить любую ячейку поля, по которому сортируются записи, и воспользоваться соответствующими кнопками вкладки Главная группы Сортировка и фильтр (пример 2.20). Для удаления сортировки следует воспользоваться кнопкой Удалить сортировку. Так же для выполнения операций сортировки можно использовать возможности контекстного меню поля.
Пример 2.19. Сортировки по полям с различным типом данных.
1. По полю «Кинотеатр» — по алфавиту, в порядке возрастания.
2. По полю «Стоимость» — по значению, в порядке убывания.
3. По полю «Время» — в порядке убывания.
Пример 2.20. Инструменты сортировки вкладки Главная.
Реляционные БД
Реляционные базы данных – старейший тип до сих пор широко используемых БД общего назначения. Данные и связи между данными организованы с помощью таблиц. Каждый столбец в таблице имеет имя и тип. Каждая строка представляет отдельную запись или элемент данных в таблице, который содержит значения для каждого из столбцов.
- поле в таблице, называемое внешним ключом, может содержать ссылки на столбцы в других таблицах, что позволяет их соединять;
- высокоорганизованная структура и гибкость делает реляционные БД мощными и адаптируемыми ко различным типам данных;
- для доступа к данным используется язык структурированных запросов (SQL);
- надёжный выбор для многих приложений.
Первая нормальная форма
Основным правилом первой формы является необходимость неделимости значения в каждом поле (столбце) строки – атомарность значений.
Рассмотрим таблицы сотрудников и телефонных линий.
Чтобы избавиться от связывающей таблицы «Сотрудники_Линии», мы могли бы записать идентификаторы сотрудников для каждой линии в виде перечня в дополнительном столбце:
Но подобная структура не является надежной. Представьте, что Вам необходимо поменять некоторым сотрудникам подключенные линии. Потребуется осуществить разбор составного поля, чтобы определить наличие id сотрудника в каждой записи линий, затем скорректировать перечень. Получается слишком сложный и долгий процесс для такой простой операции.
Организации структуры таблиц с применением дополнительной связывающей избавляет от подобных проблем.
Помимо атомарности к первой нормальной форме относятся следующие правила:
- Строки таблиц не должны зависеть друг от друга, т.е. первая запись не должна влиять на вторую и наоборот, вторая на третью и т.д. Размещение записей в таблице не имеет никакого значения.
- Аналогичная ситуация со столбцами записей. Их порядок не должен влиять на понимание информации.
- Каждая строка должна быть уникальна, поэтому для нее определяется первичный ключ, состоящий из одного либо нескольких полей (составной ключ). Первичный ключ не может повторяться в пределах таблицы и служит идентификатором записи.
Ключи в Access
Поля, которые формируют связь между таблицами в Access, называют ключами. Как правило, ключ состоит из одного поля, но может включать и несколько. Существуют 2 вида ключей. 1. Первичный. Он может быть в таблице только один. Такой ключ состоит из одного либо нескольких полей, однозначно определяющих каждую запись в таблице. Нередко в качестве первичного ключа применяют уникальный идентификатор, код либо порядковый номер. К примеру, в таблице «Клиенты» можно назначить уникальный код клиента каждому клиенту. Поле кода клиента в таком случае будет являться первичным ключом данной таблицы. Если же первичный ключ состоит из нескольких полей, он обычно включает уже существующие поля, которые формируют уникальные значения в сочетании друг с другом. Допустим, в таблице с информацией о людях в качестве первичного ключа мы можем использовать сочетание фамилии, даты рождения и имени. 2. Внешний ключ. В таблице также могут быть несколько внешних ключей (либо один). Этот ключ содержит значения, которые соответствуют значениям первичного ключа другой таблицы. К примеру, в таблице «Заказы» каждый заказ может включать код клиента, который соответствует конкретной записи в таблице «Клиенты». А поле «Код клиента» будет внешним ключом таблицы «Заказы».
Таким образом, основой связи между таблицами в Access является соответствие значений между полями ключей. Посредством такой связи мы можем комбинировать данные из связанных таблиц. Допустим, существуют таблицы «Заказы» и «Заказчики». При этом каждая запись в таблице «Заказчики» идентифицируется полем первичного ключа, которое называется «Код»
Если мы хотим связать каждый заказ с клиентом, мы можем добавить в таблицу «Заказы» поле внешнего ключа, которое соответствует полю «Код» в нашей таблице «Заказчики», после чего создать связь между данными 2-мя ключами. В случае добавления записи в таблицу «Заказы» мы могли бы использовать значение кода клиента из нашей таблицы «Заказчики». Тогда во время просмотра каких-нибудь данных о клиенте, который сделал заказ, связь позволила бы определить, какие именно данные из нашей таблицы «Заказчики» соответствуют тем либо иным записям в нашей таблице «Заказы»:
- Первичный ключ, определяемый по знаку ключа рядом с именем поля.
- Внешний ключ, определяемый по отсутствию знака ключа.
Общая характеристика базы данных Access
Чтобы глубже ознакомиться с возможностями реляционной системы, которая входит в пакет Microsoft Office, следует разобраться с таким понятием, как база данных Access. Напомним, что набор информации, включающей структурированные по установленным правилам данные, который характеризуется особыми правилами описания и хранения, а также является независимым от программных приложений, называют базой данных (БД).
Общая характеристика базы данных Access
Самой популярной моделью представления упорядоченной информации является реляционная система. Ее название происходит от прилагательного relational (относительный). Это связано с тем, что отдельная запись в БД включает сведения, касающиеся только одного объекта.
При этом появляется возможность для работы с данными, которые принадлежат различным объектам, как единым целым, базирующимся на значениях, связанных друг с другом. Особенность реляционных систем управления информационными базами состоит в том, что весь массив обрабатываемых данных представлен в табличной форме.
На сегодняшний день система Access является одной из самых распространенных моделей управления БД в семействе продуктов корпорации Microsoft Office. Её может освоить не только опытный пользователь, но и новичок. В Microsoft Access база данных – это система, состоящая из элементов (например, таблицы, формы, запросы), выполняющих конкретно поставленную задачу. Сам термин «access» означает «доступ» (если перевести в электронном словаре).
Access – это современная прикладная программа Windows, позволяющая использовать все возможности DDE (Dynamic Data Exchange) — динамический обмен данными и OLE (Object Linking and Embedding) — связь и внесение объектов.
Получите подборку бесплатно (pdf 2,5 mb)
DDE позволяет обеспечивать обмен данными между MS Access и любым приложением от Windows. OLE также способен как устанавливать связь с объектами других прикладных программ, так и внедрять определённый объект в БД Access. Примером таких объектов могут быть электронные таблицы, диаграммы, рисунки, или документы из других приложений Windows.
Access способен работать с огромным количеством различных форматов данных. При этом, импорт/экспорт данных производится из электронных таблиц и текстовых файлов. Система способна заниматься непосредственной обработкой файлов FoxPro, Paradox, dBase III, dBase IV, и т.д.
Для работы с элементами СУБД Access использует процессор баз данных Microsoft Jet. Конструктор форм предназначен для объектов доступа и используется, как средство быстрого построения интерфейса. Конструктор отчётов обеспечивает вывод соответствующих документов. Чтобы автоматизировать рутинные операции можно воспользоваться функциями макрокоманд.
Система ориентирована на конечного пользователя. В работе Access используется язык программирования Visual Basic for Application. Он может создавать массивы, собственные типы данных, вести контроль работы прикладных программ.
Блок В.
B1. В какой последовательности расположатся записи в электронной таблице после сортировки по возрастанию в столбце С? В ответе записать номера из столбца А после сортировки.
В2. Что из перечисленного ниже относится к носителям информации? В ответе укажите буквы.
- Сканер
- флеш-карта
- Плоттер
- жесткий диск
- Микрофон
В3. При определении соответствия для всех элементов 1-го столбца, обозначенных цифрой, указывается один элемент 2-го столбца, обозначенный буквой. При этом один элемент 2-го столбца может соответствовать нескольким элементам 1-го столбца (для заданий множественного соответствия) или не соответствовать ни одному из элементов 1-го столбца (для заданий однозначного соответствия).
Память | Устройство |
1. Внутренняя память | а) Флеш-карта |
2. Внешняя память | б) Винчестер |
в) Дискета | |
г) Оперативная память | |
д) Магнитная лента | |
е) Постоянное запоминающее устройство |
Ответ: 1г,е 2а,б,в,д
В4. С данными каких форматов работает MS Excel. Записать номера ответов
В5. Установите правильный порядок соответствия в таблице моделирования