Простое приложение в Microsoft Visual FoxPro
« Назад Для получения начальных сведений о системе рассмотрим простое приложение, управляющее базой данных "Домашняя библиотека". Назначение приложения – предоставить пользователю информацию о состоянии его личной библиотеки. В состав приложения входят:
База данных HomeLibrary содержит сведения о книгах домашней библиотеки и их авторах. Ее таблицы перечислены в табл. 2.1. Таблица 2.1
Таблицы базы данных HomeLibrary
База данных, ее таблицы, а также их индексы сохраняются в виде файлов, имеющих соответственно расширения DBC, DBF и CDX. Файлы, сопутствующие этим файлам, с расширениями DCT и FPT хранят данные неограниченной длины – так называемые memo-данные. В приведенной модели содержатся сведения о трех объектах: книгах, их авторах и видах литературных произведений. Поля рассматриваемых таблиц описаны в табл. 2.2. Таблица 2.2
Поля таблиц базы данных HomeLibrary
Замечание. Представленные таблицы базы данных крайне скупо отображают взятую предметную область. Однако их расширение нецелесообразно, поскольку существенно усложнит восприятие материала. При проектировании таблиц устраняются избыточность данных и описанные в разд. 14.3.2 аномалии. В частности, для этих целей введена таблица BooksAuthors. Поля AuthorId и BookId введены для однозначного распознавания объектов – авторов и их книг. Имена подобных полей принято завершать первыми двумя буквами глагола Identify – опознавать. Уникальность значений этих полей, если они целочисленные, может быть обеспечена, если задать их тип как Integer (AutoInc). Такое поле недоступно для редактирование и его значение при добавлении новой записи автоматически наращивается VFP. В рассматриваемой базе такой тип указан для полей BookId и TypeId соответственно таблиц Books и WorkType. Таблицы, несущие дополнительные сведения об объектах, собственных полей-идентификаторов не имеют. К таковым относятся таблицы BooksAuthors и BooksContent. Индексы таблиц базы данных перечислены в табл. 2.3. Таблица 2.3
Индексы таблиц базы данных HomeLibrary
Индексы нужны для быстрого поиска данных и надлежащего их упорядочивания в режиме просмотра. Кроме того, выборка по индексированным полям выполняется существенно быстрее, чем по неиндексированным. Первичные индексы, вдобавок, употребляются для установления межтабличных связей. Тип Candidate индексов BookIdName и WorkType указывает на уникальность значений индексных выражений. Базу данных создадим в проекте, который так же назовем HomeLibrary (рис. 2.1). Рис. 2.1. Проект HomeLibrary; вкладка Data Новый проект, а точнее диспетчер проекта, открывается при выборе пункта New подменю File и последующем выборе переключателя Project и нажатии на кнопку New file в диалоге New, фрагмент которого приведен на рис. 2.2. Рис. 2.2. Создание нового проекта Файл проекта имеет расширение PJX. Memo-данные проекта хранятся в файле с расширением PJT. Имеются и иные способы создания нового проекта, например можно для активизации окна (рис. 2.2) нажать Ctrl+N или воспользоваться иконкой стандартной панели управления, или набрать в командном окне create project && или: modify project и нажать на Enter. Замечания: 1. Командное окно, если оно закрыто, появляется на экране при нажатии на Ctrl+F2. 2. Приведенный на рис. 2.2 диалог будет нами неоднократно употребляться для создания файлов разных типов. При открытии диспетчера проекта укажем имя файла проекта HomeLibrary.pjx в папке d:\HomeLibrary. (В этой же папке будем держать базу данных HomeLibrary и ее таблицы) Перейдем в диспетчере на вкладку Data (см. рис. 2.1) и добавим базу данных (кнопка New), указав в качестве имени файла HomeLibrary.dbc. Затем, оперируя кнопками New и при необходимости Modify, создадим DBF-файлы таблиц с именами, приведенными в табл. 2.1, и сформируем поля и индексы таблиц в соответствии с табл. 2.2 и 2.3. Порядок выполнения этих операций очевиден и поэтому не обсуждается. Примеры записей в таблицах базы данных приведены на рис. 2.3 – 2.7. Рис. 2.3. Фрагмент таблицы Authors Рис. 2.4. Фрагмент таблицы Books Рис. 2.5. Номера книг и их авторов в таблице BooksAuthors Рис. 2.6. Содержание книг с номерами 1 и 2 и типы произведений в таблице BooksContent Рис. 2.7. Фрагмент таблицы WorkType Из рис. 2.7. видно, что при отображении поля WorkType используется заголовок "Вид произведения". Он задан на вкладке Fields проектировщика таблицы (рис. 2.8). Рис. 2.8. Фрагмент вкладки Fields проектировщика таблиц Такая возможность предоставляется только для полей таблиц, принадлежащих базе данных. |