Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

На примерах баз данных различного назначения



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

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

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

Таблица 1. «Издательства»

Таблица 2. «Книги»

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

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

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

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

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

Связь один к одному

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

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

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

Если задействовать флажок «Каскадное удаление связанных записей», то при удалении какой-либо записи в одной таблице автоматически выполняется удаление связанной записи в другой таблице.

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

Связь один ко многим

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

В нашем случае более логично сформировать связь один ко многим: ведь каждое издательство может издавать множество книг.

Формирование и описание такой связи реализуется по аналогии с предыдущим примером. Только теперь связываются первичный ключ «Код издательства» таблицы «Издательства» и внешний ключ «Код издательства» таблицы «Книги».

В этом случае автоматически формируется связь один ко многим, что видно из комментария в нижней части окна.

Установленные флажки имеют тот же смысл, что и в предыдущем примере. Они означают, что при формировании записи о книге допустимо ссылаться только на существующее (ранее описанное) издательство; при изменении «Кода издательства» в таблице «Издательства» автоматически изменяются ссылки на издательства в таблице «Книги»; при удалении записи из таблицы «Издательства» удаляются записи обо всех книгах, которые изданы в данном издательстве, из таблицы «Книги».

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

Связь многие ко многим

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

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

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

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

Теперь осталось сформировать связь один ко многим между таблицами «Издательства» и «Связи» и такую же связь – между таблицами «Книги» и «Связи». В результате получится схема данных:

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

ЗАПРОСЫ <

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

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

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

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

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

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

Наконец в СУБД Access, как и во многих других СУБД, запросы можно проектировать с помощью бланка по образцу (QBE), а также посредством языка SQL.

Существует возможность построения запроса в двух режимах: режиме конструктора и с помощью мастера.

Проектирование запросов в режиме конструктора

Базовое окно среды Access после выбора объектов «Запросы» выглядит следующим образом:

Для того чтобы инициировать проектирование запроса в режиме конструктора, необходимо щелкнуть по соответствующей строке. Первый запрос можно также создать посредством инструмента «Конструктор», расположенного в верхней строке панели инструментов. После инициации формирования запроса загрузится окно:

Запрос можно формировать на основе таблицы, другого запроса или на базе того и другого. Для выбора объекта, на основе которого строится запрос, используются три вкладки. На вкладке «Таблицы» представлены все таблицы, которые имеются в БД. Чтобы добавить в бланк запроса таблицу, нужно ее выделить и щелкнуть по кнопке «Добавить». После добавления всех таблиц, на базе которых предполагается строить запрос, нужно щелкнуть по кнопке «Закрыть».

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

Если выбрать строку «*», то запрос будет формироваться для всех полей таблицы «Книги». В приведенном примере задействованы четыре поля этой таблицы:

В строке бланка запроса «Вывод на экран» можно отменить отображение данных из любого поля и использовать его, например, для вычисления значения.

Результат выполнения запроса можно просмотреть, не выходя из конструктора. Для этого надо щелкнуть по инструменту «Запуск» .

После выполнения сформированного запроса получим следующую выборку:

Как видно из рисунка, записи не отсортированы. Чтобы их отсортировать, в бланке запроса используется строка «Сортировка»:

После запуска этого запроса записи в выборке будут отсортированы по авторам в алфавитном порядке:

Для фильтрации записей таблицы в бланке запроса используется строка «Условие отбора», которое может выглядеть следующим образом:

Практически для каждого поля можно использовать условия отбора, для чего они объединяются союзом И (AND). Есть возможность объединять условия и союзом ИЛИ (OR), для чего в бланке запроса задействуется последняя строка, причем таких строк можно использовать практически неограниченное количество. Для того чтобы отличить поле типа дата от других типов полей, его необходимо заключать в символы решетка «#».

Результат запуска запроса с условиями:

Запросы на выборку нередко можно использовать для ввода данных, о чем свидетельствует последняя запись в полученной выборке, которая заполнена только значением по умолчанию для поля «Цена». Однако в некоторых случаях ввод данных в запросе невозможен. В частности, если в таблице имеется поле, которое ссылается на соответствующее ключевое поле другой таблицы, то это поле, как правило, является обязательным для заполнения. В рассматриваемом случае это «Код издательства». Оно в запросе не предусмотрено, поэтому этот запрос нельзя использовать для ввода данных. При попытке добавления записи возникнет сообщение об ошибке:

В запрос можно включить вычисляемое поле, например, поле «Наценка»:

Чтобы формат вывода поля «Наценка» был денежный, необходимо обратиться к общим свойствам этого поля и выбрать «Денежный» формат поля, для чего надо выделить столбец «Наценка», щелкнуть правой клавишей мыши и выбрать позицию контекстного меню «Свойства»:

Результат запуска этого запроса:

Проектирование запросов с помощью мастера

В некоторых случаях запросы удобнее строить с помощью мастеров, что, как правило, существенно ускоряет процесс проектирования запроса и сводит к минимуму ошибки проектирования. В СУБД Access можно использовать различные мастера для создания следующих запросов: «Простой запрос», «Перекрестный запрос», «Повторяющиеся записи», «Записи без подчиненных». Все эти типы запросов можно построить и в режиме конструктора.





Дата публикования: 2015-09-17; Прочитано: 2530 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.011 с)...