Глава 4 Физический уровень проектирования базы данных
4.1 Создание таблиц
Основным структурным компонентом базы данных является таблица, состоящая из строк (записей) и столбцов (полей). Каждая таблица содержит записи определенного вида, например о товарах, о видах упаковки и т.д.
Таблицы являются основной формой представления информации, содержащейся в базе данных. Без таблицы нельзя спроектировать формуляр, на базе таблиц составляются запросы и отчеты.
В приложении Access создать таблицу для последующего ввода в нее собственных данных можно разными способами: на основе шаблона таблицы, в режиме конструктора и путем ввода данных в пустую таблицу.
При проектировании АИС «Склад продуктовых продуктов» в основном использовался способ в режиме конструктора (см. рис.11)
Рис.11 – Пример разработки таблицы в режиме Конструктор
Создание таблицы с помощью Конструктора таблиц.
В окне базы данных выбрать Создание - Конструктор таблиц (рис.12).
Рис.12 – Создание таблицы с помощью конструктора таблиц
В окне Конструктора таблиц (рис.13) в столбце Имя поля вводятся имена полей создаваемой таблицы.
В столбце Тип данных для каждого поля таблицы выбирается из раскрывающегося списка тип данных, которые будут содержаться в этом поле.
В столбце Описание можно ввести описание данного поля, но это не обязательно.
В нижней части окна Конструктора таблиц на вкладках Общие и Подстановка необходимо ввести свойства каждого поля или оставить значения свойств, установленные по умолчанию.
После описания всех полей будущей таблицы нажать кнопку Закрыть (в верхнем правом углу окна таблицы).
На вопрос Сохранить изменения макета или структуры таблицы <имя таблицы>?, нажать кнопку Да.
В окне Сохранить как в поле Имя таблицы ввести имя создаваемой таблицы и нажать кнопку ОК.
В ответ на сообщение Ключевые поля не заданы и вопрос Создать ключевое поле сейчас? необходимо нажать кнопку Да если ключевое поле
необходимо, или кнопку Нет если такого не требуется.
Рис.13 – Окно конструктора таблиц
Необходимо отметить, что для таких полей как «код упаковки», «код поставщика», «код производителя» таблицы «Товар», «код товара», «код работника склада» таблиц «Накладная ведомость» и «Счет-фактура», используется тип Мастер подстановок, позволяющий выбирать значение поля из фиксированного списка или таблицы.
4.2 Проектирование пользовательского интерфейса
Интерфейс пользователя - эта та часть программы, которая находится у всех на виду. Некоторые программисты склонны оставлять дизайн интерфейса пользователя на потом, считая, что реальное достоинство приложения - его программный код, который и требует большего внимания. Однако часто возникает недовольство пользователей из-за неудачно подобранных шрифтов, непонятного содержимого экрана и скорости его прорисовывания, поэтому работу над интерфейсом также нужно воспринимать серьезно.
Формы - это строительные блоки интерфейса пользователя. Хороший дизайн форм включает нечто большее, чем просто добавление элементов управления и программирование процедур обработки событии. Чтобы создать хорошо спроектированную форму, необходимо понимать ее назначение, способ и время использования, а также ее связи с другими элементами программы. Кроме того в приложении может находиться несколько форм, каждая из которых будет отображаться по мере необходимости. Одни пользователи широко используют многозадачность Windows, другие предпочитают работать только с одним приложением. Необходимо помнить об этом во время разработки интерфейса пользователя и максимально реализовать все возможности Windows, чтобы пользователи с любыми навыками работы могли эффективно применять созданное приложение.
Если интерфейс пользователя должен содержать несколько форм, то необходимо принять самое важное решение: какой использовать вид интерфейса- однодокументный (SDI) или многодокументный (MDI). В SDI -приложениях окна форм появляются совершенно независимо друг от друга. Однако, не имеет значения какой тип интерфейса SDI или MDI выбран; взаимодействие пользователя с формами происходит одинаково - посредством обработки событий, поступающих от элементов управления формы. Поэтому, если в приложении предусмотрено несколько форм программу необходимо написать так, чтобы у пользователей не было возможности нарушить предписанные ход ее выполнения (например, у пользователя не должно быть средств вывести форму, для которой еще не готова информация).
4.3 Создание форм, запросов, отчетов.
Access предоставляет возможность вводить данные как непосредственно в таблицу, так и с помощью форм. Форма - это структурированное окно, которое можно представить так, чтобы оно повторяло форму бланка. Формы создаются из набора отдельных элементов управления.
Внешний вид формы выбирается в зависимости от того, с какой целью она создается. Формы Access позволяют выполнять задания, которые нельзя выполнить в режиме таблицы. Формы позволяют вычислять значения и выводить на экран результат. Источником данных для формы являются записи таблицы или запроса.
Форма предоставляет возможности для:
ввода и просмотра информации базы данных;
изменения данных;
печати;
создания сообщений.
Способы создания форм:
конструктор форм (предназначен для создания формы любой сложности);
мастер форм (позволяет создавать формы различные как по стилю, так и по содержанию);
автоформа: в столбец (многостраничная – поля для записи выводятся в один столбец, в форме одновременно отображаются данные для одной записи);
автоформа: ленточная (все поля записи выводятся в одну строку, в форме отображаются все записи);
автоформа: табличная (отображение записей осуществляется в режиме таблица);
автоформа: сводная таблица;
автоформа: сводная диаграмма;
диаграмма (создается форма с диаграммой, построенной Microsoft Graph).
Алгоритм создания форм следующий:
открыть окно базы данных;
в окне базы данных выбрать вкладку Создание – Формы;
выбрать способ создания формы и источник данных;
Создание формы с помощью Мастера
В окне диалога Создание форм (рис.14) необходимо отвечать на вопросы каждого текущего экрана Мастера и щелкать на кнопке Далее.
Рис.14 – Окно диалога Создание форм
В первом окне (рис.15) необходимо выбрать поля из источника данных (таблиц или запросов). Для этого надо открыть список Таблицы и запросы, щелкнув на кнопку, справа. Затем доступные поля требуется перевести в Выбранные поля, выделив их и щелкнув на кнопку >>.
Рис.15 – Первое окно диалога Создание форм
Далее необходимо выбрать внешний вид формы (рис.16).
Рис.16 – Окно диалога Создание форм для выбора внешнего вида формы
В следующем диалоговом окне мастера выбрать требуемый стиль формы (рис.17).
Рис.17 – Окно диалога Создание форм для выбора стиля формы
После выбора стиля формы, требуется перейти в последнее окно, щелкнув на кнопке Далее. В последнем окне Мастера требуется ввести имя формы и указать дальнейшие действия: Открыть форму для просмотра и ввода данных; Изменить макет формы.
Рис.17 – Окно диалога Создание форм для выбора стиля формы
После необходимо нажать кнопку Готово. Перейдя в режим Конструктор, можно изменить внешний вид формы, добавить элементы управления формой, меню и пр.
Форма «Товар» (рис.18) создана для ввода товара поступающего на продуктовый склад.
Рис. 18 – Форма «Товар»
Форма «Товар» создана для формирования новой записи (рис. 19)
Рис.19 – Структура формы «Товар»
Поле 1 – «Наименование товара» предназначено для ввода наименования товара
Поле 2 – поле со списком «Поставщик» формируется на основе таблицы «Поставщик». Оно позволяет выбрать наименование поставщика товара.
Поле 3 - поле со списком «Производитель» формируется на основе таблицы «Производитель». Оно позволяет выбрать наименование производителя товара.
Поле 4 - поле со списком «Упаковка» формируется на основе таблицы «Упаковка». Оно позволяет выбрать вид упаковки товара.
Поле 5 предназначен для ввода штрих-кода товара, в данном поле не может быть совпадений.
Поле 6 – поле для ввода даты производства товара.
Поле 7 – поле для ввода даты годен до.
Кнопки 8, 9, 10 предназначены для перехода на формы «Поставщик», «Производитель», «Упаковка» соответственно.
Кнопка 11 позволяет удалить запись.
Кнопка 12 позволяет сохранить запись.
Кнопка 13 позволяет обновлять записи на форме.
Кнопка 14 позволяет найти запись по введенному товару.
Кнопка 15 позволяет просмотреть отчет «Товар».
Форма «Поставщик» создана для формирования новой записи о поставщиках (рис. 20)
Рис.20 – Структура формы «Поставщик»
Поле 1 – «Название поставщика» предназначено для ввода наименования поставщика товара
Поле 2 – «Адрес» предназначено для ввода адреса поставщика.
Поле 3 - «Телефон» предназначен для ввода контактного телефона поставщика.
Флажок 4 – установка признака посредника поставщика.
Кнопка 5 позволяет сохранить запись.
Кнопка 6 позволяет удалить запись.
Форма «Производитель» создана для формирования новой записи о производителе товара (рис. 21)
Рис. 21 – Структура формы «Производитель»
Поле 1 – «Наименование производителя» предназначено для ввода наименования производителя товара.
Поле 2 – «Примечание» предназначено для ввода дополнительной информации о производителе.
Кнопка 3 позволяет сохранить запись.
Кнопка 4 позволяет удалить запись.
Форма «Производитель» создана для формирования новой записи о производителе товара (рис. 22)
Рис. 22– Структура формы «Упаковка»
Поле 1 – «Вид упаковки» предназначено для ввода вида упаковки товара.
Кнопка 2 позволяет сохранить запись.
Кнопка 3 позволяет удалить запись.
Форма «Покупатель» создана для формирования новой записи о покупателя товара (рис. 23)
Рис.23 – Структура формы «Покупатель»
Поле 1 – «Название покупателя» предназначено для ввода покупателя товара
Поле 2 – «Адрес» предназначено для ввода адреса покупателя.
Поле 3 - «Телефон» предназначен для ввода контактного телефона покупателя.
Кнопка 4 позволяет сохранить запись.
Кнопка 5 позволяет удалить запись.
Форма «Накладная ведомость» создана для формирования записей о поставляемых товарах на склад (рис. 24)
Рис.24 – Структура формы «Накладная»
Поле 1 – «Номер накладной» предназначено для ввода номера накладной
Поле 2 – предназначено для ввода даты поступления на склад.
Поле 3 - поле со списком «Оформитель накладной» формируется на основе таблицы «Оформитель накладной». Оно позволяет выбрать работника склада.
Гиперссылка 4 предназначен для перехода на форму работников склада.
Поле 5 - поле со списком «Товар» формируется на основе таблицы «Товар». Оно позволяет выбрать товар.
Кнопка 6 – позволяет перейти на форму «Товар».
Поле 7 – поле для ввода количества поступающего товара на продуктовый склад.
Поле 8 - поле со списком, содержит список выбора меры измерения товара.
Поле 9 предназначено для ввода цены закупки товара.
Кнопка 10 позволяет удалить запись.
Кнопка 11 позволяет сохранить запись.
Кнопка 12 позволяет обновлять записи на форме.
Кнопки 14, 15 позволяют просмотреть отчеты «Отчет по номеру накладной», «Отчет все накладные».
Форма «Счет-фактура» создана для формирования записей о продаваемых товарах со склада (рис. 25)
Рис.25 – Структура формы «Счет-фактура»
Запросы. Структура и назначение SQL-запросов
Запросы являются одним из основных инструментов выборки, обновления и обработки данных в таблицах базы данных. Запрос позволяет сформировать пользовательское представление о данных, не обязательно отвечающее требованиям нормализации. Результат выполнения запроса — это новая, чаще всего временная, таблица, которая существует до закрытия запроса. Структура такой таблицы определяется выбранными из одной или нескольких таблиц полями. Записи формируются путем объединения записей таблиц, участвующих в запросе. Способ объединения записей различных таблиц указывается при определении их связи. Условия отбора, сформулированные в запросе, позволяют фильтровать записи, составляющие результат объединения таблиц. Простейшие запросы могут быть созданы с помощью мастера. Любой запрос можно создать в режиме конструктора. Конструктор предоставляет удобное для пользователя диалоговое графическое средство формирования запросов, с помощью которого легко может быть построен сложный запрос.
Запрос строится на основе одной или нескольких взаимосвязанных таблиц, позволяя объединять данные, содержащиеся в них. При этом могут использоваться таблицы базы данных, а также сохраненные таблицы, полученные в результате выполнения других запросов. Кроме того, запрос может строиться непосредственно на другом запросе с использованием его временной таблицы с результатами.
Запрос позволяет выбрать необходимые данные из одной или нескольких взаимосвязанных таблиц, произвести вычисления и получить результат в виде виртуальной таблицы. Полученная таблица может использоваться в качестве источника данных в формах, отчетах, страницах доступа к данным, других запросах. Через запрос можно производить обновление данных в таблицах, добавление и удаление записей.
С помощью запроса можно выполнить следующие виды обработки данных:
включить в результирующую таблицу запроса заданные пользователем поля;
выбрать записи, удовлетворяющие условиям отбора;
произвести вычисления в каждой из полученных записей;
сгруппировать записи, которые имеют одинаковые значения в одном или нескольких полях, в одну запись и одновременно для других полей образовавшихся групп выполнить одну из статистических функций;
произвести обновление полей в выбранном подмножестве записей;
создать новую таблицу базы данных, используя данные из существующих таблиц;
удалить выбранное подмножество записей из таблицы базы данных;
добавить выбранное подмножество записей в другую таблицу.
В Access может быть создано несколько видов запроса:
запрос на выборку — выбирает данные из взаимосвязанных таблиц и других запросов. Результатом является таблица, которая существует до закрытия запроса. На основе такого запроса могут строиться запросы других видов. Таблицу с результатами запроса на выборку можно использовать для работы с данными в таблицах, на которых построен запрос. Например, через таблицу запроса можно корректировать данные в исходных таблицах базы данных. Запросы могут служить источниками записей для форм, отчетов и страниц доступа к данным;
запрос на создание таблицы — также выбирает данные из взаимосвязанных таблиц и других запросов, но, в отличие от запроса на выборку, результат сохраняет в новой постоянной таблице;
запросы на обновление, добавление, удаление — являются запросами действия, в результате выполнения которых изменяются данные в таблицах.
Запрос «Поиск товара» (рис.26) отображает информацию о введенном в окно «Поиска товара» (рис.27), его упаковки, производителе, поставщике, штрих-коде, дате производства и срока годности.
Рис.26 - Окно запуска запроса «Поиск товара»
Рис.27 – Окно конструктора запроса «Поиск товара»
Запрос в режиме SQL:
SELECT Товар.NameGoods, Товар.IDProducer, Товар.IDBatch, Товар.ShtrihCode, Товар.begin, Товар.end
FROM Производитель INNER JOIN (Упаковка INNER JOIN (Поставщик INNER JOIN Товар ON Поставщик.IDSeller = Товар.IDSeller) ON Упаковка.IDBatch = Товар.IDBatch) ON Производитель.IDProducer = Товар.IDProducer
WHERE (((Товар.NameGoods)=[Введите название товара]));
Запрос «ТоварНакладная» отображает информацию товарах в накладных ведомостях (рис.28).
Рис.28 - Окно конструктора запроса «ТоварНакладная»
Запрос в режиме SQL:
SELECT ПриходНакладная.NumberGoods, ПриходНакладная.DatePost, ПриходНакладная.Colvo, ПриходНакладная.Mera, ПриходНакладная.CenaZakup, Товар.NameGoods, Товар.ShtrihCode, Товар.begin, Товар.end, ПриходНакладная.IDSklad
FROM Товар INNER JOIN ПриходНакладная ON Товар.IDGoods = ПриходНакладная.IDGoods;
Запрос «ТоварНакладная1» (рис.29)отображает информацию по введенному номеру накладной (рис.30).
Рис.29 - Окно запуска запроса «ТоварНакладная1»
Рис.30 - Окно конструктора запроса «ТоварНакладная1»
Запрос в режиме SQL:
SELECT ПриходНакладная.NumberGoods, ПриходНакладная.IDGoods, ПриходНакладная.IDWorker, ПриходНакладная.DatePost, ПриходНакладная.Colvo, ПриходНакладная.Mera, ПриходНакладная.CenaZakup
FROM ПриходНакладная
WHERE (((ПриходНакладная.NumberGoods)=[Введите номер накладной]));
Запрос «ТоварСчет-фактура» (рис.31) отображает информацию товарах в счет-фактуре.
Рис.31 - Окно конструктора запроса
SELECT СчетФактура.CountNumber, СчетФактура.IDGoods, Покупатель.Company, СчетФактура.COLprod, СчетФактура.CenaProdag, СчетФактура.Cash, ВыдавшийСчетФактуру.Worker, [CenaProdag]*[COLprod] AS [SUM]
FROM Покупатель INNER JOIN (ВыдавшийСчетФактуру INNER JOIN СчетФактура ON ВыдавшийСчетФактуру.IDWorker = СчетФактура.IDWorker) ON Покупатель.IDClient = СчетФактура.IDClient
GROUP BY СчетФактура.CountNumber, СчетФактура.IDGoods, Покупатель.Company, СчетФактура.COLprod, СчетФактура.CenaProdag, СчетФактура.Cash, ВыдавшийСчетФактуру.Worker, [CenaProdag]*[COLprod], СчетФактура.Sum
HAVING (((СчетФактура.CountNumber)=[введите номер счет фактуры]));
Структура отчетов
Отчеты представляют собой наилучшее средство представления информации из базы данных в виде печатного документа. Средства Access по разработке отчетов предназначены для конструирования макета отчета, по которому может быть осуществлен вывод данных в виде выходного печатного документа. Эти средства позволяют создавать отчет сложной структуры, обеспечивающий вывод взаимосвязанных данных из многих таблиц, их группировку и вычисления данных. При этом могут быть выполнены самые высокие требования к оформлению документа.
По сравнению с другими методами вывода данных на печать, отчеты обладают двумя принципиальными преимуществами:
предоставляют широкие возможности для группировки и вычисления промежуточных и общих итогов для больших наборов данных;
могут быть использованы для получения красиво оформленных заказов на покупку, почтовых наклеек, материалов для презентаций и других документов, которые могут понадобиться для успешного ведения бизнеса.
В отчете каждая группа данных и итоги по ней могут быть представлены отдельно. Можно выделить следующие возможности:
для обеспечения иерархического представления данных можно задать до 10 уровней группировки;
для каждой из групп можно задать отдельные заголовки и примечания;
можно производить сложные вычисления не только внутри группы или набора строк, но и по нескольким группам одновременно;
к верхнему и нижнему колонтитулу можно задать заголовок и применение для всего отчета;
можно вставлять в любой раздел отчета рисунки или диаграммы;
можно внедрять подчиненные отчеты.
Отчеты Access подразделяются на шесть категорий (макетов).
Одностолбцовые отчеты. В них в одном длинном столбце перечисляются значения каждого поля каждой записи таблицы или запроса. Надписи указывают имя поля таблицы или запроса, а справа от надписей приведены значения. Эти отчеты применяются редко: их распечатка требует большого расхода бумаги.
Ленточные отчеты. В таких отчетах для каждого поля таблицы или запроса предоставляется озаглавленный столбец, а значения каждой записи помещаются в отдельную строку.
Многостолбцовые отчеты. Они создаются из одностолбцовых отчетов. Для этого применяется "газетный" вариант размещения "змейкой", предусмотренный в приложениях настольных издательских систем и текстовых редакторах.
Отчеты с группированием данных. Самый популярный тип отчетов. Такие отчеты позволяют вычислять итоговые значения для групп записей и представляют информацию в удобном для использования виде.
Почтовые наклейки. Особый тип многостолбцовых отчетов, создаваемых для печати имен и адресов в группах.
Сводные отчеты. Такие отчеты содержат подчиненные отчеты. При этом каждый подчиненный отчет создается на основе независимых источников данных, например, таблиц или запросов.
В первых пяти отчетах в качестве источника данных применяют таблицу или запрос, подобно формам. Отчеты такого рода называют присоединенными к источнику данных.
Перед началом конструирования отчета необходимо спроектировать его макет, т.е. определить состав и содержание разделов отчета, размещение в нем значений, выводимых из полей таблиц (запросов) базы данных, и вычисляемых реквизитов, поля, по которым необходимо группировать данные. Для каждого уровня группировки определяются заголовки и примечания, вычисляемые итоговые значения. Кроме того, оформляются заголовки и подписи реквизитов отчета и определяется порядок вывода данных в отчете.
Отчет может создаваться с помощью мастера или в режиме конструктора отчетов. Во многих случаях удобно использовать мастера отчетов. Созданный мастером отчет можно доработать в режиме конструктора.
При необходимости вывода в отчете результатов решения задачи, в качестве основы для отчета может быть использован многотабличный запрос. На запрос могут быть возложены наиболее сложные виды выборки и предварительной обработки данных. Разнообразные возможности конструктора отчетов позволяют легко структурировать и оформить полученные в запросе данные.
Отчет по запросу «Поиск товара» (рис.32) отображает информацию о товаре, его штрих-коде, производителе, упаковке, дате изготовления, сроке годности.
Рис.32 – Отчет по определенному товару
Отчет по таблице «Товар» (рис.33) отображает информацию о товаре на складе.
Рис.33 – Отчет по таблице «Товар»
Отчет по запросу «ТоварНакладная» (рис. 34) отображает информацию о накладных товара склада.
Рис.33 – Отчет по запросу «ТоварНакладная»
Отчет по запросу «ТоварСчет-фактура» (рис.34) отображает информацию о введенном номере счет-фактуры.
Рис.34 – Отчет по запросу «ТоварСчет-фактура»
