Автор работы: Пользователь скрыл имя, 12 Сентября 2010 в 14:44, Не определен
База данных — это единое, большое хранилище данных, которое однократно определяется, а затем используется одновременно многими пользователями — представителями разных подразделений. Вместо разрозненных файлов с избыточными данными здесь все данные собраны вместе с минимальной долей избыточности. База данных уже не принадлежит какому-либо единственному отделу, а является общим корпоративным ресурсом. Причем база данных хранит не только рабочие данные этой организации, но и их описания.
Наиболее распространенной степенью связи является двухсторонняя. Двухсторонние связи обычно обозначаются как связи "один к одному" (1:1), "один ко многим" (1:М) или "многие ко многим" (М:N). Также используется понятие «класс принадлежности» экземпляров сущности, он может быть необязательным (на ER-диаграммах обозначается цифрой 0) – если какой-либо экземпляр одной сущности не связан ни с одним экземпляром другой сущности, или обязательным (1) – если все экземпляры одной сущности связаны хотя бы с одним экземпляром другой сущности. Определим связи между заданными сущностями и классы принадлежности:
Клиент «заключает» Контракт
Рис.1.1.
Связь между двумя сущностями
Контракт «заключается на» Услуга
Рис
1.2. Связь между двумя сущностями
3)
сущности «Контракт» и «
Контракт
Рис.
1.3. Связь между двумя сущностями
Связи
между сущностями проектируемой
базы данных представлены на рис. 1.4.
Рис. 1.4.
Концептуальная модель базы данных. Связи
между сущностями.
Теперь необходимо задать ключи сущностей. Потенциальный ключ - атрибут или минимальный набор атрибутов, который однозначно идентифицирует каждый экземпляр типа сущности. Это означает, что потенциальный ключ не может содержать значения NULL. Первичный ключ - потенциальный ключ, который выбран для однозначной идентификации каждого экземпляра сущности определенного типа. Выбор первичного ключа сущности осуществляется с учетом суммарной длины атрибутов, минимального количества необходимых атрибутов в ключе, а также наличия гарантий уникальности его значений в текущий момент времени и в обозримом будущем, а так же с целью минимизации времени работы со строками.
Таблица Услуги имеет в своем составе уникальное для каждой строки поле, это код услуги. Таблицам Клиент, Контракт и Менеджер в качестве первичных ключей лучше всего назначить некоторый уникальный числовой идентификатор записи: номер клиента, номер контракта, код менеджера.
Сущности
Договор и Платеж связаны с
другими сущностями по типу «один ко
многим». В реляционных базах данных связи
между таблицами осуществляются посредством
первичных ключей. Поле подчиненной таблицы,
по которому осуществляется связь, называется
внешним ключом главной таблицы. Таким
образом, таблица Договор имеет внешние
ключи: Код клиента, Код вида рекламной
продукции, Код сотрудника. Таблица Платеж
имеет в качестве внешнего ключа поле
Номер договора из таблицы Договор.
Логическая
модель для связи отношений представлена
на рисунке 2 (жирным отмечены первичные
ключи, курсивом - внешние ключи).
Рисунок 2 Схема связей между отношениями
Эта модель описывает данные средствами конкретной СУБД. На этом этапе отношение, разработанное с помощью преобразованных ER-диаграмм, превращается в таблицы. Главными вопросами физического проектирования модели являются:
1) Оптимизация времени основных запросов;
2)
Обеспечение безопасности
Для повышения эффективности, то есть для ускорения операций поиска или сортировки записей таблицы по значению используют специальные объекты, которые называются индексами. Индекс содержит набор записи из 2 элементов: значение ключевого поля и указатель на соответствующую запись в таблице. Индекс упорядочен по значению ключевого поля, что позволяет системе быстро находить нужные значения. В реляционных СУБД таблицы всегда индексируются по полям первичного ключа.
Так как наша проектируемая база данных «Издательский дом» не большого объема, то индексы использовать не будем.
Для ускоренного поиска записей таблицы необходимо избежать ошибок при вводе данных в таблицу. Это возможно применением условий на возможные значения поля. Например, для удобства ввода данных для таких полей как денежные суммы, даты задаем определенный формат представления информации: денежный с двумя знаками после десятичной точки, краткий формат даты.
Обеспечение безопасности баз данных осуществляется на нескольких уровнях. Во-первых, определяются группы пользователей или отдельные пользователи с различными правами доступа к объектам базы данных. В-вторых, происходит сохранение файла базы данных при различных операциях изменения структуры базы данных, запросов, создания новых таблиц.
Создадим все таблицы («Книги», «Заказы», «Клиенты») в режиме конструктора: нажимаем на кнопке Создание таблицы в режиме конструктор. В появившемся окне конструктора таблиц определим для каждой таблицы имя поля, тип данных, свойства поля. Конструкторы всех таблиц представлены на рисунках 3 – 5.
Рисунок 3 Конструктор таблицы «Книги»
Рисунок 4 Конструктор таблицы «Заказы»
Рисунок 5 Конструктор таблицы «Клиенты»
Одно из полей таблицы назначим ключевым. Значение в этом поле однозначно определяет запись. Это поле должно быть назначено Обязательным и Индексированным (без повторений). Чтобы назначить это поле ключевым, отметим поле и щелкнем на инструменте Ключ. Закроем окно Конструктора таблиц для сохранения структуры таблицы и зададим имя таблице в окне запроса. Ключевым в таблице «Книги» назначим поле Код книги, в таблице «Заказы» - Дата заказа, в таблице «Клиенты» - Наименование клиента.
Введем данные в таблицы. Для этого выбираем таблицу и нажимаем на кнопку Открыть.
Таблицы с данными представлены на рисунках 6-8.
Рисунок 6 Данные таблицы «Книги»
Рисунок 7 Данные таблицы «Заказы»
Рисунок 8 Данные таблицы «Клиенты»
Установление связей между таблицами позволяет контролировать целостность и достоверность информации.
Постоянные связи между таблицами были установлены ранее. Для реализации связей таблиц базы данных в СУБД MS Access необходимо нажать в Строке меню кнопку Схема данных. После этого добавляем все ране созданные нами таблицы. Связи между таблицами установим с помощью мыши по методу «зацепить и перетянуть». Зацепим поле Код книги в таблице «Книги» и протащим к такому же полю в таблице «Заказы». Чтобы обеспечить целостности данных в окне диалога ставим флажок напротив Обеспечение целостности данных. После этого на схеме появляется линия, соединяющая соответствующие поля таблиц. Аналогично установим связь таблиц «Заказы» и «Клиенты» по полю Наименование клиента.
Рисунок 9 Окно схемы данных
Запрос
– процесс обращения
Выполним следующие запросы:
Создадим запрос «Список всех книг с фамилиями авторов, сгруппированный по областям знаний». Для этого нужно перейти на вкладку Запросы, и выбрать Создание запроса в режиме конструктора. В окне Добавление таблицы на вкладке Таблицы выбираем таблицу «Книги», нажимаем кнопку Добавить. Закроем окно Добавление таблицы. Теперь выберем те поля таблицы, которые необходимо включить в запрос. Выберем поля: Название книги, Автор книги, Область знаний. Для того чтобы поместить эти поля в бланк запроса, нужно дважды нажать кнопкой мыши на имени поля в таблице либо перетянуть название поля из таблицы в бланк запроса, либо выбрать необходимые поля в списке названий полей в бланке запроса.
Для группировки списка по области знаний необходимо в бланке запроса в поле сортировка для поля Область знаний выбрать сортировку по возрастанию. Для запуска запроса нажимаем пиктограмму Запуск на панели Конструктор запросов.
Конструктор запроса «Список всех книг с фамилиями авторов, сгруппированный по областям знаний» представлен на рисунке 10.
Рисунок 10 Конструктор запроса «Список всех книг с фамилиями авторов, сгруппированный по областям знаний»
Результат выполнения запроса «Список
всех книг с фамилиями авторов, сгруппированный
по областям знаний» представлен на рисунке
11.
Рисунок 11 Результат выполнения запроса «Список всех книг с фамилиями авторов, сгруппированный по областям знаний»