Разработка и описание структур таблиц данных

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

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

Далее на логическом уровне описываются структуры потоков информации в автоматизируемой предметной области, т. е. выделяются поля таблиц данных. Для задачи об оплате звонков по мобильным телефонам таблицы могут иметь следующие структуры. Таблица Тарифы будет содержать код и название тарифа, код и название услуги, стоимость услуги за единицу времени. Таблица Абоненты должна содержать характеристики абонентов, такие как Код абонента, Номер телефона, ФИО, Код тарифа. Наконец, таблица Звонки должна содержать Код звонка, Номер телефона звонившего (первого абонента), Номер телефона второго абонента, Код услуги, Дата и продолжительность разговора.

После проектирования таблиц и их полей следует определить первичный ключ каждой таблицы и провести анализ предполагаемых таблиц на соответствие нормальным формам (хотя бы первым трем). Например, в базу данных задачи об оплате звонков после нормализации добавлены еще две таблицы – таблица с перечнем услуг (таблица Услуги) и таблица со стоимостью каждой услуги в рамках существующих тарифов (таблица Контакты). Это позволяет избежать дублирования информации о тарифах и услугах. Структуры таблиц показаны на схеме базы данных (рис.8.5). Первичные ключи таблиц помечены слева изображением ключа. Заметим, что поля Код абонента, Код звонка, Код тарифа и Код услуги являются полями, обеспечивающими уникальную идентификацию записей в соответствующих таблицах. В таблице Контакты определен составной ключ, который образуется комбинацией полей Код тарифа и Код услуги.

После выполненного проектирования будущих таблиц необходимо выполнить описание структур таблиц средствами СУБД. Это можно сделать в режиме конструктора. Можно использовать встроенные шаблоны таблиц или списков SharePoint, например, шаблоны "Контакты", "Задачи", "Вопросы" и "События". Если имена полей выбранного шаблона недостаточно информативны, их можно изменить. В режиме конструктора можно менять любые свойства полей, менять поля местами или добавлять новые поля. Использовать конструктор для модификации таблиц можно в любое время, даже после ввода данных в таблицу.

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

Поля могут иметь любой используемый в офисных приложениях тип данных: Счетчик, Текстовый, Числовой, Дата/время, Логический, Поле объекта OLE. Возможно использование поля комментариев (Memo). MS Access автоматически накладывает условия на значения, определяемые типом поля, например, не допускается ввод текста в числовые поля. Установка типа данных одновременно определяет набор дополнительных атрибутов соответствующего поля. В каждом поле могут храниться данные только одного типа. Изменение типа поля после ввода данных в таблицу может привести к потере данных.


Рис. 8.4.Поля таблицы и их свойства

Если поле используется в качестве первичного ключа таблицы, то оно может иметь любой тип данных. Часто применяется тип данных Счетчик, который гарантирует, что при вводе данных в это поле автоматически попадает номер записи в возрастающей последовательности. Можно задействовать в качестве первичного ключа определенный пользователем набор полей. МЕМО-поля и поля объекта OLE не могут быть первичными ключами. Во время ввода данных в поля первичного ключа MS Access автоматически следит за тем, чтобы в поля вводились уникальные или повторяющиеся значения в соответствии с заданным свойством Индексированное поле. Ключи не только идентифицируют записи таблиц, но и используются для установки межтабличных связей.

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

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

При проектировании базы данных можно предусмотреть возможности работы с внешними данными. Это импорт данных и связь с внешними таблицами данных. В случае импорта происходит создание дубликата внешних данных во вновь создаваемой таблице. К импортируемым данным могут применяться все средства манипуляции данными, обеспечивается быстродействие при обращении к ним и независимость от исходного источника данных. Однако возникают проблемы, связанные с поддержкой актуальности и соответствия друг другу двух копий одной и той же информации. Eсли актуальность данных является критичным фактором, то необходимо использовать связь с внешними данными. В этом случае в базе данных появляется лишь ссылка на внешние источники данных, и работа с ними происходит с помощью специальных драйверов, которые традиционно входят в пакет MS Access. Это драйверы для работы с данными, созданными в форматах Paradox, Excel, dBase, FoxPRO, а также в текстовом (txt) и гипертекстовом (htm) форматах. При связывании с внешними данными естественно возникают ограничения возможностей по управлению структурой таблиц, а также зависимость от состояния внешнего источника, к которому осуществляется подключение.

Установка связей между таблицами

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

Механизм описания логических связей между таблицами в MS Access реализован в виде объекта, называемого Схемой данных. Схема данных (рис.8.5) представляет собой графическое изображение таблиц и их взаимосвязей. Если таблицы служат для физического хранения данных, то схема данных отражает связи между таблицами базы и возможности доступа к данным таблиц с использованием этих связей, т. е. доступ к данным на логическом уровне.


Рис. 8.5.Схема базы данных

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

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

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

MS Access автоматически следит за обеспечением целостности данных, если оно установлено (рис.8.6). К нарушению целостности данных приводят следующие действия:

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

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

· удаление записи из главной таблицы при наличии связанных записей в подчиненной таблице. Это приводит к появлению "осиротевших" записей подчиненной таблицы. Так нарушение целостности может возникнуть в случае удаления из таблицы Тарифы записи, соответствующей тарифу, используемому в таблице Абоненты или в таблице Контакты (рис.8.5).

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

В случае необходимости обеспечения целостности данных в MS Access предусмотрено задание дополнительных свойств для устанавливаемой связи (рис.8.6), а именно каскадное обновление значений связанных полей и каскадное удаление связанных записей. Каскадное обновление предусматривает обновление внешнего ключа во всех записях подчиненных таблиц при изменении значения поля связи в главной таблице. Т. е. если изменился бы код услуги в таблице Услуги, то автоматически код услуги заменился бы на новый в связанных записях таблиц Звонки и Контакты. Каскадное удаление приводит к удалению всех записей подчиненных таблиц, связанных с удаляемой записью главной таблицы. Если бы удалялась запись таблицы Услуги, то автоматически удалились бы связанные записи таблиц Звонки и Контакты.


Рис. 8.6.Установка связей между таблицами

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

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

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

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








Дата добавления: 2015-02-25; просмотров: 1333;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.012 сек.