Прикладное программное обеспечение деятельности мелкооптового книжного магазина

Задача 2

Разработать прикладное программное обеспечение деятельности мелкооптового книжного магазина.

Менеджер магазина, изучив спрос на книжную продукцию в городе, принимает решение о закупке партии книг в том или ином издательстве. Некоторые пользующиеся повышенным спросом книги могут быть закуплены у посредников. Часть продукции заказывается через Internet. Покупателем в мелкооптовом магазине может быть любой человек или организация, при условии, что величина покупки превысит 1 тыс. р. Расчет с организациями производится через банк. Расчет с физическими лицами – наличными. Покупателю выписывается счет-фактура, имеющая уникальный номер и содержащая список книг с указанием их стоимости. После уплаты указанной суммы покупатель получает товар на складе.

Разумно, выбрал в качестве инструмента Microsoft Access 2007 — рекордсмена среди существующих СУБД по времени разработки приложения, и запланировали перевод базы данных на платформу SQL Server 2005, т.к. при отслеживании платежей по квартплате число записей в таблице лицевых счетов достигнет 200—500 тыс., а это уже несколько превышает возможности MS Office Access 2007.

Таблица 1 - Набор данных

Поле

Тип

Размер

Описание

1

Provider

Текстовый

40

Поставщик книг

2

INN

Текстовый

10

ИНН поставщика книг

3

Address

Текстовый

60

Юридический адрес поставщика

4

Bank

Текстовый

60

Банк поставщика книг

5

Account

Текстовый

20

Номер счета в банке

6

Sign

Логический

1

Признак посредника

7

Film

Текстовый

20

Название книги

8

Author

Текстовый

60

Авторы

9

Comment

Поле Memo

Авто

Краткое содержание книги

10

Pages

Числовой

3

Количество страниц

Продолжение таблицы 1

11

Company

Текстовый

40

Издательство

12

Year

Числовой

4

Год издания

13

Cost

Денежный

15

Стоимость приобретения

14

Cdrom

Логический

1

Наличие компакт-диска к книге

15

Customer

Текстовый

20

Название покупателя

16

CustomerSign

Логический

1

Признак покупателя (юр./физ.)

17

INNcustomer

Текстовый

10

ИНН покупателя

18

AddressCust

Текстовый

60

Юридический адрес покупателя

19

Chief

Текстовый

60

Директор

20

BankCustomer

Текстовый

60

Банк покупателя

21

Phone

Текстовый

10

Телефон для связи

22

District

Текстовый

15

Район города

23

AccountCust

Текстовый

20

Номер счета покупателя в банке

24

CountNumber

Числовой

4

Номер счет-фактуры

25

DateStart

Дата/ время

Авто

Дата выписки счет-фактуры

26

Value

Денежный

15

Сумма к уплате

27

Worker

Текстовый

60

Выдавший счет-фактуру

28

Tax

Денежный

15

Величина налога с продаж

29

Plus

Поле Memo

Авто

Примечания

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

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

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

СУБД (система управления базами данных) — программное обеспечение, с помощью которого пользователи могут создавать, модифицировать базу данных и осуществлять к ней контролируемый доступ. СУБД непременно взаимодействует с прикладными программами пользователя и самой базой данных.

Для работы СУБД и прикладных программ необходимо аппаратное обеспечение, которое также является частью информационной системы и может варьироваться в очень широких пределах от единственной персоналки до сети из многих компьютеров. В настоящее время существует больше сотни различных СУБД от персональных компьютеров до мэйнфреймов. Подавляющее большинство из них работает с базой данных, в основе которой лежит реляционная модель. На сегодняшний день известны три модели данных: иерархическая, сетевая и реляционная. Microsoft Office Access 2007 и Microsoft SQL Server 2005 — это реляционные СУБД.

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

Удаление поля из таблицы, используемой приложением, повлияет на его работу. Приложение придется модифицировать.

Теперь займемся проектированием эффективной структуры данных. Теория реляционной базы данных была разработана в начале 70-х годов прошлого века Коддом (E.F. Codd) на основе математической теории отношений. В реляционной базе данных все данные хранятся в виде таблиц, при этом все операции над базой данных сводятся к манипуляциям таблицами. Основными понятиями в этой теории являются: таблица, строка, столбец, индекс, первичный и внешний ключи, связи. Таблица состоит из строк и столбцов и имеет уникальное имя в базе данных. База данных содержит множество таблиц, связь между которыми устанавливается с помощью совпадающих полей. В каждой из таблиц содержится информация о каких-либо объектах одного типа. Приступая к созданию нового приложения, главное — самым тщательным образом спроектировать структуру его таблиц. Если не уделить структуре должного внимания, то в лучшем случае это может проявиться в неэффективной работе приложения, а в худшем — в невозможности реализации некоторых требований к системе в целом. И, наоборот, при хорошей организации набора таблиц будут решены не только текущие проблемы, но и потенциальные, которые в данный момент вы не могли предвидеть.

В общем, структура данных является определяющим фактором успеха или провала всего приложения. Э.Ф. Кодд доказал, что, следуя при создании таблиц и связей между ними только немногим формализованным правилам, можно обеспечить простоту манипулирования данными. Его методика получила наименование нормализации данных. Теория реляционных баз данных основана на концепции использования ключевых полей для определения отношений между таблицами. Чем больше таблиц, тем больше отношений требуется определить, чтобы связать их между собой. Из теории Кодда отнюдь не следует, что каждая таблица должна быть напрямую связана с любой другой таблицей. Но, поскольку каждая таблица связана хотя бы с одной таблицей в базе данных, можно утверждать, что все таблицы в базе имеют прямые или косвенные отношения друг с другом. Мы установили, какие поля будут включены в базу данных. Следующий этап состоит в разделении их на таблицы.

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

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

  • Включайте поля, относящиеся только к предметной области таблицы. Поле, представляющее факт из другой предметной области, должно принадлежать другой таблице. Позже, при установлении отношений между таблицами, вы увидите, как можно объединить данные нескольких полей из разных таблиц. А на этом этапе убедитесь, что каждое поле таблицы описывает только одну предметную область. Если вы обнаружите, что в разных таблицах встречается однотипная информация, значит, какие-то таблицы содержат лишние поля.
  • Не включайте производные или вычисляемые данные. В большинстве случаев вам нет необходимости хранить результаты вычислений в таблице. С помощью Microsoft Access вы всегда сможете выполнить данные вычисления в нужный момент. Не имеет смысла хранить итоговые поля в таблице.
  • Включите всю необходимую информацию. Довольно легко упустить важные данные. Вернитесь к собранным на первой стадии проектирования материалам. Внимательно рассмотрите бланки и отчеты и убедитесь в том, что вся интересующая вас информация может быть извлечена или вычислена из таблиц. Подумайте о вопросах, которые вы будете формулировать к базе данных. Сможете ли вы получить на них ответ, используя данные из ваших таблиц? Включили ли вы поля, в которых будут храниться уникальные данные типа кода клиента? Какие таблицы содержат информацию, обязательную для создания отчета или формы?
  • Разделите информацию на наименьшие логические единицы. Вам может показаться, что удобно иметь одно поле для хранения полного имени клиента или одно поле для названия и описания продукта. Это ошибка. Если вы объединяете более одной категории информации в одном поле, потом вам будет очень не просто выделить из него отдельные факты. Постарайтесь разбить информацию на наименьшие логические части.

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

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

Рисунок 1 - Многотабличная база данных Real Estate

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

Запустите Microsoft Access 2007 на вашем компьютере. Для этого нажми-те кнопку Пуск и выберите в появившемся меню пункт Все программы.

Появится список программ, установленных на компьютере. Выберите пункт Microsoft Office. На экране появится стартовое окно Приступая к работе с Microsoft Office Access (рисунок 2).

Щелкните по пиктограмме Новая база данных. На месте списка ранее открывавшихся баз данных появится окно Новая база данных. Нажмите кнопку Создать. Будет создана новая база данных и открыта таблица Таблица1 в режиме таблицы (рисунок 3).

Существует несколько способов создания таблиц в Microsoft Office Access 2007:

  • создание новой пустой таблицы;
  • создание новой таблицы на основе шаблона таблицы;
  • создание таблицы на основе нового списка на узле SharePoint;
  • создание таблицы с помощью импорта внешних данных;
  • создание таблицы при помощи конструктора.

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

Для создания новой таблицы на основе шаблона таблицы выберите на вкладке ленты Создание пункт Шаблоны таблиц. Откроется меню шаблонов с пунктами Контакты, Задачи, Вопросы и т.д. Выбирайте нужные детали и проектируйте свою таблицу!

Использование третьего способа дает возможность значительно расширить список шаблонов, обративших к узлу Интернета SharePoint, указав его URL-адрес.

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

Если вы заняты разработкой своего первого приложения и ваши намерения достаточно серьезны, то воспользуйтесь конструктором таблиц. Выберите на вкладке ленты Создание пункт Конструктор таблиц. Откроется окно конструктора с именем новой таблицы Таблица 1 (рис. 1.5). В окне три колонки. Первые две (Имя поля и Тип данных) будут использоваться приложением, а третья (Описание) предназначена только для разработчика.

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

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

Создадим нашу первую таблицу Касса. Рассмотрим действия по созданию таблицы подробнее (рисунок 4).

  1. Введите в первую колонку имя первого поля PASSAGE и нажмите клавишу <Enter>. Курсор переместится во вторую колонку Тип данных. По умолчанию будет назначен тип Текстовый.
  2. Раскройте список типов данных. Раскрыть список можно при помощи мыши. Выберите тип Числовой и нажмите клавишу <Enter>. Заполните колонку Описание. Не ленитесь, пишите подробнее!
  3. Переведите курсор в область Свойства поля. По умолчанию в качестве размера поля стоит значение Длинное целое.
  4. Сделайте щелчок мышью на этом поле. Раскроется список подтипов числового типа. Выберите подтип Целое.
  5. Оставьте незаполненным Формат поля. Перейдите сразу к строке Число десятичных знаков.
  6. Повторите шаги 1—5 для всех оставшихся полей таблицы.


Рисунок 4 - Таблица Поставщик в режиме конструктор

После занесения данных обо всех полях таблицы просто закройте окно конструктора таблиц. Появится диалоговое окно Сохранение, запрашивающее подтверждение на сохранение структуры таблицы (рисунок 5). Нажмите кнопку Да, а в появившемся окне вместо названия Таблица1 введите имя Касса и щелкните по кнопке OK.

Аналогичным образом создадим все наши таблицы: пассажир, станции, состав, рабочие.

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

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

Простой первичный ключ — это индекс, созданный по ключевому полю таблицы.

Составной первичный ключ — это индекс, созданный по ключевой связке полей таблицы.

Первичный ключ у любой таблицы может быть только один. Этого требует теория нормализации.

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

Для его создания выполните следующие действия:

  1. Откройте таблицу Касса в режиме конструктора. Для этого в окне Все объекты Access базы данных Real Estate выделите таблицу касса и щелкните по ней правой кнопкой мыши. Появится меню. Выберите в нем второй пункт — Конструктор.
  2. Выделите поле DATE, нажав на кнопку выделения поля в левой части бланка структуры таблицы. Строчка, относящаяся к этому полю, будет выделена рамкой.
  3. Сделайте щелчок мышью по пиктограмме Ключевое поле вкладки Конструктор ленты главного окна Microsoft Office Access 2007. Такой же ключ появится возле поля DATE.
  4. Закройте окно конструктора таблиц.
  5. Появится диалоговое окно, сообщающее о том, что структура таблицы была изменена. Подтвердите сохранение.

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

Определим связь между таблицами касса и состав. Это связь "один-ко-многим".

  1. Сделайте активной вкладку Работа с базами данных ленты главного окна Microsoft Access 2007. Выберите пиктограмму Схема данных
  2. Выполните щелчок правой кнопкой мыши в любом свободном месте появившегося окна с названием Схема данных.
  3. В появившемся меню выберите первый пункт Добавить таблицу.
  4. Появится диалоговое окно Добавление таблицы. Раскройте вкладку Таблицы.
  5. Таблица касса появится в окне Схема данных. Выполните аналогичные действия с таблицей состав.
  6. Связь между таблицами касса и состав строится по значению одноименных полей DATE. Появится диалоговое окно Изменение связей.

  1. Поставьте флажок в поле Обеспечение целостности данных и нажмите кнопку Создать для подтверждения создания связи и перехода в окно Схема данных. Microsoft Access 2007 использует назначенные связи при создании форм, запросов и отчетов, которые требуют данных из рассмотренных выше таблиц.

Рисунок - Создание связи «один-к-многим»

Прикладное программное обеспечение деятельности мелкооптового книжного магазина