- •Глава 3. Создание базы данных
- •Создание файла базы данных Access
- •Создание таблицы базы данных
- •Определение структуры новой таблицы в режиме конструктора
- •Определение полей таблицы
- •Определение первичного ключа
- •Создание таблиц базы данных "Поставка товаров”
- •Создание структуры таблицы
- •Макет таблицы
- •Непосредственный ввод данных в таблицы
- •Ввод данных в таблицы бд "Поставка товаров"
- •Размещение объекта ole
- •Ввод логически связанных записей
- •Использование поля со списком при вводе записей
- •Создание схемы базы данных "Поставка товаров"
- •Включение таблиц в схему данных
- •Создание связей между таблицами схемы данных
- •Обеспечение целостности данных
- •Каскадное обновление и удаление связанных записей
- •Объединение записей взаимосвязанных таблиц
- •Выбор способа объединения записей
- •Отображение записей подчиненных таблиц в главной таблице
- •Модификация структуры базы данных
- •Изменение структуры таблиц
- •Изменение схемы данных
Использование поля со списком при вводе записей
Задачу ввода подчиненных записей только при наличии связанной записи в главной таблице можно решить с помощью поля со списком. Для этого достаточно в подчиненной таблице преобразовать поле связи в поле со списком. В качестве источника строк для списка можно использовать значения ключевого поля из главной таблицы.
Создадим в таблице поставка_план для поля ном_дог (номер договора) поле со списком, построенным на основе ключа таблицы договор. Для этого откроем таблицу поставка_план в режиме конструктора (см. рис. 3.5). Установим курсор в поле ном_дог на столбце Тип данных (Data Type), откроем список и выберем строку Мастер подстановок (Lookup Wizard). В открывшемся окне мастера Создание подстановки (Create Lookup) установим флажок на строке, которая приведет к построению списка на основе значений из таблицы (рис, 3.17).
Рис. 3.17. Первое окно Мастера подстановок
В следующем окне мастера выберем таблицу договор, на значениях из которой будет строиться список поля (рис. 3.18).
Далее выберем столбец, из данных которого будет формироваться список
В следующих okriax мастера выберем нужную ширину столбца списка и его подпись. На этом создание мастером поля со списком завершается. Параметры списка, подготовленные мастером, отображаются в области Свойства поля на вкладке Подстановка
Теперь при вводе данных в таблицу поставка_план можно воспользоваться списком, в котором отобразятся все значения поля ном_дог; содержащиеся в таблице договор. Выбором нужного значения из списка осуществляется ввод значения в поле ном_дог.
Наличие поля со списком не запрещает ввод в поле ном_дог значений, не указанных в списке. Однако если при определении параметров списка на вкладке Подстановка в окне конструктора выбрать в строке Ограничиться списком значение Да, ввод значений, не предусмотренных в списке, будет невозможен. В случае отклонения от значений списка система выдаст сообщение В результате пользователь вынужден будет придерживаться только значений, представленных в списке, и в подчиненную таблицу будут введены только связанные записи.
Таким образом, использование списков не только обеспечивает удобный ввод, но позволяет избежать многих ошибок.
Рассмотрим еще один пример использования поля со списком. Преобразуем в таблице поставка_план поле код_тов (код товара) в поле со списком. Для этого откроем таблицу в режиме конструктора, установим курсор в поле код_тов на столбце Тип данных (Data Type), откроем список этого столбца и выберем строку Мастер подстановок (Lookup Wizard). В диалоге с мастером выберем главную по отношению к таблице поставка_план таблицу товар, на основе которой создается список, и поля, включаемые в список: код_тов (код товара) и наймитов (наименование товара). Кроме того, оставим, как предлагает мастер, помеченным флажок Скрыть ключевой столбец (рекомендуется).
При выборе параметра Скрыть ключевой столбец (рекомендуется) для первого столбца списка устанавливается ширина, равная нулю. При этом параметр Ограничиться списком может принимать только одно значение — Да
Определение поля со списком с такими параметрами приводит к отображению в поле код_тов вместо значений ключевого поля значений второго поля списка — поля hammjtob (наименование товара), взятого из главной габлицы товар.
Таким образом, использование полей со списком поможет избежать ошибок при вводе связанных записей в таблицы как за счет того, что в таблицах вместо ключей могут быть отображены смысловые значения, так и за счет того, что ввод ограничивается набором значений в списке.
При создании полей со списком Мастер подстановки автоматически создает связь между таблицей, в которой создается поле со списком, и таблицей, являющейся источником значений списка. Эту связь можно увидеть в Схеме данных (Relationships), щелкнув на кнопке панели инструментов Отобразить все связи (Show All).
Очевидно, что в базе данных сложной структуры при вводе данных непосредственно в таблицы не гарантируется надежное и корректное обслуживание данных. В рассматриваемом примере базы данных "Поставка товаров" при вводе данных в таблицы нижних уровней надо отслеживать несколько вышестоящих. При большом объеме данных это очень затруднительно.
Далее будут рассмотрены средства Access, позволяющие автоматизировать контроль связной целостности и сделать загрузку базы данных простой и удобной процедурой. К таким средствам относятся, прежде всего, Схема
дошых (Relationships) и Формы (Forms). Кроме того, может быть использовано такое простое средство, как отображение в главной таблице записей подчиненных таблиц нескольких уровней — подтаблиц.
ЗАДАНИЕ 2. Создание полей со списком
Создайте поле со списком для отображения в таблице договор наименований покупателей, в таблице отгрузка — кодов и наименований товаров, в таблице накладная — кодов и наименований складов.
Схема данных в Access
Реляционная база данных, созданная в соответствии с проектом канонической модели данных предметной области, состоит из нормализованных таблиц, связанных одно-многозначными отношениями. В такой базе данных обеспечивается отсутствие дублирования данных, однократный ввод, поддержание целостности данных средствами системы. В процессе загрузки и корректировки базы данных для получения информации по запросам и вывода отчетов, а также для решения большинства задач осуществляется объединение данных из взаимосвязанных таблиц.
Связи между таблицами устанавливаются в соответствии с проектом логической структуры базы данных, определяются и запоминаются в схеме данных Access. Схема данных является не только средством графического отображения логической структуры базы данных, она активно используется системой в процессе обработки данных. Система при необходимости обработки данных двух взаимосвязанных таблиц автоматически использует связи, определенные в схеме данных. Таким образом, у разработчика нет необходимости специально сообщать системе о наличии той или иной связи. Однажды указанные в схеме данных связи используются системой автоматически.
Создание схемы данных позволяет упростить конструирование многотабличных форм, запросов, отчетов и страниц доступа к данным, а также обеспечить поддержание целостности взаимосвязанных данных при корректировке таблиц.
