
- •В. П. Агальцов
- •Москва «мир» 2002
- •Примеры
- •Примеры
- •Контрольные вопросы
- •Глава 1
- •Третий этап проектирования базы данных: задание первичных и альтернативных ключей
- •Глава 2
- •2 8.2. Освобождение таблицы
- •Index — закрывает все индексные файлы в текущей рабочей об- асги, за исключением структурного мультииндексного файла.
- •Контрольные вопросы
- •Глава 3
- •Удаление тега из мультииндексного файла
- •Вывод на экран имен индексных файлов и имен тегов
- •Примеры
- •If !empty(tag(nCount)) && Проверка наличия тегоз
- •Контрольные вопросы
- •Как удалить тег из мультииндексного файла?
- •Укажите команды для вывода на экран имен индексных файлов и имен индексов (тегов) внутри индексного файла.
- •Глава 4
- •Часто употребляемые опции команд foxpro
- •Сортировка данных
- •4.1. Поиск данных с помощью Главного меню.
- •Фильтрация данных
- •4.5. Примеры
- •4.6. Контрольные вопросы
- •Глава 5
- •Понятие рабочей области
- •Организация взаимосвязи «один-к-одному»
- •Установление взаимосвязи «один-ко-многим»
- •Установление взаимосвязей с помощью главного меню
- •Объединение двух табличных файлов в один файл
- •Корректировка данных в связанных таблицах
- •Создание итогового табличного файла
- •Примеры
- •Контрольные вопросы
- •Глава 6
- •Создание программного файла
- •Запуск программного файла
- •Ignore — продолжить выполнение программы.
- •Модульность программ
- •Область действия переменных
- •Простейшие вычисления
- •Примеры
- •Контрольные вопросы
- •Присвоение значений
- •Команды для работы с переменными
- •Команды для работы с массивами
- •Команды ввода-вывода
- •Функции для работы с массивами
- •Команды циклов
- •Команды ветвления алгоритма
- •Команда ветвления алгоритма на много направлений
- •Примеры
- •9 15, 2 && Задает место на экране
- •Контрольные вопросы
- •Команда создания и отображения меню на экране
- •Команда фиксации выбора пользователя
- •Примеры
- •0 12.32 Prompt 'Выход' message 'Завершение программы' menu то peri
- •ScSc Вывод в специальное окно системного сообщения
- •Контрольные вопросы
- •Какими командами клавишного меню фиксируются ошибки работы программы?
- •Что такое стек? Как сохраняются и как извлекаются клавишные команды из стека?
- •Укажите команды для обработки кодов нажатых клавиш.
- •Примеры
- •0 10.2 Say 'Тигры'
- •0 12.2 Say 'Котята'
- •13. Контрольные вопросы
- •Примеры
- •0 8,40 Say 'Волга'
- •If messagebox('Фамилия не найдена',;
- •If messagebox{'Имя не найдено',;
- •Контрольные вопросы
- •Глава 11
- •Примеры
- •Insert into Fam values(101, 'Байрон')
- •Контрольные вопросы
- •Вычисление абсолютного значения
- •If eof('Catalog') && Определение конца таблицы
- •Recall all ь& Со всех записей таблицы Author снять пометку к удалению
- •Определение конца файла
- •2000 Году: ' ;
- •Определение количества полей в открытой базе данных
- •Поиск значения поля по значению другого поля
- •&& Возвращает ega/Color
- •Определение общего объема оперативной памяти
- •7 ?Aykent(100000,0.1,2) && выводит на экран 56719.05
- •2 Кинуты.
- •Примеры
- •Контрольные вопросы
- •140010, Г , 1юберцы Московской обл.. Октябрьский пр-т. 403. Тс- 554-21-86
- •0 11,10 Prompt 'с начала'
- •1 Строки
Третий этап проектирования базы данных: задание первичных и альтернативных ключей
Для каждой структурной единицы фирмы определяются атрибуты (данные), которые будут храниться в базе данных, а также первичный и альтернативный ключи. Добавление ключей в список концептуальных требований необходимо дтя обеспечения орга- низации движения потоков информации между структурными подразделениями фирмы, в соответствии со вторым этапом проектирования базы данных. Кроме того, при анализе концептуальных требований определяется, какие алгоритмы и расчеты исходных величин (хранимые процедуры) будут храниться вместе с базой данных. При этом количество хранимых процедур до,1жно быть минимальным.
Четвертый этап проектирования базы данных: приведение модели к требуемому уровню нормальной формы
На этом этапе проектирования выполняется главная задача — нормализация отношений. В процессе нормализации концептуальные требования группируются в таблицы. На этом этапе проектирования концептуальные требования для каждого структурного подразделения могут быть сведены либо в одну таблицу, либо в несколько таблиц. Здесь также решается вопрос ликвидации избыточной информации, то есть концептуальные требования, используемые несколькими структурными подразделениями, сводятся в одну таблицу с одновременным добавлением ключей лля перехода в другие таблицы (для других структурных подразде- ™*)- Таким образом добиваются существенного сокращения °бьема памяти. На этом этапе также решается вопрос о том, какие блицы будут справочниками, то есть информация в этих таблицах не изменяется или изменяется очень медленно. Следует иметь вНцу, что чрезмерное увеличение количества таблиц приводит к нот130 0бщей идеи создания базы данных, и сама база данных стаится трудной для понимания и управления. Для базы данных
объема предприятия оптимальное количество таблиц должно быть не более сорока или пятидесяти.
Всего существует пять нормальных форм таблицы. При создании приложений баз данных в объеме предприятия используют первые три нормальные формы.
Первая нормальная форма
Для таблицы будут выполнены условия первой нормальной формы, если:
каждое поле (концептуальное требование) неделимо;
отсутствуют повторяющиеся поля или группы полей.
Если перечисленные выше условия выполняются, то все концептуальные требования могут быть сведены либо в одну общую таблицу, либо можно создать по одной таблице для каждого структурного подразделения.
Вторая нормальная форма Условия второй нормальной формы:
выполняются условия первой нормальной формы;
первичный ключ однозначно определяет всю запись;
все поля зависят от первичного ключа;
первичный ключ не должен быть избыточным.
Сохраняя первичные и альтернативные ключи, назначенные на третьем этапе, назначаем, при необходимости, дополнительные первичные и внешние ключи, в результате чего выделяем из таблицы структурного подразделения одну или несколько таблиц. Таким образом, данные для одного структурного подразделения могут быть представлены как одной таблицей, так и несколькими таблицами. Переход между таблицами разных структурных подразделений осуществляется по первичным ключам, назначенным на третьем этапе, а переход между таблицами внутри одного структурного подразделения осуществляется по первичным ключам, назначенным при выполнении второй нормальной формы.
Третья нормальная форма
Условия третьей нормальной формы:
выполняются условия второй нормальной формы;
каждое не ключевое поле не должно зависеть от другого не ключевого поля.
При выполнении третьей нормальной формы должны быть разрушены транзитивные связи внутри каждой таблицы. При этом одно (или несколько) зависимых не ключевых полей выделяются в новую таблицу с обязательным добавлением первичных ключей для связи вновь выделенной таблицы с другими таблицами.
После выполнения четвертого этапа проектирования должна быть получена структура базы данных: количество таблиц, список атрибутов (концептуальных требований), которые хранятся в каждой таблице, первичные и внешние ключи для перехода между таблицами, виды взаимосвязей между таблицами и список хранимых процедур.
Пятый этап проектирования базы данных: физическое описание модели
На этом этапе каждая таблица, созданная на четвертом этапе:
получает свое имя, под которым она будет храниться в базе данных;
каждый атрибут (концептуальное требование) таблицы получает свое имя, тип и размер;
для каждого ключа, как первичного, так и внешнего, определяются его характеристики: Primary' — первичный (обязательно уникальный), Candidate — альтернативный (обязательно уникальный), Maintain — внешний (может быть как уникальным, так и не уникальным) |5].
На пятом этапе также предусматриваются меры по обсспече- нию ссылочной целостности, то есть установление между таблицами не противоречивых взаимосвязей. Установление не противоречивых взаимосвязей и обеспечение достоверности в данных в любой момент времени является главной и самой трудоемкой
задачей.
В результате выполнения работ по пятому этапу можно определить технические характеристики персонального компьютер- объем оперативной памяти, объем памяти на жестком диске и т. д.
СРЕДСТВА БЫСТРОЙ РАЗРАБОТКИ ПРИЛОЖЕНИЙ
Необходимость создания большого числа прикладных программ различного назначения привела к пересмотру инструментов создания компьютерных программ. В традиционном программировании на нервом месте стоит написание программных кодов по вычислению тех или иных величин, а затем создаете интср фейса. Традиционный путь создания прикладных программ достаточнодлинный и трудоемкий.
С целью увеличения производительности труда программиста и сокращения времени создания прикладных программ разрабо таны средства быстрой раоработки приложений — RAD (Rapid Application Development). Разработка компьютерных программ с использованием RAD предусматривает два этапа:
создание интерфейса;
написание программных кодов по вычислению значений или выполнению различных операций (поиск, сортировка, фильтрация и т. д.).
Наиболее трудоемкая часть работы программиста — создание интерфейса — автоматизирована и сводится к размещению элементов интерфейса на специальном поле формы. При этом геометрические размеры и место расположения элемента интерфейса описываются программными кодами автоматически Изменение размеров и положения элемента интерфейса производится традициошшми приемами, предусмотренными в WINDOWS, с автоматической корректировкой программных кодов. Программисту остается написать в специальном месте программные коды, которые описывают реакцию на выбор элемен та интерфейса. Например: если выбрана кнопка «Поиск», то программные коды, описывающие реакцию на выбор кнопки, содержат описание одного из методов поиска.
Среда программирования, содержащие средства RAD, долж ны иметь:
объектно-ориентированный язык программирования;
визуальные средства разработки, то есть средства графиче^ ского создания интерфейса;
возможность создания индивидуальных элементов интерфейса на основе стандартных элементов;
е возможность создания программных продуктов по технологии клиент-сервер;
поддержку* различных протоколов обмена дашшми.
СРАВНИТЕЛЬНЫЙ АНАЛИЗ СИСТЕМ УПРАВЛЕНИЯ БАЗАМИ ДАННЫХ (СУБД)
/. Access
СУБД Access проста в изучении и эксплуатации и поэтому доступна для пользователей с низкой квалификацией, снабжена обширными средствами по созданию отчетов различной степени сложности, создаваемых на основе таблиц различных форматов. Как правило, Access используется для создания личных баз данных (справочники, записные книжки и т. д.), не имеющих коммерческого распространения.
SQI.-Server
Эта СУБД обеспечивает высокую степень защиты данных, как от случайных потерь, так и от несанкционированного доступа, обладает развитыми средствами обработки данных и хорошим быстродействием. SQL-Server предназначен для хранения большого объема данных.
Visual Basic
Visual Basic не требовательна к техническим характеристикам персонального компьютера. Так как Visual Basic является продуктом фирмы Microsoft, то легко интегрируется со всеми приложениями Microsoft Office и многими приложениями, интегрированными в WINDOWS. Предназначен Visual Basis для создания небольших приложений, в которых не требуются большие вычисления и серьезная обработка данных.
4- Visual C++
самая екоростная среда программирования, обеспечиваю- Шая выполнение расчетов и обработку данных любой сложности, совместима практически со всеми известными приложени-
Visual FoxPro
СУБД Visual FoxPro предназначена для создания приложений баз данных объема предприятия, обладает хорошим быстродействием и устанавливается на различные платформы [5J.
ПРИМЕР
Создать базу данных для книжного издательства.
На первом этапе проектирования базы данных изучается, структура организации (издательства) и собираются концептуальные требования. В результате изучения организации работы издательства выяснилось, что имеются следующие рабочие груп-* пы (отделы), которые используют информ щию по учету издаваемых книг:
группа маркетинга — хранит, редактирует каталог изданных книг и создает различные рекламные листовки, буклеты и т.д.;
торговая группа — подбирает комплект книг для заказчика, оформляет заказ на покупку книг и фиксирует всех заказчик ков (покупателей);
группа планирования - определяет список книг, которые i надо издать, веде переговоры и заключает договоры с авто* рами книг;
материальная группа — по оплаченному счету выписывае1| расходную накладную и выдает книги покупателю.
Для нормальной работы группы маркетинга необходима еле-1 дующая информация (концептуальные требования):
фамилия, имя и отчество автора (авторов) книги;
название книги;
место (город) издания книги;
год издания книги;
объем книги в страницах;
цена одного экземпляра книги;
тип оформления книги;
сведения о торговых скидках.
Для нормальной работы торговой группы необходима слеДУ "| ющая информация (концептуальные требования):
а) сведения о продавце:
фамилия, имя и отчество продавца;
должность;
дата рождения;
оклад;
образование;
дата поступления на работу;
б) сведения о клиенте:
наименование фирмы;
адрес фирмы;
телефон;
факс;
фамилия, имя и отчество покупателя;
признак юридического лица;
в) сведения о заказе:
дата оформления заказа;
наименование книги;
количество;
цена за один экземпляр;
размер торговой скидки;
сумма заказа;
способ оплаты.
Для нормальной работы материальной группы необходима следующая информация (концептуальные требования):
а) сведения о счете:
дата оплаты;
оплаченная сумма;
пометка об оплате;
б) сведения о продаже:
Дата отпуска книг со склада;
наименование книги;
количество;
Цена за один экземпляр;
размер торговой скидки;
сумма заказа;
способ оплаты;
номер склада;
фамилия, имя и отчество кладовщика;
фамилия, имя и отчество представителя заказчика, кому выдан заказ;
паспортные данные представителя заказчика.
Для нормальной работы группы планирования необходима следующая информация (концептуальные требования):
фамилия, имя и отчество автора (авторов);
образование;
ученая степень;
ученое звание;
дата рождения;
адрес автора (авторов);
наименование книги;
дата сдачи рукописи;
объем книги (в печатных листах);
номер договора;
сведения об авторских правах.
В результате проведенной работы выявлены четыре служб: (отдела), которые хранят, создают, редактируют и использую! информацию, и определены концептуальные требования.
На втором этапе проектирования базы данных определяю сущности и взаимосвязи между сущностями. В результате анализа концептуальных требований получим следующую схему (рис. 1.12).
На третьем этапе проектирования базы данных определяем первичные и внешние ключи для перехода между сущностями.
Исходя из рис. 1.12, можно сделать вывод, что сущность Клиент будет родительской, так как один клиент может сделать несколько заказов и оплатить несколько счетов, в то время как каждый заказ принадлежит только одному клиенту и оплату счета производит один клиент. Поэтому сущность Клиент может иметь только первичный ключ. Сущности Заказ и Счет будут дочерними и должны иметь как первичные, так и внешние ключи. Проведя аналогичные рассуждения для остальных сущностей, получим следующие концептуальные требования (табл. 1.1).
Эти концептуальные требования распределены на несколько частей-прообразов таблиц: «Клиент», «Заказ», «Счет», «Продажа», «Продавец», «Автор», «Каталог» и т. д.
Таблица 1.1.
Сущность |
Ключ |
Атрибут |
Клиент |
Первичный |
номер клиента наименование фирмы адрес фирмы телефон фахс фамилия, имя и отчество покупателя признак юридического липа |
Заказ |
Первичный |
номер заказа |
|
Внешний |
номер клиента |
|
Внешний |
номер продавца |
|
Внешний |
номер издания (книги) дата оформления заказа наименование книги количество цена за один экземпляр размер торговой скидки сумма заказа способ оплаты |
Счет |
Первичный |
номер счета |
|
Внешний |
номер клиента |
|
Внешний |
номер накладной дата оплаты оплаченная сумма пометка об оплате |
Таблица 1.1. Продолжение
Сущность Ключ Атрибут
Продажа Первичный номер накладной Внешний номер счета
дата отпуска книг со склада наименование книги количество
цена за один экземпляр размер торговой скидки сумма заказа способ оплаты номер склада
фамилия, имя и отчество кладовщика фамилия, имя и отчество представител заказчика
паспортные данные представителя заказчи
Продавец Первичный номер продавца
фамилия, имя и отчество продавца
должность
дата рождения
оклад
образование
дата поступления на работу
Автор Первичный номер автора
фамилия, имя и отчество автора
(авторов)
образование
ученая степень
ученое звание
дата рождения
адрес автора (авторов)
наименование книги
дата сдачи рукописи
объем книги (в печатных листах)
номер договора
сведения об авторских правах
Каталог Первичный номер издания (книги) Внешиий номер автора
фамилия, имя и отчество автора (авторов) книги наименование книги место (город) издания книги год издания книги объем книги в страницах иена одного экземпляра книги тип оформления книги
На четвертом этапе проектирования баз данных надо выполнить нормализацию отношений между таблицами, то есть удалить из базы данных избыточную информацию. Создадим для каждой сущности по одной таблице с тем же именем, что и сущность, а полями таблицы будут атрибуты сущности.
Условия первой нормальной формы таблицы:
каждое поле должно быть неделимо;
отсутствуют повторяющиеся поля или группы полей.
Проверим, удоатетворяют ли условиям первой нормальной формы концептуальные требования.
Таблица «Заказ» н таблица «Продажа» имеют повторяющиеся поля: наименование книги, количество, цена за один экземпляр, размер торговой скидки, сумма заказа, способ оплаты.
Кроме того, поле «наименование книги» повторяется в таблицах «Автор» и «Каталог», а поле «цена одного экземпляра книги» — в таблице «Каталог».
Поэтому физическое хранение атрибута «наименование книга» оставим в таблице «Каталог», а для таблиц «Заказ», «Продажа» и «Автор» — создадим виртуальное поле подстановки этого атрибута. Атрибут <цсна одного экземпляра книги» сохраним в таблице «Каталог», для таблиц «Заказ» и «Продажа» создадим виртуальное поле подстановки. Поле «количество» имеет разный смысл: в таблице «Заказ» указано желаемое количество экземпляров книги, а таблица «Продажа» содержит количество оплаченных экземпляров книги. Аналогичные рассуждения можно провести и для поля «сумма заказа», но это поле содержит результат умножения значения поля «количество» на значение поля «Цена одного экземпляра книги*. Поэтому поле «сумма заказа» будет виртуальным (вычисляемым) полем. Атрибут «способ оплаты сохраним в таблице «Заказ», а для таблицы «Продажа* это поле оформим как виртуальное поле подстановки. При замене физических полей на виртуальные поля надо в таблицы ввести внешние ключи для связи с родительской таблицей (откуда будем брать значение для подстановки).
Поле «Фамилия, имя и отчество автора» (покупателя, продав-
представителя заказчика и т. д.) разделим на три поля: фами- ляя»Имя» отчество. Аналогично поле «адрес» разделим на два по-
город, улица и оставшаяся часть адреса Поэтому создадим
дополнительно пять таблиц, которые будут родительскими. Для наглядности сведем их в таблицу 1.2.
Таблица 1.2.
Таблица |
Ключ |
Пале |
Фамилия |
Первичный |
номер фамилии фамилия |
Имя |
Первичный |
номер имени имя |
Отчество |
Первичный |
номер отчества отчество |
Город |
Первичный |
номер города наименование города телефонный код города |
Улица |
Первичный |
номер улицы название улицы округ (район) |
Условия первой нормальной формы выполнены, и база данных состоит из 12таблиц: Клиент (Customer), Заказ (Order), Счет (Account), Продажа (Sale), Продавец (Salesman), Каталог (Catalog), Автор (Author), Фамилия (Fam), Имя (Im), Отчество (Ot), Город (Town) и Улица (Street). (Таблицы 1.1 и 1.2 — вспомо- ] гательные, в базу данных они не входят.)
При выполнении условий второй нормальной формы для каждой таблицы либо назначают, либо заменяют имеющиеся первичные ключи.
Условия второй нормальной формы:
выполняются условия первой нормальной формы;
первичный ключ однозначно определяет всю запись;
все поля зависят от первичного ключа;
первичный ключ не должен быть избыточным.
Так как мы специально ввели первичные ключи, состоящие из одного поля, то избыточности первичного ключа быть не мо-
ст но мы дополнительно заняли намять на жестком диске. Так как первичный ключ всегда уникален, то он однозначно определяет всю запись. С целью экономии памяти на жестком диске лучше первичным ключом назначать один (или несколько) атрибутов сущности. При этом следует иметь в виду, что первичный ключ, построенный по числовому полю (полям), занимает намного меньше места на диске, чем первичный ключ, построенный по символьному полю (полям).
Для таблицы Клиент любое из полей однозначно не может определить запись. Так поле «наименование фирмы» не может быть первичным ключом так как существуют фирмы с одинаковыми названиями (нельзя обеспечить уникальность значений). Поле «адрес фирмы также не может быть первичным ключом, так как по одному адресу может быть зарегистрировано несколько фирм. Поля «телефон» и «факс» не могут быть первичным ключом, так как фирма легко может изменить номер телефона или факса (или установить дополнительный телефон). Поле «фамилия, имя и отчество покупателя» не может бьггь первичным ключом, так как если покупку делает фирма, то это поле остается пустым, а первичный ключ не может содержать пустое значение. Поле «признак юридического лица» не может быть первичным ключом, так как значения этого поля не могут быть уникальными. Можно было бы построить первичный ключ по двум полям «наименование фирмы» и адрес фирмы», но оба этих поля символьные и первичный ключ, построенный по этим полям, на жестком диске займет много места. Поэтому для таблицы Клиент удобно ввести дополнительное числовое поле «номер клиента» и по этому полю построить первичный ключ.
Аналогичные рассуждения можно провести для остальных таблиц.
Условия третьей нормальной формы:
выполняются условия второй нормальной формы;
каждое не ключевое поле не должно зависеть от другого не ключевого поля.
Фор*ЛЯ ВССХ та®лиц выполняются условия третьей нормальной
На пятом этапе проектирования баз данных описывается
Ждая таблица. Каждой таблице присваивается имя, каждому
лю присваивается имя, определяется тип и размер каждого
поля, указываются поля (или группы полей), по которым надо построить первичный и внешние ключи и индексы, определяются виртуальные поля, раскрывается назначение каждого поля (рис. 1.13).
Таблица «Заказ»
Имя Тип Размер Ключ Назначение Примечание
поля поля поля
Keyorder Num 3 Первичный Уникальный
номер заказа
Key_cust Num 3 Внешний Порядковый
номер клиента
Keysalmn Num 3 Внешний Порядковый
номер продавца
Key_book Num 3 Внешний Порядковый
номер книги
Key_acnt Num 3 Внешний Порядковый
номер счета
Volume Num 4 Количество
экземпляров
книги
Num
5.2
Ргос
Summa_zakaz Сумма заказа
Виртуальное
вычисляемое
Рис. 1.13. Описание таблицы «Заказ».