Открыть Электронные книги
Категории
Открыть Аудиокниги
Категории
Открыть Журналы
Категории
Открыть Документы
Категории
Г.А. Гурвиц
Разработка реального
приложения в среде
клиент-сервер
Хабаровск
Издательство ДВГУПС
2005
УДК 004.451.83(075.8)
ББК З973.2-018.2 я73
Г 950
Рецензенты:
Кафедра “Информатика и информационная безопасность”
Петербургского Государственного
университета путей сообщения
Заведующий кафедрой доктор технических наук
профессор Корниенко А.А.
ISBN 5-262-00208-0
© Издательство Дальневосточного государственного уни-
верситета путей сообщения (ДВГУПС), 2005
© Гурвиц Г.А. 2005
© Гурвиц Ю.Г. (Обложка) 2005
2
ПРЕДИСЛОВИЕ
Анатолий Корниенко
Заведующий кафедрой
“Информатика и информационная безопасность”
доктор технических наук профессор
Петербургский Государственный
университет путей сообщения
3
ВВЕДЕНИЕ
4
стью владения, а богатые возможности этой СУБД являются одним из
самых важных критериев при выборе продукта, который будет использо-
ваться на предприятии при построении баз данных.
“С появлением Windows 2000 и SQL Server 2000 компания Microsoft
сделала первый и очень важный шаг в реализации своей мечты о таком
программном обеспечении, которое можно было бы горизонтально мас-
штабировать от web-уровня до уровня приложения и уровня базы дан-
ных, - сказал Билл Гейтс, главный архитектор программного обеспече-
ния Microsoft. – Феноменальные результаты эталонных тестов доказы-
вают правильность нашей стратегии, и эти новшества принципиально
изменят игровое поле для платформ приложений масштаба предпри-
ятия”. Microsoft объявила результаты серии тестов, ярко подтвердивших
лидерство MS SQL Server. Для теста TPC-C – 227029 транзакций в ми-
нуту, практически в два раза опередив ближайшего конкурента. Кроме
того, установлены мировые рекорды по эталонному тесту TPC-H. Полу-
ченный результат – 1291 запрос в час применительно к базе данных
объемом 100 Гбайт. Результаты остальных тестов можно найти по адре-
су: http://www.eu.microsoft.com/rus/press/2000/february/new_word_record
В настоящем пособии Вашему вниманию будет предложен самый
легкий способ создания базы данных Microsoft SQL Server – конвертация
созданной и успешно работающей базы Microsoft Access в Microsoft SQL
Server средствами Access. Процесс работы конвертора займет несколь-
ко минут, независимо от количества таблиц, индексов и связей между
таблицами в Вашей базе данных.
Занимаясь разработкой прикладного программного обеспечения дея-
тельности различных предприятий на протяжении многих лет, могу от-
метить, что в 90 случаях из 100 заказчик сам не знает, чего хочет, и в 99
из 100 случаях постановку задачи приходится воспринимать на слух, в
процессе работы неоднократно уточняя те или иные моменты созда-
ваемой программы. Более того, при очередной встрече с заказчиком,
связанной с демонстрацией уже выполненных этапов, очень часто от-
крываешь для себя все новые и новые горизонты предстоящей работы,
требующие существенного изменения как структуры данных, так и ин-
терфейса будущего приложения. Но это не самый худший вариант. Ино-
гда уже через день после итоговой встречи заказчик переосмысливает
свои цели, после чего задача меняется коренным образом, и следующий
визит заставляет начать всю работу заново. Именно по этой причине я
рекомендую вам, внимательно выслушав заказчика, попросить его опи-
сать задачу в письменном виде, на основании чего самостоятельно
сформулировать постановку задачи и еще раз обсудить ее с клиентом.
Уверяю вас, если результат окажется положительным, то это будет при-
знанием того, что ваш работодатель действительно нуждается в зака-
занном программном обеспечении, а самое главное, знает, чего хочет.
5
1. ПОСТАНОВКА ЗАДАЧИ
6
№ Поле Тип Размер Описание
9 Line Числовой 5 Расстояние от центра города
10 Square Числовой 10 Площадь нежилых помещений
11 Picture Поле OLE Авто Фото здания
12 Kind Числовой 1 Вид собственности
13 Elevator Логический 1 Наличие лифта
14 Flat Числовой 4 Номер квартиры
15 Storey Числовой 2 Номер этажа
16 Rooms Числовой 1 Количество комнат
17 SquareFlat Числовой Авто Общая площадь квартиры
18 Dwell Числовой Авто Жилая площадь квартиры
19 Branch Числовой Авто Всп. площадь квартиры
20 Balcony Числовой Авто Площадь балкона
21 Height Числовой Авто Высота квартиры
22 Account Числовой 5 Номер лицевого счета
23 FioHost Текстовый 60 Ф.И.О. квартиросъемщика
24 Pasport Поле Memo Авто Данные его паспорта
25 Fio Текстовый 60 Ф.И.О. проживающего в квартире
26 Born Числовой 4 Год рождения проживающего
27 Status Текстовый 20 Льготы и статус проживающего
2. НОРМАЛИЗАЦИЯ ДАННЫХ
7
совпадающих полей. В каждой из таблиц содержится информация о ка-
ких-либо объектах одного типа.
Приступая к созданию нового приложения, главное – самым тщатель-
ным образом спроектировать структуру его таблиц. Если не уделить струк-
туре должного внимания, то в лучшем случае это может проявиться в не-
эффективной работе приложения, а в худшем – в невозможности реали-
зации некоторых требований к системе в целом. И, наоборот, при хорошей
организации набора таблиц будут решены не только текущие проблемы,
но и потенциальные, которые в данный момент вы не могли предвидеть.
В общем, структура данных является определяющим фактором успеха
или провала всего приложения.
Э.Ф. Кодд доказал, что, следуя при создании таблиц и связей между
ними только немногим формализованным правилам, можно обеспечить
простоту манипулирования данными. Его методика получила наимено-
вание нормализации данных. Теория реляционных баз данных основана
на концепции использования ключевых полей для определения отно-
шений между таблицами. Чем больше таблиц, тем больше отношений
требуется определить, чтобы связать их между собой. Из теории Кодда
отнюдь не следует, что каждая таблица должна быть напрямую связана
с любой другой таблицей. Но, поскольку каждая таблица связана хотя
бы с одной таблицей в базе данных, можно утверждать, что все таблицы
в базе имеют прямые или косвенные отношения друг с другом.
Мы установили, какие поля будут включены в базу данных. Следую-
щий этап состоит в разделении их на таблицы. Конечно же, можно было
бы работать с приведенной выше единственной таблицей «Недвижи-
мость», но даже не знающим правил нормализации ясно, что для каждо-
го проживающего в квартире не имеет смысла повторять всю информа-
цию о здании, квартире, ответственном квартиросъемщике и лицевом
счете, а при переименовании улицы – вносить исправления в тысячи за-
писей, содержащих сведения о технических характеристиках квартиры.
Наличие повторяющейся информации приведет к неоправданному
увеличению размера базы данных. В результате снизится скорость вы-
полнения запросов. При многократном вводе повторяющихся данных
возрастет вероятность ошибки.
Представьте себе ситуацию, связанную с вводом данных о прожи-
вающих на Восточном шоссе. Это пять тысяч человек. Вот несколько
вариантов адреса: Шоссе Восточное, Восточное шоссе, ш. Восточное,
ш-се Восточное. А сколько еще вариантов может появиться у оператора,
работающего с вашей программой. О грамматических ошибках и вари-
антах с номером дома, запятыми и точками в адресе позволю себе
умолчать. Какую информационно-поисковую систему мы получим в ре-
зультате? Скорее всего: искать можно – найти нельзя!
8
Воспользуемся практическими рекомендациями теории нормализа-
ции для разработки на основании таблицы «Недвижимость» многотаб-
личной базы данных «Real Estate».
Я хорошо помню своего учителя физики в старших классах школы. В
нарушение всех тогда существовавших методик он давал весь годовой
курс за месяц, а оставшееся время расширял заложенные в наши голо-
вы основы знаний. Его методика мне очень нравится, и я постоянно бу-
ду использовать ее в этой книге. Вот Вам результат ее первого приме-
нения. На рис. 2.1 вы видите то, что у вас должно получиться после всех
манипуляций, кратко изложенных выше и предусмотренных теорией
нормализации. Практический же путь к этому результату смотрите на
следующих полутора десятках страниц.
9
Приведем наши данные к первой нормальной форме. Выделим са-
мостоятельные группы полей и поместим их в отдельные таблицы. На
первый взгляд их четыре. Это информация об адресе, здании, квартире
и собственниках. Добьемся атомарности всех полей. Поле FioHost, в ко-
торое записывается информация о фамилии, имени и отчестве ответст-
венного квартиросъемщика, заменим тремя полями: Family, Name, Sec-
ond. Также поступим и с проживающими в квартире. Поле Address ра-
зобьем на три: название, признак и порядок их следования в официаль-
ных документах. Получится следующая картина (табл. 2.1).
Таблица 2.1
Информация об адресе (Street)
10
Таблица 2.2
Информация о здании (Building)
Таблица 2.3
Информация о квартире (Flat)
11
Таблица 2.4
Информация о проживающих в квартире (Owners)
12
Рис. 2.3. Таблицы базы данных в первой нормальной форме
Появились еще две таблицы: Wall и District (табл. 2.5, табл. 2.6).
Таблица 2.5
Информация о районах города (District)
Таблица 2.6
Информация о материале стен здания (Wall)
13
№ Поле Тип Размер Описание
3 District Числовой 1 Ссылка на район города
4 Land Числовой 10 Площадь земельного участка
5 Year Числовой 4 Год постройки здания
6 Material Числовой 1 Ссылка на материал стен здания
7 Comment Поле Memo Авто Примечания
8 Wear Числовой 2 Износ в процентах
9 Cost Денежный 15 Стоимость здания в рублях
10 Line Числовой 5 Расстояние от центра города
11 Square Числовой 10 Площадь нежилых помещений
12 Picture Поле OLE Авто Фото здания
13 Kind Числовой 1 Вид собственности
14 Elevator Логический 1 Наличие лифта
14
номер улицы плюс номер дома – однозначно определит положение запи-
си, относящейся к одному зданию в этой таблице. С однозначным опре-
делением квартиры в таблице Flat (квартиры) дело состоит чуть слож-
нее. Составной первичный ключ выглядит так: номер улицы плюс номер
дома плюс номер квартиры.
В очень редких случаях с определением первичного ключа для таб-
лицы может сложиться тупиковая ситуация. Не отчаивайтесь, добавьте
в таблицу поле и определите его тип как «счетчик». Все остальное Ac-
cess сделает самостоятельно. В это поле будет автоматически вносить-
ся уникальное число даже при работе с Вашей базой в сетевом вариан-
те (с нескольких компьютеров одновременно). Если до сохранения соз-
данной таблицы ключевые поля не были определены, Microsoft Access
предложит создать ключевое поле автоматически. При нажатии кнопки
«Да» будет создано ключевое поле счетчика.
Третья нормальная форма. Таблица находится в третьей нор-
мальной форме, если она удовлетворяет условиям второй нормаль-
ной формы и ни одно из неключевых полей таблицы не идентифици-
руется с помощью другого неключевого поля.
Посмотрите внимательно на таблицу Flat (квартиры). Она содержит
неключевое поле Account (номер лицевого счета), которое однозначно
определяет ответственного квартиросъемщика (поля: Family, Name,
Second и Pasport) в этой таблице. Уберем все эти поля в еще одну таб-
лицу Account и назначим в ней в качестве простого первичного ключа
поле Account (табл. 2.8).
Таблица 2.8
Информация об ответственном квартиросъемщике (Account)
15
Обратите внимание! У полей, используемых для связи, одинаковое на-
именование (Account) и тип (числовой с 5 разрядами). Всегда придер-
живайтесь этого правила при определении полей для связи любого типа
между таблицами. Хотя, если быть более точным, связь между табли-
цами устанавливается на основании значений совпадающих полей, а не
их наименований.
16
лее чем с одной записью из второй таблицы, а одна запись из второй
таблицы может быть связана более чем с одной записью из первой таб-
лицы. Таких связей следует избегать, так как реляционная модель не
позволяет непосредственно работать с ними. Microsoft Access или лю-
бая другая реляционная СУБД в этом случае бесполезны. Всегда мож-
но ввести в базу данных еще одну - две промежуточные таблицы и тем
самым избежать возможных неприятностей при разработке интерфейса
вашего приложения, используя понятные и безотказно работающие свя-
зи «один ко многим». Некоторые варианты заданий из этого пособия мо-
гут привести к связи «многие ко многим» между таблицами базы данных.
Обратившись к материалам главы 3.7, Вы увидите мое видение ре-
шения этой проблемы одного из вариантов.
Что за третьей нормальной формой? Если вы довели уровень
нормализации таблиц вашей базы данных до третьей нормальной фор-
мы и ваша задача – разработка системы масштаба предприятия, то
смело можете переходить к разработке интерфейса. Однако если вы
участвуете в разработке суперхранилища данных под Oracle или DB2, то
разберитесь по специальной литературе с нормальной формой Бойса-
Кодда, четвертой и пятой нормальными формами.
17
В верхней части диалогового окна вы увидите список ранее откры-
вавшихся баз данных. Если Access 2002 запущен в первый раз, то в спи-
ске появится только элемент «Другие файлы». Выберите переключатель
«Новая база данных» и щелкните по кнопке «Ок». Появится окно,
имеющее заголовок «Файл новой базы данных». Определитесь с име-
нем файла и папкой, в
которой он будет рас-
положен. Пусть его имя
– Real Estate. Нажмите
кнопку «Создать». Поя-
вится окно базы дан-
ных с этим именем
(рис. 3.2). База данных
получила свое название
и законное место на же-
стком диске. Отличи-
тельной особенностью Рис. 3.2 Окно создаваемой базы данных
Microsoft Access явля-
ется то, что окно базы данных является отправной точкой, с которой на-
чинается выполнение всех операций над объектами базы данных: таб-
лицами, запросами, формами, отчетами, макросами и модулями. Не менее
интересным фактом является и тот, что все эти элементы хранятся в од-
ном единственном файле. В данном случае – Real Estate.mdb, чего не
скажешь о других СУБД для персональных компьютеров.
18
Если вы заняты разработкой серьезного приложения – забудьте про
эти способы. Конструктор таблиц – вот то, что вам необходимо в этом
случае!
В окне три колонки. Первые две: имя поля и тип данных будут использо-
ваться приложением, а третья: описание – предназначена только для раз-
работчика. Не оставляйте ее пустой! Опишите подробно назначение поля
таблицы. Позже обязательно поймете важность этого совета.
Имена полей должны содержать не более 64 символов и могут вклю-
чать любые комбинации символов за исключением точки, восклицательного
знака и квадратных скобок. Используйте в именах полей только латинские
19
буквы при общей длине имени до 10 символов включительно. В этом слу-
чае у Вас не будет проблем с конвертацией таблиц Microsoft Access в таб-
лицы других СУБД (например, Visual Fox Pro).
Каждое поле таблицы должно иметь уникальное имя, но в различных
таблицах можно использовать одинаковые имена полей. В табл. 3.1 приве-
дены основные типы данных полей Microsoft Access 2002.
Создадим нашу первую таблицу Building. Ее окончательная структу-
ра взята из табл. 2.7. Имейте в виду, что имя поля и его описание вво-
дится с клавиатуры, а тип данных выбирается из списка. Список будет
доступен только тогда, когда курсор попадет в колонку «Тип данных».
Таблица 3.1
Типы данных полей таблиц Access 2002
20
1. Введите в первую колонку имя первого поля: STREET и нажмите
клавишу <Enter>. Курсор переместится во вторую колонку «Тип данных».
По умолчанию будет назначен тип «Текстовый».
2. Нажмите клавишу <F4> для того, чтобы раскрыть список типов
данных. Раскрыть список можно и при помощи мыши. Выберите тип
«Числовой» и нажмите клавишу <Enter>. Мне больше нравится созда-
вать таблицы, не прибегая к помощи манипулятора «мышь», поскольку в
основном данные вводятся с клавиатуры, а переключение между кла-
виатурой и мышью занимает дополнительное время, тем более что та-
кую возможность нам предоставили создатели Microsoft Access. Для
создания таблиц в режиме конструктора они задействовали несколько
функциональных клавиш.
21
миллионным населением. Кстати, в Хабаровске 1248 улиц, переулков,
проездов, шоссе, кварталов, площадей, бульваров и т.д.
7. Нажмите клавишу <F6> для
перехода в верхнюю часть окна
конструктора таблицы.
8. Повторите шаги 1–7 для всех
оставшихся полей таблицы.
После занесения данных обо всех Рис. 3.6. Ввод имени таблицы
полях таблицы просто закройте окно
конструктора таблиц. Появится диалоговое окно «Сохранение», запраши-
вающее подтверждение
на сохранение струк-
туры таблицы (рис. 3.6).
Вместо названия
Таблица1 введите на-
звание building, и
щелкните по кнопке
«Ок». Наша первая
таблица появится в Рис. 3.7. Окно базы данных
окне базы данных (рис.
3.7). Заполнять сейчас созданную таблицу начинающему пользователю
категорически не рекомендуется, да так и не делается! Посмотрите на
содержимое таблицы 3.2. Это не отдельная таблица, она будет связана
с другими таблицами базы данных Real Estate. Что в ней хранится – по-
ка загадка. Уверен, что большинство цифр Вам просто непонятны.
Таблица 3.2
Информация, содержащаяся в связанной таблице
22
Аналогичным образом создадим все наши таблицы, разработанные в
главе 2: Flat, Owners, Account, Street, District и Wall.
23
такой индекс есть. Загляните в таблицу Flat (рис. 2.4) и обратите внима-
ние на поле Account (номер лицевого счета квартиросъемщика). Это
поле однозначно определяет положение любой квартиры в таблице.
Создание обычного индекса по полю таблицы. Порядок созда-
ния как простого индекса, так и уникального (индекса-кандидата) – один
и тот же. Создадим индекс по полю Account таблицы Flat.
1. Откройте таблицу Flat в режиме конструктора (рис. 3.8). Для этого
в окне базы данных Real Estate выделите таблицу Flat и щелкните мы-
шью по кнопке «Конструктор» на панели инструментов окна базы дан-
ных. Она расположена рядом с пиктограммой .
2. Выделите поле Account, нажав на кнопку выделения поля в левой
части бланка структуры таблицы .
3. Сделайте активным свойство «Индексированное поле», щелкнув
по кнопке или нажав клавишу <F4> (рис. 3.8).
4. Поле Account не может содержать повторяющиеся данные, по-
этому в списке необходимо выбрать значение «Да (Совпадения не до-
пускаются)».
5. Перейдите в режим базы данных. Для этого закройте окно конст-
руктора таблиц. Появится диалоговое окно, сообщающее о том, что
структура таблицы была изменена. Подтвердите сохранение.
24
Создание простого первичного ключа. Создадим простой первич-
ный ключ для таблицы Street (улицы). Ключевое поле, однозначно оп-
ределяющее положение любой улицы в таблице улиц, также носит на-
звание Street (рис. 2.1).
1. Откройте таблицу Street в режиме конструктора. Для этого в окне
базы данных Real Estate выделите таблицу Street и щелкните мышью
по кнопке «Конструктор» на панели инструментов окна базы данных.
Она расположена рядом с пиктограммой .
2. Выделите поле Street, нажав на кнопку выделения поля в левой
части бланка структуры таблицы . Строчка, относящаяся к этому по-
лю, будет выделена черным цветом (рис. 3.9).
25
кнопке «Конструктор» на панели инструментов окна базы данных. Она
расположена рядом с пиктограммой .
2. Выделите поле Street, нажав на кнопку выделения поля в левой
части бланка структуры таблицы . Строчка, относящаяся к этому по-
лю, будет выделена черным цветом. Нажмите клавишу <Ctrl> и, удержи-
вая ее, щелкните последовательно кнопки выделения напротив полей
House и Flat. Черных строчек станет три (рис. 3.12).
26
3.4. Контроль правильности ввода данных
27
3. Наберите на клавиатуре >=1 And <10 и нажмите клавишу
<Enter>. Курсор переместится в поле «Сообщение об ошибке».
4. Введите текст сообщения. Номер района должен быть в пределах
от 1 до 9 включительно. Если текст не поместится в поле целиком, то
система прокрутит его влево. Для перехода в начало текста сообщения
нажмите клавишу <Номе>.
5. Закройте окно конструктора таблицы и подтвердите сохранение
сделанных изменений.
При попытке ввода номера района, который не находится в пределах
диапазона 1–9, получим сообщение об ошибке и отказ программного
комплекса от записи в таблицу сделанных изменений (рис. 3.15).
28
4. Переместите курсор в поле «Условие на значение». Появится
кнопка в его правой части. Нажмите ее.
29
10. В случае появления этой ошибки при работе программного ком-
плекса появится одно из сообщений об ошибке (рис. 3.18).
30
2. Выполните щелчок пра-
вой кнопкой мыши в любом
свободном месте этого окна.
Появится меню (рис. 3.19).
Выберите пункт «Схема дан-
ных». Добраться до схемы
данных можно и по-другому.
Щелкните левой кнопкой
мыши по пиктограмме
главного окна Microsoft Ac-
Рис. 3.20. Схема данных
cess. Появится окно (рис.
3.20).
3. Выполните щелчок
правой кнопкой мыши в лю-
бом месте окна «Схема дан-
ных».
В появившемся меню выбе-
рите первый пункт «Доба-
вить таблицу» (рис. 3.21).
4. Появится диалоговое
окно «Добавление табли-
цы». Раскройте вкладку
«Таблицы». В списке таблиц
выберите District (районы) и
Рис. 3.21. Список таблиц
нажмите кнопку «Добавить».
Нажмите кнопку «Закрыть».
Таблица District появится в окне «Схема данных» (рис. 3.22). Выполните
аналогичные действия с таблицей Building (Здания).
Один ко многим
31
5. Связь между таблицами District и Building строится по значению
одноименных полей District. Поместите указатель мыши над полем
District (оно ключевое и поэтому выделено в списке полей полужир-
ным шрифтом), нажмите левую кнопку мыши и, не отпуская ее, «пере-
тащите» появившийся значок поля на поле District таблицы Building.
Отпустите левую кнопку мыши. Появится диалоговое окно «Изменение
связей» (рис. 3.24).
6. Поставьте флажок в поле «Обеспечение целостности данных» и
нажмите кнопку «Создать» для подтверждения создания связи и пере-
хода в окно «Схема данных». Microsoft Access 2002 использует назна-
ченные связи при создании форм, запросов и отчетов, которые требуют
данных из рассмотренных выше таблиц.
Вернемся к рис. 3.22. Важной особенностью Access 2002 является
автоматическое обеспечение ссылочной целостности данных. Если на
связь между таблицами наложены условия ссылочной целостности, то
добавление в связанную таблицу записи, для которой нет соответст-
вующих записей в главной таблице, становится невозможным.
Проверка целостности данных может осуществляться и программ-
ными средствами. Например, при добавлении в таблицу Building описа-
ния нового здания, вы можете проверить, имеется ли в таблице District
район, в котором расположено это здание. Однако более правильным
является определение условия целостности данных на уровне базы
данных, так как в этом случае ни одно приложение не может нарушить
целостность данных. С базой данных может работать несколько прило-
жений, в том числе и не только ваших.
Несколько дополнительных возможностей (см. рис. 3.22).
1. Если Вы поставите флажок в поле «Каскадное обновление связан-
ных полей», то у вас появится возможность исправить номер района
только в таблице District, а в таблице Building все связанные записи
система Access исправит автоматически.
2. Флажок, поставленный в поле «Каскадное удаление связанных за-
писей», позволит вам смело удалить район в таблице District, а все
описания зданий этого района Access 2002 удалит без вашего участия.
Задумайтесь о том, нужен ли вам флажок в этом поле? Удалили одну
запись, а лишились четверти всей базы данных!
Рассмотрим создание связи между таблицами в случае, когда одна
из них имеет составной первичный ключ.
Посмотрите на рис. 3.23. Для этой цели подходят таблицы Flat и
Owners. У таблицы Flat ключевая связка полей выглядит так:
Street+House+Flat. Для построения связи между этими таблицами по-
местите указатель мыши над полем Street таблицы Flat и сделайте
щелчок левой кнопкой мыши. Нажмите клавишу Shift и, не отпуская ее,
сделайте сначала щелчок по полю House а затем Flat. Отпустите кла-
вишу Shift. Будет выделена группа из трех полей: Street+House+Flat.
32
Поместите указатель мыши
над выделенной группой из
трех полей таблицы Flat,
нажмите левую кнопку мыши
и, не отпуская ее, «перета-
щите» появившийся значок
связки полей в любое место
таблицы Owners. Отпустите
левую кнопку мыши. Поя-
вится диалоговое окно «Из-
менение связей» ( рис. 3.24).
В отличие от связывания
таблицы, имеющей простой
первичный ключ (рис. 3.22),
Рис. 3.23. Схема данных где связь District–District
была установлена автомати-
чески, в данном случае необ-
ходимо явно указать, какие
связки полей из таблиц Flat и
Owners участвуют при соз-
дании связи между этими
таблицами. Используя поле с
раскрывающимся списком,
установите нужные вам свя-
зи. Поставьте флажки во всех
трех полях, обеспечивающих
ссылочную целостность. Кас-
кадное удаленние связанных
Рис. 3.24. Создание связи между таблицами записей здесь вполне уме-
Flat и Owners
стно. В последнее время
часто две соседние кварти-
ры приобретает одна семья.
Без третьего флажка (рис.
3.25) удалить данные по
квартире и одновременно по
проживающим нельзя. По-
ставьте его. Этим Вы значи-
тельно облегчите жизнь
пользователю Вашей про-
граммы. Окончательный вид
связи между таблицами Flat
и Owners будет таким (рис.
Рис. 3.25. Окончательный вид связи между 3.25).
таблицами Flat и Owners
33
3.6. Устранение проблем, возникающих при создании ключей
Вы создали свою первую таблицу, и вам, конечно же, не терпится зане-
сти в нее данные, тем более что Access без труда позволяет это сделать.
Не торопитесь! Завершите создание базы данных, назначьте первичные
ключи и установите связи между таблицами. Нарушение этого порядка
может доставить вам массу неприятностей. Вот одна из них.
В таблицу Flat (квартиры) занесена
16291 запись. Первичный ключ у этой
таблицы, конечно же, не создан. На-
чальство торопит с выполнением проек-
та, да к тому же выделило работника
для занесения информации. Вот вам –
результат! Информация обо всех квар-
тирах занесена, вы пытаетесь создать
первичный ключ у этой таблицы, а в ней
есть повторяющиеся записи. Наборщик Рис. 3.26. Сообщение об ошибке
занес одну или несколько квартир более из-за повторяющихся значений в
одного раза. Не удивительно, ведь Ваш индексе
программный комплекс его никак не контролировал. Не отчаивайтесь, а
сделайте следующее.
1. В окне базы данных Real Es-
tate выберите значок «Запросы».
Он находится в списке «Объекты».
Нажмите кнопку «Создать» на па-
нели инструментов окна базы дан-
ных. Появится окно «Новый за-
прос» (3.27).
Выберите пункт «Повторяющие-
ся записи» и нажмите кнопку «Ок».
2. Появится список таблиц базы
данных. Выберите в нем таблицу Рис. 3.27. Создание нового запроса
Flat и нажмите кнопку «Далее».
3. В появившемся диалоговом окне «Поиск повторяющихся записей»
занесите в окно «Поля с повторами» три поля: Street, House, Flat, ис-
пользуя кнопку (рис. 3.28).
34
4. Нажмите кнопку «Готово» и результат перед вами (рис. 3.29).
35
пиктограмме удаления записи, рас-
положенной в главном окне Access.
Правильно ответьте на запрос системы
(рис. 3.31).
Удалить запись можно и другим
способом. Выделите ее, как было опи-
сано выше. Сделайте щелчок левой
кнопкой мыши по пункту главного меню
Microsoft Access «Правка». В рас-
крывшемся меню выберите пункт Рис. 3.31. Запрос на подтвержде-
ние удаления записи
«Удалить запись».
∞
Покупатели ∞
ИНН Название Название Дата Цена Штрих-
К-во
покупателя покупателя товара покупки за 1 ед. код
276546373 «Татьяна» Печенье 18.07.04 105-00 100 46052462
276546373 «Татьяна» Печенье 18.07.04 140-00 150 78690543
273894756 «Светлый-3» Печенье 21.07.04 110-00 50 46052461
36
Как мы уже знаем, реляционная модель не позволяет непосредст-
венно реализовать связь типа «многие ко мно-
гим». Кроме этого, штрих-код товара (рис.3.33),
являясь его однозначной идентификацией, не
может быть назначен в качестве первичного
ключа. В случае если через какое-то время бу-
Рис.3.33 Штрих-код дет закуплена еще одна партия такого же това-
ра, то в таблице «поставщики» появится строч-
ка, имеющая идентичный штрих-код. Аналогичная ситуация возможна и
с покупателем, который приобретет такой же товар из другой партии. И
еще одна проблема: один клиент практически никогда не покупает всю
партию целиком и перед фирмой встает проблема учета остатка товара.
Все эти проблемы (реляционной модели и алгоритма) легко реша-
ются добавлением двух промежуточных таблиц: «Поставленные това-
ры» и «Проданные товары». На рис. 3.34 показан фрагмент схемы дан-
ных превращения «связи многие ко многим» в несколько связей «один
ко многим» с добавлением этих промежуточных таблиц.
37
Преобразование связи «многие ко многим» в несколько связей «один ко
многим» и «много к одному» можно сделать следующим образом. Вме-
сто того чтобы рассматривать множество поставщиков, поставляющих
товары многим клиентам, будем рассматривать одного поставщика и
множество поставляемых им товаров («один ко многим»). Далее будем
рассматривать деление товара одной партии на множество частей, под-
лежащих продаже («один ко многим»). В результете получим множество
товаров, приобретаемым одним покупателем («много к одному»).
Появление таблицы «проданные товары» позволяет решить внут-
реннюю проблему учета остатков товара в фирме «Столица».
Особенностью реализации предложенной схемы является наличие
составного первичного ключа в таблице «Поставленные товары» по
связке полей «штрих-код товара» плюс «номер партии» (GoodsID +
NumberPart).
38
Рис. 4.1. Наша первая форма, созданная в режиме конструктора
Откроем форму в конструкторе. Для этого в окне базы данных Real
Estate выберите вкладку «Формы». Файл Real Estate.mdb находится на
компакт-диске, прилагаемом к этому учебному пособию. Компакт-диск
можно также взять на кафедре. Щелкните левой кнопкой мыши по фор-
ме Building, а затем по пиктограмме «Конструктор» (рис. 4.2).
39
На экране дисплея появится три окна. Первое с названием «Building:
форма» – сам конструктор. Второе – с полями одноименной таблицы
(см. табл. 2.7) и третье – панель элементов, которая содержит ряд кно-
пок, предназначенных для размещения в форме элементов. Функции
этих кнопок будут рассмотрены в следующих разделах.
40
Рис. 4.4. Заготовка новой формы в конструкторе форм
41
3. Одновременно с этим
откроется первое диалоговое
окно мастера списков с заго-
ловком «Создание полей со
списком». Вам будет предло-
жено выбрать источник значе- Рис. 4.5. В области данных формы появил-
ний. Наши названия улиц хра- ся первый элемент
нятся в таблице Street, поэто-
му сделайте щелчок левой
кнопкой мыши по первой кноп-
ке , рядом с которой имеется
надпись: «Объект поле со спи- Рис. 4.6. Выбор отображаемых полей
ском».
4. Нажмите кнопку «Да-
лее». Появится второе диало-
говое окно, в котором ото-
бражен список всех таблиц,
входящих в базу данных. Вы-
берите таблицу Street и на-
жмите кнопку «Далее». Рис. 4.7. Выбор ширины колонок
5. В появившемся треть- раскрывающегося списка
ем диалоговом окне Access
предлагает выбрать поля
таблицы Street, значения ко-
торых будут отображаться в
раскрывающемся поле со
списком (рис. 4.6). Пусть это Рис. 4.8. Сохранение выбранного значения
будут первые три поля. в поле таблицы
6. Нажмите кнопку «Да-
лее». Появится четвертое
диалоговое окно. Поставьте
флажок в поле с названием
«Скрыть ключевой столбец».
Пользователю ни к чему ви- Рис. 4.9. Поле со списком создано
деть, под каким номером в
таблице Street стоит та или иная улица. Здесь же Вам предоставлена
возможность – установить ширину колонок (рис. 4.7).
7. Нажмите кнопку «Далее». Очень ответственный момент. Надо ука-
зать поле таблицы Building, в которое будет записываться ссылка на
улицу из таблицы Street. Сделайте так, как показано на рис. 4.8.
8. В шестом диалоговом окне предлагается ввести надпись, которая
будет стоять рядом с раскрывающимся списком. Напишите слово «Ад-
рес» и нажмите кнопку «Готово» (рис. 4.9).
42
Не беда, если вам не удалось сразу расположить элемент в нужном
месте формы. Access предоставляет пользователю массу возможно-
стей для форматирования. Во-первых, щелкните правой кнопкой мыши
по надписи «Адрес» и выберите в раскрывшемся меню пункт «Размер»,
а в появившемся подменю пункт – «По размеру данных». Во-вторых, пе-
реместите поле со списком и его метку в нужное место на форме. Для
этого поместите указатель мыши в любую точку на границе выделенного
элемента, отличную от маркеров изменения размеров. Нажмите левую
кнопку мыши и, не отпуская ее, «перетащите» элемент на новое место.
Более точно «выставить» элемент управления и его метку на форме
можно при помощи клавиш клавиатуры с изображением стрелок при на-
жатой клавише <Ctrl>.
43
собами. Проще всего щелкнуть по выделенной метке левой кнопкой
мыши. Указатель мыши превратится в текстовый курсор. Далее исполь-
зуйте клавиатуру для ввода надписи.
Настала очередь создания поля «Примечания» (см. рис. 4.1). Это по-
ле ввода с линейкой прокрутки. Применяется для включения в форму
длинных текстовых полей.
1. Если на экране дисплея отсутствует окно списка полей таблицы
Building, выберите в главном меню Microsoft Access пункт «Вид», а в
раскрывшемся подменю – пункт «Список полей».
2. В списке полей выделите поле Comment (рис. 4.11). Нажмите ле-
вую кнопку мыши и «перетащите» выделенный элемент на форму. В ак-
тивной области формы указатель мыши превратиться в символ тексто-
вого поля. Отпустите левую кнопку мыши.
3. Удалите метку поля и измените размеры текстового поля до тре-
буемых.
4. Сделайте щелчок правой кнопкой мыши по созданному полю. Вы-
берите в открывшемся меню пункт «Свойства».
44
пользуйте клавиатуру для ввода надписи. Этого же результата можно
добиться и другим способом. Сделайте щелчок правой кнопкой мыши по
созданной метке. Выберите в открывшемся меню пункт «Свойства».
В появившемся диалоговом окне выберите вкладку «Макет». Найди-
те в списке этой вкладки свойство «Подпись». Введите текст, который
хотите увидеть рядом с флажком – «Лифт» (рис. 4.12).
45
3. Поместите указатель мыши над активной областью формы. Он
превратиться в значок группы переключателей с крестиком в левом
верхнем углу. Нажмите левую кнопку мыши и, удерживая ее в нажатом
состоянии, переместите курсор по диагонали так, чтобы получилась
рамка требуемого размера. Отпустите левую кнопку мыши. Автоматиче-
ски запустится построитель группы переключателей.
4. Сделайте подписи у переключателей (рис. 4.13) и нажмите кнопку
«Далее». Теперь назначим переключатель, используемый по умолча-
нию. Большинство зданий города находится в муниципальной собствен-
ности. Предоставим возможность пользователю не щелкать мышью по
этому элементу при занесении муниципального здания. Он наверняка
будет нам за это благодарен (рис. 4.14).
46
Рис. 4.15. Шаг 4
47
Добавим присоединенную рамку объекта в нашу первую форму
(см. рис. 4.1). Напомню, что для хранения фотографий зданий мы пре-
дусмотрели поле Picture (поле OLE) в таблице Building.
1. Выберите на панели элементов пиктограмму «Присоединенная
рамка объекта». Не перепутайте ее с очень похожей на нее свободной
рамкой объекта .
2. Поместите указатель мыши над активной областью формы. Он
превратится в значок присоединенной рамки объекта с крестиком в
левом верхнем углу. Нажмите левую кнопку мыши и, удерживая ее в на-
жатом состоянии, переместите курсор по диагонали так, чтобы получи-
лась рамка требуемого размера. Отпустите левую кнопку мыши.
3. Удалите подпись возле этого элемента управления, которую сге-
нерировал компьютер: «Присоединенный OLE» (рис. 4.17). Нет никакого
смысла переименовывать ее во что-то типа «Фотография» или нечто
подобное. И без нее все предельно ясно.
48
Фрагмент
Вписать в рамку
По размеру рамки
49
ция о первом здании (см. рис. 4.1). Найдите на линейке записей пикто-
грамму «Добавление новой записи».
Теперь можно заносить информацию об очередном здании. Займемся
его фотографией. Сделайте щелчок правой кнопкой мыши по месту, где
она должна располагаться в форме, и в появившемся меню выберите
пункт «Добавить объект». Появится диалоговое окно «Вставка объекта».
50
Первая проблема, которую необходимо решить на пути к цели, за-
ключается в следующем. В нашей форме должна отображаться инфор-
мация не обо всех квартирах в городе, а только о тех, которые располо-
жены в выбранном для просмотра здании. Поэтому форма Flats будет
связана не с таблицей Flat, а с запросом Flats, в который мы поместим
данные о квартирах, находящихся в одном конкретном здании, и лице-
вых счетах ответственных квартиросъемщиков. Порядок его создания
следующий.
1. В окне базы данных Real
Estate выберите значок «Запросы».
Он находится в списке «Объекты».
Нажмите кнопку «Создать» на
панели инструментов окна базы
данных. Появится окно «Новый
запрос» (рис. 4.20).
2. Выберите пункт
«Конструктор» и нажмите кнопку
«ОК».
3. Появится список таблиц ба-
Рис. 4.20. Создание нового запроса зы данных. Выберите в нем сна-
чала таблицу Flat и нажмите кноп-
ку «Добавить», а затем таблицу Account. Появится окно «Запрос на вы-
борку».
4. Расположите последовательно все поля из таблиц Flat и Account в
запросе, как это показано на рис. 4.21. Не пропустите ни одного, иначе
Вас ждут неприятности при занесении новых записей по квартирам. Поле
Account (номер лицевого счета), связывающее эти таблицы, заносится
только один раз.
51
5. Определите условия отбора записей из таблиц Flat и Account в
запрос (рис. 4.22). Он должен содержать данные только по одному кон-
кретному зданию.
52
такая квартира будет навсегда потеряна, так как не будет отображаться
в форме при повторном запуске на выполнение. Чтобы избежать этой
ошибки необходимо добавить в событие «До вставки» формы Flats про-
цедуру, написанную на языке Visual Basic для приложений (VBA). Если
вы хотите написать хорошее приложение на Access, то знание основ
VBA Вам просто необходимо.
53
занных отношением один ко многим. Одна квартира – несколько прожи-
вающих. При использовании формы с подчиненной формой для ввода
новых записей, текущая запись в главной форме сохраняется при входе
в подчиненную форму. Это гарантирует, что записи из таблицы или за-
проса на стороне «многие» будут иметь связанную запись в таблице или
запросе на стороне «один». Access автоматически сохраняет каждую
запись, добавляемую в подчиненную форму, и никакие специальные
приемы типа обработки события «До вставки» не требуются.
Начнем с конечного результата. На рис. 4.24 показаны две формы.
Building (информация по зданию) и Flats (данные по квартире). Форма
Flats содержит подчиненную форму Owners (члены семьи квартиро-
съемщика).
54
3. Нажмите на панели элементов кнопку «Подчиненная форма».
Поместите указатель мыши над тем местом первичной формы, где вы
планируете разместить левый верхний угол подчиненной формы. Указа-
тель мыши превратится в значок подчиненной формы с крестиком в ле-
вом верхнем углу.
4. Нажмите левую кнопку мыши и, удерживая ее в нажатом состоя-
нии, переместите курсор по диагонали так, чтобы получилась рамка
требуемого размера. Отпустите левую кнопку мыши. Автоматически за-
пустится построитель подчиненной формы.
5. Первый шаг работы мастера подчиненных форм – определение
данных, которые надо включить в подчиненную форму. «Утопите» кноп-
ку «Имеющиеся таблицы и запросы» и щелкните по кнопке «Далее».
Появится окно для выбора таблиц и полей. Выберите все поля из таб-
лицы Owners (рис. 4.25).
55
Рис. 4.26. Определение полей связи между главной и подчи-
ненной формами
56
умолчанию» и изменим его значение на «Ленточная форма». Удалим за-
головок формы и ключевые поля Street, House и Flat. Для удаления эле-
мента сделайте по нему щелчок левой кнопкой мыши и нажмите клавишу
<Delete>. Уберем совсем кнопки перехода по записям. Для этого на
вкладке «Макет» в качестве значения свойства «Кнопки перехода» по-
ставьте «Нет». Немного отформатируем объекты формы. Для этого по-
местите указатель мыши в любую точку на границе выделенного элемен-
та, отличную от маркеров изменения размеров. Нажмите левую кнопку
мыши и, не отпуская ее, «перетащите» элемент на новое место. Более
точно «выставить» элемент управле-
ния на форме можно при помощи
клавиш клавиатуры с изображением
стрелок при нажатой клавише <Ctrl>,
а поточнее изменить размеры эле-
мента можно при помощи клавиш кла-
виатуры с изображением стрелок при
нажатой клавише <Shift>. После про-
Рис. 4.28. Требование параметра деланных манипуляций получим
форму, изображенную на рис. 4.24.
57
требуемого размера. Отпустите левую кнопку мыши. Автоматически за-
пустится построитель кнопки.
Появится диалоговое окно, показанное на рис. 4.29. Выберите кате-
горию и действия так, как показано на этом рисунке, и нажмите кнопку
«Далее>».
58
7. Третий шаг – отбор сведений для отображения в форме. Так как
запускаемая форма Flats отображает данные, полученные в результате
выполнения запроса по одному конкретному зданию, и никакого допол-
нительного отбора не требует – оставьте появившийся переключатель в
исходном положении: «Открыть форму и показать все записи».
8. Четвертый шаг – оформление внешнего вида кнопки. На ней мож-
но разместить как надпись, так и рисунок, который находится в файле.
При размещении рисунка Access предложит стандартное окно для поис-
ка файла с рисунком.
Последний шаг можно пропустить. Сделайте щелчок левой кнопки
мыши по кнопке «Готово». Компьютер сам присвоит созданной кнопке
имя, под которым она и будет фигурировать как объект VBA в текстах,
сгенерированных Microsoft Access или написанных разработчиком.
Настало время посмотреть на то, что наколдовал Wizard. Так назы-
вается любой построитель (мастер) в оригинальной версии Access. До-
словный перевод этого слова – «колдун». Запустите форму Building в
режиме конструктора и сделайте двойной щелчок по созданной кнопке
«Квартиры». Откроется окно свойств этого объекта. Перейдите на
вкладку «События» и выберите «Нажатие кнопки». Вот результаты ра-
боты «колдуна».
Private Sub Кнопка190_Click()
On Error GoTo Err_Кнопка190_Click
Dim stDocName As String
Dim stLinkCriteria As String
stDocName = «flats»
DoCmd.OpenForm stDocName, , , stLinkCriteria
Exit_Кнопка190_Click:
Exit Sub
Err_Кнопка190_Click:
MsgBox Err.Description
Resume Exit_Кнопка190_Click
End Sub
59
Итак, кнопка для вызова формы Flats из формы Building создана.
Основная часть нашего программного комплекса готова к работе. Да-
вайте в очередной раз подумаем о конечном пользователе. Попробуйте
полностью от начала до конца заполнить карточку здания. Уверен, вы
будете не очень довольны тем, что после заполнения очередного поля и
нажатия клавиши <Enter> курсор перепрыгивает вовсе не на следующее
поле, а совсем в другой угол формы, и вам приходится прибегать к по-
мощи мыши, чтобы вернуть его в нужное место.
Исправим сложившееся положение. Запустите форму Building в ре-
жиме конструктора. В главном окне Microsoft Access выберите пункт ме-
ню «Вид», а в открывшемся подменю – строчку «Последовательность
перехода». Откроется диалоговое окно, в котором отображен список
всех объектов, имеющихся в форме (рис. 4.31). Причем отображены они
в той последовательности, в какой попали в форму (рис. 4.31). Послед-
ней находится наша кнопка с именем «Кнопка190». У нас есть возмож-
ность «перетащить» любой объект в любое место окна. Выделите его
щелчком левой кнопки мыши и творите!
60
4.4. Первые результаты
61
Рис. 4.33. Окно установки фильтра по зданиям
62
конец поля «Примечания». Отпустите кнопку. В главном меню Microsoft
Access выберите пункт «Сервис», а в нем строку – «Орфография».
63
4.5. Создание главной кнопочной формы
Рис. 4.36. Главная кнопочная форма для базы данных Real Estate
Тогда после щелчка мышью по файлу Real Estate.mdb («Проводник»
или «Мой компьютер») пользователь сразу увидит приложение в работе.
Для этого выберите в главном меню Microsoft Access 2002 пункт «Сервис»,
а в открывшемся подменю – строку «Параметры запуска». Появится диало-
говое окно. Щелкните кнопку «Дополнительно», чтобы увидеть окно полно-
стью, как показано на рис. 4.37. Поле со списком «Вывод формы/страницы»
позволяет выбрать форму, которая будет выводиться на экран при откры-
тии базы данных. Задайте заголовок и значок приложения. Access позволя-
ет указать только имя файла значка, если при открытии базы данных он бу-
дет находиться в текущей папке. Например – building.ico. В противном слу-
чае необходимо задать полный путь к этому файлу. Наша главная кнопоч-
ная форма носит название Start. Она и будет запущена на выполнение
после открытия базы данных. Здесь же можно выполнить настройку
главного окна Microsoft Access при работе с базой данных. Просто по-
ставьте или снимите флажки в нужном месте. Создание главной кнопоч-
ной формы (рис. 4.36) не вызовет у вас никаких затруднений, так как
размещение в форме объектов для нас уже пройденный этап. Код VBA
события «Нажатие кнопки» для входа в форму Building имеет вид:
Private Sub Кнопка11_Click()
DoCmd.Close
DoCmd.OpenForm «Building»
End Sub
64
Рис. 4.37. Установка параметров запуска базы данных Real Estate
Кнопка с изображением здания (см. рис. 4.36) носит имя «Кнопка 11».
Первая строка – заголовок процедуры. Вторая строка – закрытие главной
кнопочной формы. Третья – запуск на выполнение формы Building (здание).
5. СОЗДАНИЕ ОТЧЕТОВ
65
1. В окне базы данных выберите значок «Запросы». Он находится в
списке «Объекты». Нажмите кнопку «Создать» на панели инструментов
окна базы данных. Появится окно «Новый запрос». Выберите пункт
«Конструктор» и нажмите кнопку «ОК».
2. Появится список таблиц и запросов базы данных. Перейдите на
третью вкладку «Таблицы и запросы». Выберите запрос Flats и нажми-
те кнопку «Добавить». Таким же образом включите в запрос таблицы
Street и Owners. Верхняя часть окна конструктора примет вид (рис. 5.1).
Рис. 5.1. Верхняя часть окна конструктора запросов после добавления таблиц
66
6. В запрос Document должны попасть данные только по одной кон-
кретной квартире. Ее номер отображен в объекте Flat формы Flats. Для
этого добавим условие отбора по полю Flat: [Forms]![Flats]![Flat].
7. Установите порядок сортировки записей, попавших в запрос
Document. Они должны отображаться в документе в порядке возраста-
ния порядковых номеров проживающих. Текст запроса выглядит так:
SELECT street.NAME, street.SIGN, flats.HOUSE, flats.FLAT, flats.STOREY,
flats.ROOMS, flats.SQUAREFLAT, flats.DWELL, flats.BRANCH, flats.BALCONY,
flats.HEIGHT, flats.ACCOUNT, flats.FAMILY, flats.NAME, flats.SECOND,
owners.NUMBER, owners.FAMILY, owners.NAME, owners.SECOND,
owners.BORN, owners.STATUS,street.FIRST
FROM street INNER JOIN (flats INNER JOIN owners ON
(flats.HOUSE = owners.HOUSE) AND (flats.FLAT = owners.FLAT)
AND (flats.STREET = owners.STREET)) ON street.STREET = flats.STREET
WHERE (((flats.FLAT)=[Forms]![Flats]![Flat]))
ORDER BY owners.NUMBER.
8. Сохраните созданный запрос под именем Document. Не забудь-
те, что корректно он будет запускаться только из формы Flats (кварти-
ры), которая, в свою очередь, не может быть запущена без формы
Building (здание).
5.2. Разработка отчета в режиме конструктора
67
колонтитулы, между которыми находится область данных. Вы можете из-
менить размер любого раздела. Ширина всех разделов должна быть оди-
наковой. Линейки с сантиметровыми делениями по верхнему и левому кра-
ям отчета помогают расположить данные на странице. Если линейки отсут-
ствуют, то для их появления на экране выберите в главном меню Microsoft
Access пункт «Вид», а в открывшемся подменю строку – «Линейка». Верх-
ний и нижний колонтитулы будут напечатаны соответственно вверху и вни-
зу каждой страницы. Их можно убрать совсем с помощью пунктов меню
«Вид» и «Колонтитулы». Вы можете создать заголовок, который будет
напечатан только в начале отчета на первой странице. Для этого исполь-
зуйте пункт меню «Вид» и строку «Заголовок/примечание отчета».
68
2. «Перетащите» поля Name, Sign, House и Flat из списка полей в за-
головок отчета. Выполните форматирование. Для этого выберите нуж-
ные элементы управления, щелкая по ним левой кнопкой мыши при на-
жатой клавише <Shift>. Откройте пункт «Формат» главного окна и пункт
«Выровнять» открывшегося подменю. В появившемся окне вам будет
предложено несколько способов форматирования.
69
Имя кнопки – «Кнопка 40». Имя отчета – «Document». Отчет запус-
кается в режиме предварительного просмотра – acPreview. В случае
возникновения ошибки при выполнении отчета, о нем сообщит Microsoft
Access, а не VBA – MsgBox Err.Description.
70
ного окна Microsoft Access, а в нем строку «Печать». На экране появится
стандартное окно «Печать» вашей операционной системы. Можете рас-
печатать отчет целиком или только необходимые страницы. Также име-
ется возможность указать количество экземпляров отчета и отправить
отчет в файл для последующей распечатки.
Справка, полученная в результате работы Microsoft Access, пред-
ставляет собой официальный документ. Инспектору остается только по-
ставить на нем подпись и печать. Однако в таком виде адрес здания в
ней всегда будет начинаться с признака, написанного с большой буквы
(Улица, Переулок, Проспект и т.д.), а это не совсем то, что нам нужно!
Ведь в качестве признака может фигурировать слово, стоящее в адресе
на втором месте и начинаться с маленькой буквы (шоссе, проезд, буль-
вар и т.д.). Об этом уже шла речь в табл. 2.1. и все необходимые атри-
буты для правильной записи адреса нами уже предусмотрены. Вернем-
ся к нашему отчету, и внесем в него необходимые изменения (рис. 5.8).
71
клавишу Delete. Поле SIGN переименуем в ADDRESS, увеличив его в
размерах и отцентрировав. Выделите поле мышью, и клавишами кла-
виатуры с изображением стрелок при нажатой клавише <Shift> добей-
тесь требуемых результатов. В окне свойств напротив надписи “Имя”
поставьте ADDRESS. В конструкторе отчета в поле ADDRESS появится
надпись “Свободный”. В окне свойств напротив надписи “Выравнивание
текста” в раскрывающемся поле со списком найдем значение “по цен-
тру”. Сделаем поле ADDRESS вычисляемым, включив в состав выраже-
ния необходимые поля и надписи в требуемом порядке. Для этого в окне
свойств найдем надпись “Данные” и щелчком по кнопке запустим по-
строитель выражений (рис. 5.9).
72
нем поле. В правом поле будут выведены все операторы выбранного
типа.
Элементы выражения. В нижней части окна построителя находят-
ся три поля.
В левом поле выводятся папки, содержащие таблицы, запросы,
формы, объекты базы данных, встроенные и определенные пользовате-
лем функции, константы, операторы и общие выражения.
В среднем поле задаются определенные элементы или типы элемен-
тов для папки, заданной в левом поле. Например, если выбрать в левом
поле Встроенные функции, то в среднем поле появится список всех ти-
пов функций Microsoft Access.
В правом поле выводится список значений (если они существуют)
для элементов, заданных в левом и среднем полях. Например, если вы-
брать в левом поле Встроенные функции и тип функции в среднем, то в
правом поле будет выведен список всех встроенных функций выбранно-
го типа.
Примечание. При вставке идентификатора в выражение построитель
вставляет только те его части, которые требуются в текущем контексте.
Например, при запуске построителя выражений из окна свойств формы
«Building» и вставке идентификатора для свойства Вывод на экран (Visi-
ble) будет вставлено только имя свойства Visible. При использовании
данного выражения вне контекста формы необходимо включать полный
идентификатор: Forms![Building].Visible
Выберите мышью кнопку и сделайте по ней щелчок. Выражение,
создаваемое при помощи построителя, как правило, начинается со знака
присваивания.
Далее используем встроенную функцию:
73
сразу же переведет на русский язык (Истина и Ложь), если Вы рабо-
таете с русскоязычной версией Microsoft Access XP (рис. 5.10).
=IIF([First]=Истина;
Trim([street.Name]+' '+[Sign]+', дом '+(Trim([House]))+', кв.'+Trim(Str([Flat])));
Trim([Sign]+' '+[street.Name])+', дом '+(Trim([House]))+', кв.'+Trim(Str([Flat])))
74
той. В выражении общее число открытых круглых скобок обязательно
должно быть равно числу закрытых.
Чтобы работать с Microsoft Access более эффективно, необходимо
научиться создавать простые выражения с использованием функций и
операций. Выражения применяются, как правило, для проверки условий
или для арифметических вычислений.
Выражение создается с помощью комбинации идентификаторов,
операторов и значений, обеспечивающей получение необходимого ре-
зультата. Выражения можно создавать самостоятельно или с помощью
построителя выражений.
75
Таблица 5.2.
Операторы сравнения
76
№ Функция Описание функции Пример Значение
4 Exp() Возвращает значение экспоненты Exp(1) 2.7182818
Округляет число до ближайшего ми- Int(-15.2) -16
5 Int()
нимального целого (см. примеры) Int(13.6) 13
Возвращает натуральный логарифм
6 Log() Log(10) 2.302585
числа
0.2895625
Возвращает случайное число в диа-
7 Rnd() Rnd() (произ-
пазоне от 0 до 1
вольное)
Возвращает 1 для положительного Sgn(-10.1) -1
8 Sgn() числа, 0 для нулевого, -1 для отрица- Sgn(0) 0
тельного числа Sgn(10.1) 1
Возвращает синус угла, выраженного
9 Sin() Sin(1) 0.8414710
в радианах
10 Sqr() Возвращает квадратный корень Sqr(2) 1.4142136
77
6. ДОПОЛНИТЕЛЬНЫЕ ВОЗМОЖНОСТИ
78
файла базы данных, и папку, в которую будет помещена приведенная к
формату Access 2000 база.
79
но их нельзя будет просматривать или изменять, благодаря чему
уменьшится размер базы данных. Кроме того, будет оптимизировано
использование памяти, что повысит быстродействие.
Сохранение базы данных как MDE-файла делает невозможным вы-
полнение следующих действий.
• Просмотр, изменение или создание форм, отчетов или модулей в
режиме конструктора.
• Добавление, удаление или изменение ссылок на библиотеки
объектов или базы данных.
• Изменение программы с помощью свойств или методов Microsoft
Access или модели объектов VBA (MDE-файл не содержит текстов ис-
ходных программ).
• Импорт и экспорт форм, отчетов или модулей. Однако таблицы, за-
просы, страницы доступа к данным и макросы можно импортировать и
экспортировать в базы данных, не являющиеся MDE-файлами. Любые
таблицы, запросы, страницы доступа к данным или макросы в базах дан-
ных, являющихся MDE-файлами, могут быть импортированы в другую ба-
зу данных Access, но формы, отчеты или модули не импортируются.
80
1. Откройте окно базы данных Real Estate.
2. Выделите объект, который следует передать в Excel. Пусть это бу-
дет запрос Area, в котором содержатся данные по зданиям Кировского
района (рис. 6.2).
81
6.6. Повышение быстродействия Microsoft Access
82
7. ПЕРЕВОД ПРИЛОЖЕНИЯ НА ПЛАТФОРМУ КЛИЕНТ-СЕРВЕР
83
Если автоматического запуска не произошло, то мастер установки
(Installation Wizard) можно запустить с помощью файла setupsql.exe, ко-
торый находится в папке X86\SETUP. Первое окно мастера установки
(рис. 7.2) является приветствием и приглашает к началу установки.
Рис. 7.2. Запуск мастера установки SQL Server 2000 Developer Edition
84
го общего с одноименной системной базой SQL Server. Изменить имя
компьютера в данном окне нельзя.
При выборе пункта Remote Computer будет выполнена удаленная
установка, а поле в центре окна станет доступным. Используя кнопку
Browse, выберите имя удаленного компьютера, на который и будет вы-
полнена установка SQL Server. Переключатель Virtual Server в нашем
случае недоступен, так как мастер установки мы запустили на обычном
компьютере, а виртуальный сервер можно установить только на кла-
стерную систему, включающую до четырех 32-процессорных серверов.
Третье окно мастера (рис. 7.4) служит для выбора режима установки.
85
Оно предназначено для ввода сведений о владельце SQL Server и
содержит информацию о пользователе, выполнившем установку и об
организации, купившей данный программный продукт.
Следующий этап установки – лицензионное соглашение (рис. 7.6),
содержащее условия эксплуатации и ответственность пользователя в
случае их нарушения.
86
ager, Performance Monitor, Query Analyzer и электронную документацию
Book Online. Сам SQL Server не устанавливается.
Выбор второго пункта Server and Client Tools предписывает мастеру
установки помимо инструментов администрирования и электронной до-
кументации выполнить установку непосредственно SQL Server. Это оз-
начает, что на компьютере появятся службы MSSQLServer, SQLServer-
Agent, MS DTC и Microsoft Search.
Третий пункт Connectivity Only позволяет установить только сете-
вые библиотеки. В результате у Вас появится возможность устанавли-
вать с Вашего компьютера соединение с сервером SQL Server. Любой из
первых двух режимов включает в себя и этот третий. Мы устанавливаем
новую копию SQL Server, поэтому установите переключатель в положе-
ние Server and Client Tools. После нажатия кнопки Next появится оче-
редное окно мастера установки (рис. 7.8), которое используется для ука-
зания имени устанавливаемой копии SQL Server.
87
значены корпорацией Microsoft. Предлагаю Вам самим принять участие
в настройке параметров конфигурации и выбрать переключатель Cus-
tom. В нижней части окна отображен размер требуемого и свободного
пространства на жестких дисках, выбранных для установки SQL Server.
Внимательно оцените эти цифры и сделайте правильный вывод о про-
должении установки программного продукта.
88
Мне пришлось добавить некоторые из отсутствующих компонентов в
стандартной (Typical) установке. Переходим к окну с учетными записями
служб (рис. 7.11). С его помощью после установки можно будет управ-
лять параметрами запуска служб MSSQLServer и SQLServerAgent.
89
Нажмите на кнопку Next, и перед Вами появится очередное окно
мастера установки SQL Server (рис. 7.12).
90
На этот раз настала очередь конфигурирования сетевых библиотек
(рис. 7.14). Как видно из рисунка часть библиотек недоступна. Это объ-
ясняется тем, что в операционной системе не установлены сетевые про-
токолы, использующие эти библиотеки для передачи данных.
91
Предварительная часть установки закончена. Окно (рис. 7.16) сооб-
щает, что после нажатия кнопки Next начнется процесс установки сер-
вера, который займет несколько минут. Будет выполнено копирование
файлов, регистрация служб, установка выбранных компонентов и кон-
фигурирование сервера.
92
7.3. Преобразование базы данных Access в базу SQL Server
93
не существует, то успешно работающее приложение с базой
данных Аccess при работе с базой SQL Server даст сбой. Дан-
ные в такой таблице не удастся обновить.
Посмотрите внимательно на рисунок 2.1. Таблица Owners не имеет
первичного ключа. Ни одно поле этой таблицы не выделено жирным
шрифтом. Исправим ошибку, добавив составной первичный ключ street+
house+ flat+ number. Откройте таблицу Owners в режиме конструктора.
Для этого в окне базы данных Real Estate выделите таблицу Owners и
щелкните мышью по кнопке «Конструктор» на панели инструментов окна
базы данных. Она расположена рядом с пиктограммой . Выделите по-
ле Street, нажав на кнопку выделения поля в левой части бланка струк-
туры таблицы . Строчка, относящаяся к этому полю, будет выделена
черным цветом. Нажмите клавишу <Ctrl> и, удерживая ее, щелкните по-
следовательно кнопки выделения напротив полей House, Flat и Number.
Черных строчек станет четыре (рис. 7.18).
94
lect на доступ к системным таблицам в главной базе данных. Лучше все-
го для этих целей знать пароль системного администратора sa. Обрати-
те внимание на то, что для работы мастера не требуется использование
ODBC для подключения к Microsoft SQL Server. Его очередь может на-
ступить позже, когда переведенная в SQL Server база данных по Ваше-
му желанию начнет работать с другим клиентом (например, Visual Fox-
Pro или Delphi). Напомню, что ODBC (Open Database Connectivity, соеди-
нение по открытым базам) – это такая технология, которая позволяет
приложениям обмениваться данными, несмотря на различия в приме-
няемых системах управления базами данных. Если Вы останетесь на
позициях Access-SQL Server, то ODBC совсем не понадобится.
95
Все условия, необходимые для запуска мастера преобразования вы-
полнены. Запустим сам процесс.
MS SQL Server должен быть в состоянии Running. В окне Microsoft
Access должна быть открыта база Real Estate, содержащая в нашем
случае семь таблиц (рис. 7.19). Остальные действия легко понять из ри-
сунка 7.20.
На первом шаге (рис. 7.21) мастер предлагает воспользоваться су-
ществующей базой данных SQL Server или создать новую. После уста-
новки SQL Server мы не создавали никаких баз данных на этом сервере,
поэтому выбираем второй пункт в этом окне.
96
перенос базы Microsoft Access на другой SQL Server – найдите его имя,
раскрыв при помощи мыши поле со списком, расположенное в верхней
части окна. Для входа на наш SQL Server можно воспользоваться учет-
ной записью его администратора sa, что и показано на рисунке 7.22, а
можно использовать доверительные отношения и попасть на SQL Server
под именем администратора операционной системы Вашего компьюте-
ра. Для этого поставьте флажок в поле Доверительное соединение. В
этом случае поля Код входа и Пароль станут недоступными. Этот вход
мы обеспечили себе при генерации SQL Server. Отсылаю Вас к рисунку
7.11, на котором показано окно Service Account мастера установки сер-
вера. Имя новой базы данных мастер преобразования сформирует сам,
добавив окончание SQL к имени базы данных Microsoft Access – real es-
tate. Сформированное имя (real estateSQL) Вы можете заменить другим.
97
Несколько слов об использовании кнопки DRI (Declarative Referential
Integrity— декларативная целостность данных)
Если при выполнении преобразования в формат SQL Server 2000
выбран параметр DRI для предварительного преобразования таблиц,
декларативная целостность данных предотвращает замену ранее пре-
образованных таблиц. В случае необходимости можно сбросить (уда-
лить) целую преобразованную базу данных SQL Server с помощью SQL
Server Enterprise Manager и снова преобразовать базу данных Access.
Если требуется повторно преобразовать только некоторые таблицы, не-
обходимо сначала сбросить эти таблицы и все другие таблицы, с кото-
рыми они связаны, начиная с таблицы на стороне «многие» в отношении
«один - ко многим» (таблица, на первичный ключ которой нет ссылок из
другой таблицы), а затем повторно преобразовать весь набор таблиц.
Мастер преобразования в формат SQL Server может установить отно-
шения только между связанными таблицами, преобразованными в одно
и то же время, но не может установить отношения между этими табли-
цами и таблицами, уже существовавшими на сервере.
98
3. Преобразовать только данные из формата базы данных Access
в формат базы данных SQL Server. Клиентскую часть в этом
случае придется писать заново, возможно, используя другие
более серьезные программные средства, хотя можно оставить
и Access. Не забывайте известную истину о том, что скупой
платит дважды. На мой взгляд, это самый правильный выбор
для дальнейшего развития приложения, которое переросло са-
мо себя. Да и пользователь, выросший на этом приложении,
наверняка потребует его коренной переделки.
99
Рис. 7.26. Понятие проекта Microsoft Assess
100
разования с помощью мастера необходимо вручную преобразовать в
модулях программы, использующие наборы записей, из формата объек-
тов доступа к данным (DAO) в формат объектов данных ActiveX (ADO), а
также проверить коды структур всех таблиц и запросов (мастер преоб-
разования в формат SQL Server не преобразует инструкции SQL языка
описания данных (Data Definition Language).
Объекты определения данных Access преобразуются в базу данных
SQL Server по следующим правилам (рис.7.24).
Преобразование индексов. Если установлен флажок Индексы,
мастер преобразования в формат SQL Server преобразует все индексы.
Мастер преобразует первичные ключи Microsoft Access в некластеризо-
ванные, уникальные индексы Microsoft SQL Server и помечает их как
первичные ключи SQL Server. Если выбрано связывание преобразуемой
таблицы SQL Server с базой данных Access, мастер преобразования до-
бавляет также префикс «aaaaa». Microsoft Access выбирает в качестве
первичного ключа первый индекс по алфавиту из списка доступных ин-
дексов, а префикс «aaaaa» гарантирует выбор нужного индекса.
Имена всех остальных индексов остаются без изменений, кроме
имен, в которых недопустимые символы заменяются символами «_».
Уникальные и неуникальные индексы Microsoft Access становятся уни-
кальными и неуникальными индексами SQL Server. Обратите внимание
на то, что SQL Server не поддерживает индексы по возрастанию или
убыванию. Уникальный индекс связанной таблицы должен быть обнов-
ляемым в Microsoft Access. Мастер преобразования в формат SQL
Server может преобразовать существующий уникальный индекс, но не
может создать индекс, если его не существует. При необходимости
иметь возможность обновлять таблицы следует добавить уникальные
индексы в каждую таблицу Access перед преобразованием.
Правила проверки на значения. Если в этом поле установлен
флажок, мастер преобразует все условия на значения таблиц, записей и
полей, а также свойства полей Обязательное поле как триггеры обнов-
ления и вставки.
Триггер представляет собой ряд инструкций Transact-SQL, связанных
с таблицей SQL Server. Таблица может иметь три триггера, по одному на
каждую из команд, способных изменить данные в таблице: UPDATE,
INSERT и DELETE. Триггер автоматически выполняется при выполнении
команды. Мастер преобразования в формат SQL Server использует для
проверки условий на значение на уровне полей триггеры, а не правила
SQL Server, поскольку правила SQL Server не позволяют выводить на
экран специальные сообщения об ошибках.
Каждое условие на значение не обязательно должно соответство-
вать одному триггеру. Каждое условие на значение может стать частью
101
нескольких триггеров, а каждый триггер может содержать программу для
эмуляции функциональности нескольких условий на значение.
Когда для свойства поля Microsoft Access Обязательное поле уста-
новлено значение «Истина», пользователь не может вставить запись,
оставив это поле пустым (если к полю не присоединено значение по
умолчанию), или сделать это поле пустым при обновлении записи. Обя-
зательные поля преобразуются в поля SQL Server, не допускающие зна-
чений Null. Мастер преобразования в формат SQL Server также создает
фрагмент программы Transact-SQL, представляющий собой сообщение,
аналогичное тому, которое выводится в Microsoft Access, когда при до-
бавлении или обновлении записи поле оказывается пустым.
Если установлен флажок Значения по умолчанию, мастер преобра-
зует все значения по умолчанию как значения ANSI (American National
Standards Institute), а не как стандартные объекты, присоединенные к
соответствующему полю SQL Server. Значения по умолчанию в SQL
Server, в отличие от значений по умолчанию в Access, независимы от
какого-либо конкретного поля или таблицы. Создав значение по умолча-
нию, можно присоединять его к любому числу различных полей.
Преобразование связей между таблицами. Для преобразования
связей между таблицами и целостности данных можно использовать
либо триггеры обновления, вставки и удаления, либо DRI (Declarative
Referential Integrity— декларативная целостность данных). DRI действует
так же, как целостность данных Microsoft Access, определяя ограничения
по первичному ключу для базовых таблиц (сторона «один» отношения
«один-ко-многим») и ограничения по внешнему ключу для внешних таб-
лиц (как правило сторона «многие» отношения «один-ко-многим»). Од-
нако мастер не преобразует возможности каскадного обновления и уда-
ления, доступные в Microsoft Access в базу данных SQL Server. Это
предстоит сделать разработчику.
Использование триггеров. Если в связях между таблицами
Microsoft Access определены каскадные обновления или удаления, и
требуется сохранить эти возможности в преобразованных таблицах, ус-
тановите флажки Связи таблиц и Триггеры, чтобы преобразовать все
каскадные обновления или удаления как триггеры для поддержания це-
лостности данных.
Связь между таблицами не обязательно должна соответствовать од-
ному триггеру. Каждое отношение может стать частью нескольких триг-
геров, а каждый триггер может содержать программу для эмуляции
функциональности нескольких условий целостности данных. Триггеры
вставки используются в дочерних таблицах, а триггеры удаления в ро-
дительских таблицах.
Примечание. Средства разработки Microsoft SQL Server Design Tool
требуют наличия DRI для чтения схемы базы данных SQL Server. Для
102
обеспечения возможности чтения схемы базы данных средствами раз-
работки SQL Server Design Tools при поддержании целостности данных
с помощью триггеров мастер преобразования в формат SQL Server на-
лагает условия DRI на связи, но отключает проверку ограничений по
внешнему ключу.
Использование DRI. Если в базе данных не определены каскадные
обновления или удаления, либо если утрата этих возможностей в пре-
образованной базе данных не имеет значения, установите флажки Свя-
зи таблиц и DRI, чтобы использовать DRI для наложения условий цело-
стности данных. В этом случае мастер выводит предупреждение о том,
что возможности каскадного обновления и удаления будут утеряны.
Добавление в таблицы полей штампа времени. Microsoft SQL
Server использует поля timestamp для обозначения измененных записей
(без указания времени изменения) путем создания поля с уникальными
значениями и последующего обновления этого поля при каждом обнов-
лении записи. Для связанной таблицы Access использует значение поля
timestamp, чтобы перед обновлением поля определить, было ли оно из-
менено. Как правило поле timestamp обеспечивает наилучшее быстро-
действие и надежность. При отсутствии полей timestamp SQL Server
должен проверить все поля записи, чтобы определить, была ли она из-
менена, что снижает быстродействие.
Если выбрано значение по умолчанию, Да, определяется масте-
ром, мастер преобразования в формат SQL Server создает новые поля с
типом данных timestamp в таблицах SQL Server, преобразованных из
таблиц Microsoft Access, содержащих поля с типами данных «С плаваю-
щей точкой (4 байт или 8 байт)», поле Memo, или поле объекта OLE.
Также можно выбрать режим создания мастером полей timestamp
для всех преобразуемых таблиц, независимо от типов данных полей, ко-
торые в них содержатся. Для этого следует выбрать вариант Да, всегда.
Это повысит быстродействие преобразованных таблиц Access, которые
могут не содержать полей Memo, полей объектов OLE или полей с чис-
лами с плавающей точкой, но содержат поля других типов.
Примечание. Microsoft Access не выполняет в связанных таблицах
SQL Server проверку с целью определить, изменялись ли поля Memo
или поля объектов OLE, поскольку размеры этих полей могут исчислять-
ся многими мегабайтами, а сравнение может слишком перегружать сеть
и занимать слишком много времени. Поэтому, если были изменены
только текстовые поля или поля изображений, а поля timestamp отсутст-
вуют, Microsoft Access уничтожает изменения. Кроме того, значения поля
с плавающей точкой могут производить впечатление измененных при
отсутствии изменений, поэтому при отсутствии полей timestamp Microsoft
Access может определить, что запись была изменена, хотя на деле это
не так.
103
Отказ от преобразования данных. По умолчанию мастер преобра-
зует все данные в формат SQL Server. Если установлен флажок Соз-
дать только структуру таблицы и не преобразовывать данные, пре-
образуется только структура данных.
Все необходимые данные для работы мастера преобразования соб-
раны. Щелчок по кнопке Готово в шестом окне (рис. 7.27) запустит про-
цесс конвертации файла real estate.mdb в проект Microsoft Access real
estateCS.adp и базу данных Microsoft SQL Server real estateSQL (рис.
7.28).
104
Очередное окно мастера преобразования (рис. 7.29) сообщает об
ошибках, возникших в процессе конвертации, а полное описание этого
процесса Microsoft Access помещает в специальный отчет (рис. 7.30).
105
эти отличия и продумать, что нужно изменить в MDB-приложении, ста-
раясь предугадать последствия конвертации.
В доказательство вышесказанного запустим преобразованное при-
ложение на выполнение (рис. 7.31).
106
эта кнопка светится красным цветом. После завершения операции - ста-
новится недоступной.
Оставим на некоторое время первый способ конвертации. Вернемся
к рисунку 7.25 и рассмотрим вторую возможность перевода действующе-
го приложения на платформу клиент-сервер, а доведение клиентской
части real estateCS.adp и базы данный SQL Server real estateSQL до
рабочего состояния выполним в следующей главе.
107
Рис. 7.34. Таблицы базы данных после преобразования
108
рование Источники данных (ODBC). Откроется окно администратора
ODBC (рис. 7.36).
109
Появится первое окно диалога мастера создания DSN для Microsoft
SQL Server (рис. 7.38).
110
строен для работы с пользователем, вошедшим в сеть. Если SQL Server
использует свою встроенную систему защиты – установите переключа-
тель With SQL Server authentication using a login ID and password en-
tered by the user. Разобраться с этими параметрами Вам поможет рису-
нок 7.12 мастера установки самого SQL Server. В следующем окне (рис.
7.40) следует ввести название базы данных, с которой будет установле-
но соединение. Для этого предназначено поле со списком в верхней
части окна. Остальные параметры не потребуют изменений.
111
Рис. 7.42. Тестирование соединения с SQL Server
112
па к данным. Конечно, Вы можете разрабатывать свои приложения кли-
ент-сервер на основе технологии ODBC, но помните, что ей на смену
пришла новая технология OLE DB, с тем, чтобы устранить недостатки
своей предшественницы. Главный недостаток ODBC – доступ к драйве-
рам посредством API. Для выполнения простых задач программист дол-
жен вызвать значительное количество сложных функций. И, несмотря на
то, что Microsoft и другие корпорации предлагают разработчикам высо-
коуровневые надстройки, по своей сути ODBC – очень уж сложная тех-
нология. OLE DB основана не на API, а на COM. Это значительно облег-
чает разработку не только пользовательских приложений, но и средств
доступа к данным OLE DB, называемых поставщиками. Отныне в их ро-
ли могут выступать любые COM-компоненты.
Вернемся к третьему способу преобразования приложения клиент-
сервер (рис. 7.25), который предусматривает cоздание базы SQL Server
без изменения приложения Access. Понятно, что это исходное приложе-
ние с полученной базой данных SQL Server работать не сможет. Если в
Вашем распоряжении достаточно времени и Вам больше нравится дру-
гое клиентское программное системное обеспечение, то смело выби-
райте этот вариант. Всегда лучше разработать новый продукт на «лю-
бимом языке», чем мучиться с переделкой старого.
Ну а теперь, как и было обещано ранее, выполним модификацию
проекта Access и базы SQL Server (первый способ), заставив приложе-
ние работать также корректно в режиме клиент-сервер, как оно работает
только под управлением Microsoft Access. Заранее хочу Вас успокоить -
переделки потребуются незначительные.
113
мастер преобразования. В процессе изучения этой главы у разработчика
может возникнуть вполне резонный вопрос: ”Так стоит ли пользоваться
мастером преобразования, если он не справляется со своей работой на
все сто?”. Не сомневайтесь – стоит! Он прекрасно выполняет перенос
данных и конвертирует в новое приложение до 90% объектов, так что
основной объем работы за нас будет сделан. Но без некоторой доработ-
ки все-таки не обойтись.
114
Если SQL Server запущен, то на экране появится окно (рис.8.2).
115
грамме Diagrams, которая находится в правой части окна (рис.8.2). В
строке меню Enterprise Manager выберите пункт Действие, а в открыв-
шемся списке пункт New Database Diagram (рис. 8.3).
116
мастером схемы данных будет мало толку. Щелчок по кнопке Далее
приведет нас к очередному информационному окну (рис. 8.6).
117
Заглянем в раздел Views окна SQL Server Enterprise Manager (рис. 8.2).
118
ра DBO (Data Base Owner). Под ней скрывается специальный пользова-
тель, обладающий максимальными правами в этой базе данных.
119
(номер улицы) и @HouseSql (номер дома). Механизм передачи значений
этим параметрам реализован довольно просто. Запустим файл real es-
tateCS.adp и откроем в конструкторе форму Flats (рис. 8.10). Щелчком
правой кнопки мыши откроем также окно свойств этой формы. Вид этого
окна в проекте Access (файл real estateCS.adp) несколько отличается от
вида в базе данных Access (файл real estate.mdb).
@StreetSql SmallInt=[Forms]![Building]![Street],
@HouseSql nVarChar(10)=[Forms]![Building]![House]
120
- вернуться к исходному файлу real estate.mdb и изменить структуру
базы данных. Соединить таблицы flat и account в одну. На работе
исходного приложения это никак не отразится. Уничтожить базу дан-
ных real estateSQL SQL сервера при помощи SQL Server Enterprise
Manager и снова запустить мастер преобразования в формат SQL
Server.
121
Схема исходной базы Microsoft Access после слияния таблиц не-
сколько изменится (рис. 8.12). Снова запустим мастер преобразования в
формат SQL Server. Не закрывая проект Microsoft Access, откроем в кон-
структоре нашу таблицу flat. Перед Вами совсем другая картинка (рис.
8.13). Другой тип данных, указана длина поля, а также имеется возмож-
ность контролировать заполнение значений. Не забывайте, что это таб-
лица SQL сервера, связанная с проектом Access.
122
В этом случае не следует забывать про то, что пользователь может
занести в базу данных две квартиры с одинаковым номером лицевого
счета. Следует лишить его этой возможности. Средств для этого у Вас
достаточно, только правильно воспользуйтесь ими. Один из вариантов
будет рассмотрен в главе 8.4. Но и это еще не все. Необходимо внести
изменения в хранимую процедуру Flats (рис.8.9). Мастер по-прежнему
не в силах правильно преобразовать запрос. Таблица теперь одна, сле-
довательно, текст процедуры будет попроще:
123
Корректировка исходного файла Microsoft Access real estate.mdb c
уничтожением базы данных real estateSQL Microsoft SQL Server и новым
запуском мастера преобразования в формат SQL – далеко не лучший
вариант доработки приложения клиент-сервер. Мы рассмотрели его
только в качестве демонстрации такой возможности. Профессиональные
разработчики запускают мастер преобразования только один раз, а в
дальнейшем вносят изменения в клиентскую и серверную части разра-
батываемого приложения.
Сейчас мы внесем изменения в базу данных real estateSQL средст-
вами Microsoft SQL Server.
Запустим SQL Server Enterprise Manager (рис. 8.16). В левой части
окна выберем наш SQL Server – Master (Windows NT). Откроем его базы
данных. Найдем среди них real estateSQL. Выберем пункт Tables. Спи-
сок таблиц этой базы данных откроется в правой части окна.
124
данные из нее в таблицу flat, разумеется, если они там есть. Найдите
способы переноса данных самостоятельно.
125
Добавить поля в таблицу flat можно и в проекте Access (рис. 8.18).
Открывать окно конструктора таблиц в Access Вы уже умеете. Для мо-
дификации таблицы можно выбрать любой из этих двух способов.
126
Вы, наверное, решили, что текст этой процедуры написан в тексто-
вом редакторе разработчиком, хорошо владеющем Transact-SQL. Оши-
баетесь! Без конструктора запросов Microsoft Access не обошлось (рис.
8.20).
127
real estateSQL уже заботливо приготовлен конструктором. Выберем три
наших таблицы. Они появятся в верхней части окна вместе со связями.
Закройте окно «Добавление таблицы».
128
Отметьте флажками те поля в таблицах street, flat и owners, кото-
рые должные попасть в текст сохраненной процедуры. Они сразу будут
отображены в таблице, расположенной в нижней части окна (рис. 8.22).
Для полей STREET, HOUSE и FLAT в столбец «Критерий» занесите пара-
метры будущей процедуры =@StreetSql, =@HouseSql и =@FlatSql.
Сделайте щелчок по пиктограмме основного окна Microsoft Access.
Появится третья часть окна конструктора с текстом сохраненной проце-
дуры (рис. 8.20). Некоторые поля в выбранных таблицах имеют одина-
ковые названия, поэтому конструктор использует понятие псевдоним
(Expr1, Expr2, Expr3 и т.д.). Если у поля есть псевдоним, то именно его
следует использовать в форме или отчете проекта Microsoft Access, а
это означает, что переделка отчета Document неизбежна. Откроем его в
конструкторе отчетов (рис. 8.23).
@StreetSql SmallInt=[Forms]![Building]![Street],
@HouseSql nVarChar(10)=[Forms]![Building]![House],
@FlatSql SmallInt=[Forms]![Flats]![Flat]
129
Запустим отчет Start Building Flats Документ (рис 8.24).
130
Осталось разобраться с последней ошибкой, возникающей при изме-
нении адреса здания (рис 8.26). Пусть нам необходимо заменить адрес
здания с “Проспект 60 Лет Октября” на “Улица Авроры”. Проект Microsoft
Access выдаст одну за другой две ошибки. Дело вот в чем. Для преобра-
зования связей между таблицами и целостности данных мы использо-
вали DRI - Declarative Referential Integrity (рис. 7.24). На мой взгляд это
более легкий путь, чем использование триггеров, так как хотя бы при од-
ном неудачном преобразовании триггера, нам пришлось значительно
углубиться в изучение Transact-SQL, что для начинающего разработчика
в общем-то нежелательно. Теперь же несколько щелчков мышью испра-
вят все дело. DRI действует так же, как целостность данных Access, од-
нако не обладает возможностями каскадного обновления и удаления.
Это как раз и явилось причиной ошибки преобразования.
131
Выведем на экран диаграмму базы данных real estateSQL Microsoft
SQL Server (рис. 8.27). О том как это сделать – рассказано в главе 8.2.
Нам необходимо внести изменения в связи между таблицами: Street –
Building, Biulding – Flat и Flat – Owners. Начнем со связи между Building и
Flat. Сделайте по ней щелчок правой кнопкой мыши. Появится меню, в
котором надо выбрать пункт Properties (рис. 8.28).
132
Enforce relationship for replication. Применить связь при реплика-
ции. В этом поле уже имеется флажок – не снимайте его.
Enforce relationship for INSERTs and UPDATEs. Применить связь
для INSERT и UPDATE. Применение ограничения при операциях встав-
ки, удаления и обновления данных в таблице внешнего ключа. Кроме то-
го, установленный флажок запрещает удаление из таблицы первичного
ключа строк, для которых существуют связанные строки в таблице
внешнего ключа и каскадное обновление связанных полей. Вот в этом
как раз и состоит наша проблема. Для ее решения предназначено пред-
последнее поле на этой вкладке.
Cascade Update Related Fields. Только для Microsoft SQL Server
2000 и более поздних версий. Задает в базе данных автоматическое об-
новление значений внешнего ключа при любом обновлении значения
первичного ключа. Обязательно поставьте флажок в это поле! Ошибка
при изменении адреса здания исчезнет. Не забудьте только про еще две
оставшиеся связи (Street – Building и Flat – Owners). С ними следует
проделать такую же операцию.
Cascade Delete Related Records. Каскадное удаление связанных по-
лей. Только для Microsoft SQL Server 2000 и более поздних версий. За-
дает в базе данных автоматическое удаление строк из таблицы внешне-
го ключа при любом удалении адресуемой строки в таблице первичного
ключа. Не трогайте это поле. Пусть оно останется пустым. Представьте
себе ситуацию: Вы удалили улицу из таблицы street и вместе с ней про-
пали все здания с квартирами и собственниками, расположенные на
этой улице. Это поле – не для нашей задачи!
Наверняка Вы еще много раз будете возвращаться к Вашей базе
данных в Microsoft SQL Server, улучшая ее работоспособность. В боль-
шинстве случаев Вам не понадобятся системные таблицы, хранимые
процедуры, виды SQL Server и т.д. Сделайте их невидимыми (рис. 8.29).
Снимите флажок в поле Show system databases and system objects.
133
8.3.4. Стандартные функции MS SQL Server
В Microsoft SQL Server имеется набор стандартных встроенных
функций. Многие из них отличаются от функций Microsoft Access. Чтобы
избежать ненужных потерь времени при написании Вами хранимых про-
цедур, триггеров, видов и своих пользовательских функций, которые
появились в MS SQL Server, начиная с версии 2000, приведу наиболее
часто встречающиеся из них. Математические функции SQL Server при-
ведены в табл. 8.1.
Таблица 8.1.
Математические функции SQL Server 2000
134
№ Функция Описание функции Пример Значение
0.8529751
Возвращает случайное число в диапа-
18 Rand() Rand() (произ-
зоне от 0 до 1
вольное)
Возвращает 1 для положительного Sign(-10.1) -1
19 Sign() числа, 0 для нулевого, -1 для отрица- Sign(0) 0
тельного числа Sign(10.1) 1
Возвращает синус угла, выраженного в
20 Sin() Sin(1) 0.8414710
радианах
21 Sqrt() Возвращает квадратный корень Sqrt(2) 1.4142136
22 Square() Выполняет возведение в квадрат Square(1.2) 1.44
23 Tan() Возвращает тангенс угла, в радианах Tan(1) 1.5574077
135
8.4. Замена англоязычных сообщений СУБД на русские
136
Следующий шаг на пути создания уникального индекса показан на
рис. 8.32. В поле Index name наберите название индекса – Account. Для
достижения на-
шей цели назва-
ние индекса и по-
ля должны совпа-
дать. Поставьте
флажок в поле
ACCOUNT. Не
следует делать
индекс кластери-
зованным. Это
приведет к пере-
стройке всей таб-
лицы по возрас-
танию или убыва-
нию значения по-
ля ACCOUNT, в
зависимости от
того, какой путь
Вы выберете в
разделе Change
column order (Up
или Down). А вот
флажок в поле
Рис. 8.32. Создание индекса по полю Account Unique values
просто необхо-
дим. Все данные введены. Вы можете посмотреть текст процедуры соз-
дания индекса на Transact SQL, щелкнув по кнопке Edit SQL. Он появит-
ся в отдельном окне. Для завершения всей работы по созданию индекса
не забудьте про кнопку OK.
Дальнейшие действия связаны с доработкой проекта Microsoft Access
Real Estate CS 2002.adp. Запустим его на выполнение, убрав с экрана
помощника, и попробуем
исправить номер лицевого
счета любой квартиры на
тот, который уже имеется в
таблице. Получим сооб-
Рис. 8.33. Сообщение на английском языке щение об ошибке (рис. 8.33).
Разработчику его содер-
жание полностью понятно, но оставлять этот текст в таком виде для ко-
нечного пользователя нельзя. Ему ведь и дела нет, что уникальный ин-
декс после его исправлений станет не уникальным! Воспользуемся со-
137
бытием формы Flats «Ошибка», которое позволяет перехватить англоя-
зычное системное сообщение с помощью кода VBA. Microsoft Access пе-
редает обработчику этого события параметр DataErr и назад получает
значение параметра Response (рис. 8.34).
138
языке. Второе (acDataErrContinue) – отключает вывод системной ошиб-
ки, и как Вы видели, у разработчика появляется возможность предупре-
дить пользователя на русском языке. После отказа от изменения номера
лицевого счета появится еще одно системное сообщение (номер ошибки
2169), но его перехватывать нет необходимости. Оно и так вполне по-
нятно (рис.8.36).
139
8.5. Резервное копирование базы данных
140
Лучше всего резервные копии хранить отдельно от сервера и иметь
их несколько штук. В небольшом предприятии – по числу рабочих дней в
неделю. Само же резервное копирование удобно выполнять после окон-
чания рабочего дня.
Назначим логические устройства для резервного копирования нашей
базы данных real estateSQL (рис. 8.38). На SQL сервере MASTER (Win-
dows NT) откроем папку Management и сделаем щелчок правой кнопкой
мыши по пиктограмме Backup. Появится меню. Выберем в нем первый
пункт – New Backup Device. Перед Вами очередное окно (рис. 8.39).
141
Разобраться с остальными логическими устройствами для Вас не со-
ставит никакого труда. Они представляют собой внешние накопители.
Второе – Flash Drive 512 Mb, а третье - Zip Disk 250 Mb.
Для создания резервной копии базы real estateSQL используем воз-
можности SQL Server Enterprise Manager (рис. 8.41). Databases Все
задачи Backup Database. Появится окно параметров (рис. 8.42).
142
Рассмотрим элементы управления, имеющиеся в этом окне.
Database. В раскрывающемся списке содержатся названия всех баз
данных, имеющихся на сервере. По умолчанию выбрана база данных
Master. Заменим ее на real estateSQL.
Name. Это имя будет присвоено создаваемой резервной копии. При вос-
становлении администратор будет выбирать нужную копию именно по
этому имени.
Description. Содержит краткий комментарий к резервной копии. Инфор-
мация носит вспомогательный характер.
Backup. С помощью этого переключателя выбирается тип резервной
копии. Будет создана полная или разностная копия базы данных. Оста-
новимся на полной копии.
Add. Выбор логического устройства для копии. Откроется дополнитель-
ное окно (рис. 8.43).
143
8.6. Перенос базы данных на рабочий сервер
144
может работать 200 пользователей, а количество одновременных со-
единений с сервером может не превышать 50. В этом случае достаточно
приобрести лицензию на 50 подключений, а не на 200. Экономить, так
экономить!
Выгрузите со своего компьютера на логическое устройство Zip250
или любое другое базу данных real estateSQL. Создайте на основном
сервере HPLH3 аналогичное логическое устройство и запустите процесс
восстановления Вашей базы данных (рис. 8.46). Выбор требуемых па-
раметров базы данных не представляет никаких сложностей (рис. 8.47).
Рис. 8.46 Перенос на основной сервер HPLH3 базы данных real estateSQL
145
ние из меню Файл. На остальные же рабочие станции следует устано-
вить Microsoft Access 2002 и перенести на каждую файл проекта Real
Estate CS 2002.adp, выполнив аналогичное подключение к MS SQL
Server. Небольшая особенность подключения – проект Microsoft Access
должен быть запущен (рис. 8.48).
146
В поле Specify or enter a
server name введите имя
сервера, на который Вы
установили MS SQL Server
(HPLH3). Если рабочая
станция «видит» сервер –
раскройте в пункте 3 спи-
сок баз данных и выберите
в нем real estateSQL. Ре-
комендую протестировать
соединение, нажав кнопку
Test Connection. В завер-
шение этой главы – не-
большое теоретическое
отступление. Microsoft Ac-
cess 2002 предоставляет
пользователю интерфейс
программирования OLE
DB, который можно с успе-
хом использовать для дос-
тупа к базе данных Micro-
Рис. 8.50 Окно подключения к MS SQL Server soft SQL Server 2000 по се-
ти и через интернет. В ар-
хитектуре OLE DB приложения, получающие доступ к данным, называ-
ют потребителями данных, а программы, обеспечивающие внутренний
доступ к данным, называют средствами доступа к базам данных. В окне
(рис. 8.50) мы как раз и получили доступ к базе данных через средство
доступа Microsoft OLE DB Provider для Microsoft SQL Server, которое ус-
танавливается автоматически при установке Microsoft Office XP (2002).
Также автоматически устанавливается OLE DB Provider для ODBC Driv-
ers и OLE DB Provider для Oracle.
147
MS SQL Server. Это необходимо тогда, когда пользователь не имеет
учетной записи в домене Windows NT. Мне больше нравится смешанный
режим аутентификации и вот почему. В организации, как правило, име-
ются два администратора: системный администратор и администратор
базы данных, а все пользователи имеют в домене учетную запись. Бла-
годаря этому администратор базы данных может использовать уже го-
товые учетные записи. Пройдя систему защиты операционной системы,
где присутствуют ограничения на длину пароля, время его действия и
ограничено количество попыток входа, пользователь получает разреше-
ние на доступ к серверу. Разрешение на доступ к серверу не дает авто-
матического доступа к базе данных и ее объектам. На этом этапе в ра-
боту вступает администратор базы данных, который назначает пользо-
вателям права доступа в соответствии с занимаемой должностью.
148
Нас интересует второй пункт: Active Directory – пользователи и
компьютеры, который приведет к очередному окну (рис. 8.53). В левой
части этого окна нам предстоит выбрать пункт меню Users. После чего в
правой части окна появится список пользователей и групп домена De-
partment. Добавим новую учетную запись, сделав щелчок мышью по
пиктограмме . Появится окно для занесения нового пользователя
(рис. 8.54).
Обратите внимание: мы
работаем с компьютером
HPLH3, который является
контроллером домена
Department. Это означа-
ет, что локальные учет-
ные записи на HPLH3 от-
сутствуют. Все записи,
которые будут занесены
нами, относятся только к
домену. Если в окне
(рис.8.54) не будут запол-
нены все поля, то кнопка
«Далее» так и останется
погашенной, а ее необхо-
Рис. 8.54. Занесение нового пользователя димо обязательно нажать
для ввода пароля поль-
зователя. Следующее окно, которое появится после ввода пароля, носит
чисто информативный характер и здесь не приведено. Новый пользова-
тель домена Department создан. Обеспечьте ему доступ к требуемым
папкам и «передайте» его администратору базы данных.
149
8.7.2. Работа администратора базы данных
Администратор базы данных, запустив Enterprise Manager, должен
вывести на экран список пользователей MS SQL Server (рис. 8.55).
150
Department (рис. 8.57). Выберите ту учетную запись домена, которая
Вам нужна, и нажмите кнопку «Добавить». Теперь пользователь Гурвиц
получил доступ к
SQL Server HPLH3.
С первой вкладкой
рисунка 8.56
покончено. Настало
время перейти ко
второй вкладке:
Server Roles. В
SQL Server 2000
появился новый
механизм – роли.
Всего имеется две
группы ролей: роли
Рис. 8.57. Выбор нового пользователя из списка сервера и роли
базы данных.
Рассмотрим сначала роли сервера. Включив учетную запись в ту или
иную роль сервера Вы можете предоставить ей некоторый набор прав
по администрированию SQL Server (рис. 8.58).
151
Process Administrators – члены этой роли могут управлять процесса-
ми, которые реализует SQL-сервер.
Security Administrators – члены этой роли имеют возможность созда-
вать новые учетные записи.
Server Administrators – члены этой роли имеют право выполнять ад-
министрирование сервера.
Setup Administrators – члены этой роли могут управлять связанными
серверами, конфигурировать хранимые процедуры, запускаемые авто-
матически при старте SQL Server.
Sistems Administrators - члены этой роли имеют абсолютные права в
SQL Server.
Системный администратор может очень гибко контролировать SQL
Server, распределив права управления между несколькими пользовате-
лями. Каждый пользователь из этого числа может выполнять строго ог-
раниченный круг задач. Для этого необходимо включить учетную запись
в ту или иную роль сервера.
Вернемся к третьей вкладке рисунка 8.56. Она называется Database
Access (рис. 8.59). Отметьте
флажком в верхней части окна
базу данных, с которой будет
работать пользователь. В
нижней части окна появятся
роли этой базы данных, кото-
рые дают возможность значи-
тельно упростить защиту базы
данных и ее объектов. Пере-
числим возможности пользо-
вателя, которому доступна та
или иная роль базы данных.
Db_owner – владелец базы
данных. Может выполнять лю-
бые действия с ней.
Db_accessadmin – члены
этой роли имеют право назна-
чать и удалять пользователей
базы данных. Рис. 8.59. Роли базы данных
Db_securityadmin – члены
роли могут управлять правами доступа к объектам базы данных других
пользователей и членством их в тех или иных ролях.
Db_ddladmin – эта роль предоставляет возможность создавать, из-
менять и удалять объекты базы данных.
Db_denydatawriter – членам этой роли запрещено изменение дан-
ных независимо от того, какие им разрешения были выданы в другой
152
роли. Эта роль предназначена для временной отмены былых полномо-
чий.
Db_denydatareader - членам этой роли запрещен просмотр данных
независимо от того, какие им разрешения были выданы в другой роли.
Db_datawriter – члены этой роли могут изменять данные в любой
таблице или представлении.
Db_datareader – члены этой роли могут читать данные в любой таб-
лице или представлении.
Db_backupoperator – могут выполнять резервное копирование базы.
153
ее и является ее полноправным владельцем. А второй должен работать
с этой базой. Какие права он имеет в настоящий момент (рис. 8.62)?
154
8.8. Управление блокировками
155
Рис. 8.66. Результат корректировки с компьютера 14.02.84
156
Для просмотра исправлений, выполненных первым пользователем,
нажмите кнопку (рис.8.67) «Копировать в буфер». Все исправления ока-
жутся в буфере обмена Office. Для просмотра содержимого буфера
(рис.8.69) выберите в главном меню Microsoft Access пункт «Правка», а в
открывшемся всплывающем меню – пункт «Буфер обмена Office». Для
удобства просмотра все эти объекты собраны в один рисунок.
157
9. ЗАДАНИЯ НА КУРСОВОЙ ПРОЕКТ (РАБОТУ)
158
Вариант 1. Разработать прикладное программное обеспечение дея-
тельности депо по ремонту пассажирских вагонов. Депо выполняет не-
сколько видов ремонта. Деповской ремонт – после пробега вагоном 450
тыс. км. или два года эксплуатации (что наступит раньше). TO-2 – под-
готовка вагона к зимним или летним условиям эксплуатации. ТО-3 – те-
кущее обслуживание – после пробега 150 тыс. км. или один год эксплуа-
тации. Текущий ремонт – круглосуточно, при котором ремонтируются ва-
гоны всех дорог России. Основные причины поступления вагона в теку-
щий ремонт: неисправность колесной пары, неисправность буксового
узла и т.д. Каждый вагон имеет уникальный номер. Тип вагона также
имеет значение при ремонте: купейный, СВ, плацкартный, почтовый, ба-
гажный. Каждый вагон приписан к дирекции по обслуживанию пассажи-
ров (ДОП-1, ДОП-2, ДОП-3 и т.д.). Текущий ремонт выполняют ремонт-
ные бригады в четыре смены. Для выполнения остальных ремонтов
привлекается, как правило, одна бригада. За высокое качество ремонта
члены бригады получают премию.
Таблица 9.1
Набор данных к варианту 1
159
Вариант 2. Разработать прикладное программное обеспечение дея-
тельности ремонтно-эксплуатационного локомотивного депо. Депо вы-
полняет несколько видов ремонта: текущий ремонт (ТР), средний ремонт
(СР), Техническое обслуживание (ТО) и внеплановый ремонт. При вне-
плановом ремонте локомотив снимается с рейса и заменяется резерв-
ным, поэтому сроки внепланового ремонта должны быть минимальными,
а сам ремонт проводится порой в четыре смены. Каждый локомотив
имеет уникальный номер и приписан к определенному локомотивному
депо. Технология ремонта зависит от типа локомотива (пассажирский
или грузовой). Для выполнения первых трех видов ремонта привлекает-
ся, как правило, одна бригада. За высокое качество выполненных работ
члены бригады получают дополнительное вознаграждение (квартальная
премия, месячная премия, 13 и 14 зарплата). За переработку (сверх-
урочные) также выплачиваются дополнительные суммы.
Таблица 9.2
Набор данных к варианту 2
160
Вариант 3. Разработать прикладное программное обеспечение дея-
тельности судоходной компании «Балтика». Эта крупная компания зани-
мается перевозками грузов между континентами. В ее собственности не-
сколько десятков судов различного класса и грузоподъемности. К услугам
этой компании обращаются тысячи клиентов из различных стран мира.
На судне может находиться несколько партий грузов для различных
грузополучателей из различных стран и городов. Одна партия груза мо-
жет состоять из нескольких разновидностей грузов. У одной партии груза
может быть только один отправитель и только один получатель.
Судно следует по маршруту. Маршрут разрабатывается главным ме-
неджером компании и проходит через несколько портов. В очередном
порту назначения производится лишь частичная погрузка и выгрузка гру-
зов, и судно следует дальше.
Таблица 9.3
Набор данных к варианту 3
161
Вариант 4. Разработать прикладное программное обеспечение дея-
тельности учреждения юстиции. По существующему законодательству
на это учреждение возложена обязанность регистрации прав юридиче-
ских и физических лиц на недвижимое имущество (здания, квартиры,
земельные участки). В этом задании вам необходимо разработать лишь
часть программного комплекса, обеспечивающего регистрацию прав
граждан на квартиры. Имейте в виду! В здании несколько квартир. В од-
ной квартире – несколько собственников, причем в базе данных должна
храниться история перехода квартиры от одних собственников к другим.
Кадастровый номер здания однозначно определяет его среди других
зданий города. Смело используйте его в качестве первичного ключа
таблицы зданий.
Таблица 9.4
Набор данных к варианту 4
162
Вариант 5. Разработать прикладное программное обеспечение дея-
тельности малого научно-внедренческого предприятия «Квадро». Это
предприятие занимается прокладкой компьютерных сетей и разработкой
программных комплексов для организаций нашего города.
Численность работников в «Квадро» – примерно 80 человек. Одновре-
менно находится в разработке до 30 проектов. Один разработчик может
участвовать в нескольких проектах одновременно, но зарплата его от это-
го не зависит. Одна организация может заказать в «Квадро» несколько
разработок. Стоимость каждого проекта оговаривается отдельно. При дос-
рочном выполнении работы заказчик перечисляет научно-внедренческому
предприятию определенный, заранее оговоренный процент премии.
Таблица 9.5
Набор данных к варианту 5
163
Вариант 6. Разработать прикладное программное обеспечение дея-
тельности ООО «Киновидеопрокат». Это предприятие фактически контро-
лирует демонстрацию кинофильмов в кинотеатрах города. Отдел маркетин-
га, изучив ситуацию на рынке кинофильмов, принимает решение о покупке
тех или иных кинолент. Отдел закупок претворяет эти решения в жизнь,
причем лента может быть куплена как у производителя, так и у посредника.
Отдел аренды киновидеопроката сдает закупленные фильмы кинотеат-
рам города в аренду. Так как всегда закупается только одна копия фильма,
он не может демонстрироваться одновременно в нескольких кинотеатрах.
У одного поставщика может быть куплено несколько фильмов. Также не-
сколько лент может быть в аренде у одного кинотеатра одновременно.
Таблица 9.6
Набор данных к варианту 6
164
Вариант 7. Разработать прикладное программное обеспечение дея-
тельности предприятия LADA-сервис. Эта крупная компания занимается
продажей автомобилей марки ВАЗ в нашем городе. Она имеет несколь-
ко филиалов в разных районах. Автомобиль может быть продан как со
склада компании, так и на заказ с завода-изготовителя по предоплате.
Покупатель может заказать модель, цвет, тюнинг и оговорить срок по-
ставки заказанного автомобиля. Одновременно с новыми авто на пло-
щадках компании имеется большой выбор подержанных автомобилей,
как отечественных, так и иностранных. Покупателем может быть как фи-
зическое лицо, так и организация. В первом случае – расчет наличными,
во втором – через банк. Расчет производится в рублях.
Таблица 9.7
Набор данных к варианту 7
165
Вариант 8. Разработать прикладное программное обеспечение
торгово-посреднической фирмы «Столица». Бизнес этого предприятия
предельно прост: «покупай дешевле – продавай дороже», или состыкуй
продавца и покупателя и получи «комиссионные». Основной упор фирма
делает на закупки продуктов питания в других регионах страны и за рубе-
жом – там, где они производятся и стоят дешевле, чем в нашем регионе.
Часть продукции может быть закуплена и у местных продавцов.
В этом случае фирма получает прибыль за счет того, что крупные пар-
тии товара стоят дешевле, чем мелкие.
Имейте в виду, что товар не может быть продан дешевле, чем он ку-
плен.
Таблица 9.8
Набор данных к варианту 8
166
Вариант 9. Разработать прикладное программное обеспечение дея-
тельности отдела гарантийного ремонта товаров фирмы «Народная тор-
говая компания». Это предприятие – лидер продаж кондиционеров, те-
левизоров и другой бытовой техники в городе. Хорошо известно, что
техника часто выходит из строя, причем уже в период гарантийного сро-
ка, а в этом случае продавец товара должен бесплатно отремонтиро-
вать его. Ежедневно в отдел гарантийного ремонта обращаются не-
сколько десятков человек, купивших технику в этой компании. Вы, ско-
рее всего, также побывали в отделе гарантийного ремонта, что очень
поможет Вам при разработке программного обеспечения.
Таблица 9.9
Набор данных к варианту 9
167
Вариант 10. Разработать прикладное программное обеспечение дея-
тельности отдела учета личного состава батальона железнодорожных
войск. Это фактически отдел кадров воинской части. Батальон расквар-
тирован на отдельной территории. В батальоне несколько рот, в каждой
роте несколько взводов, каждый взвод состоит из трех отделений.
В мирное время батальон занимается изучением техники и поддер-
жанием ее в рабочем состоянии. Часть технических ресурсов “законсер-
вирована”. Поддержание такой техники в отличном состоянии также
входит в обязанности личного состава батальона. В настоящее время
существует три вида службы: срочная, сверхсрочная и по контракту. Ка-
ждый офицер части имеет удостоверение личности, которое заменяет
паспорт, а военнослужащий срочной службы – военный билет.
Таблица 9.10
Набор данных к варианту 10
168
Вариант 11. Разработать прикладное программное обеспечение
деятельности отдела учета домовладений. «Бюро технической инвента-
ризации». В состав домовладения входят земельный участок и несколь-
ко строений. Их называют литерами: жилой дом, летняя кухня, гараж,
колодец, забор и т.д.
Для жилого дома составляется экспликация, в которой указываются
данные по каждому помещению. Экспликация может быть составлена и
для других крупных строений. В ее состав входит: номер квартиры, но-
мер помещения на плане, этаж, назначение помещения, площадь, высо-
та и т.п. Для вспомогательных литер (забор, тротуар, колодец) экспли-
кация не заполняется.
Таблица 9.11
Набор данных к варианту 11
169
Вариант 12. Разработать прикладное программное обеспечение дея-
тельности отдела кадров университета. В отделе кадров университета
находятся данные всех сотрудников: от преподавателя до ректора, и их
трудовой деятельности. Наряду с такими данными, как специальность
сотрудника и занимаемая должность, обязательно учитываются сведе-
ния об ученой степени сотрудника (кандидат наук, доктор) и ученом зва-
нии (доцент, профессор). Также в отделе кадров хранится информация
о трудовой деятельности сотрудника: о предыдущих местах работы,
сроке работы и предприятии. Отдел кадров занимается подготовкой
трудовых договоров с преподавателями после избрания их по конкурсу
на очередной срок. Также в его ведении находятся сведения о наложе-
нии взысканий на сотрудников и их поощрениях. Взыскания в трудовую
книжку не заносятся, а хранятся в электронном виде.
Таблица 9.12
Набор данных к варианту 12
170
Вариант 13. Разработать прикладное программное обеспечение
деятельности биржи труда. На биржу труда обращаются люди, не су-
мевшие самостоятельно устроиться на работу, но все ещё желающие
найти работу по специальности. Организации предоставляют бирже
список свободных вакансий. Каждый обратившийся ставится на учет. В
день обращения ему предлагается список вакансий. Если свободных ва-
кансий нет или они не устраивают ищущего работу, то ему будет пред-
ложено подождать пока подходящее свободное место работы не поя-
вится. Зарегистрированный на бирже получает пособие по безработице
до тех пор, пока не будет трудоустроен. После этого его данные перено-
сятся в архив, и выплата ему пособия прекращается.
Таблица 9.13
Набор данных к варианту 13
171
Вариант 14. Разработать прикладное программное обеспечение
деятельности отдела учета квартир «Бюро технической инвентариза-
ции».
В нашем городе имеется 6000 зданий, в которых расположено 199000
квартир. Помещений в этих квартирах – 1 500 000 шт. Понятно, что эта
задача не для Microsoft Access 2002. Но, тем не менее, попробуйте реа-
лизовать ее, предусмотрев перевод базы данных на платформу Micro-
soft SQL Server 2000.
Кадастровый номер здания является уникальным. Используйте его в
качестве простого первичного ключа таблицы зданий. Можете работать
и с составным первичным ключом (адресом здания), но в данном случае
– это не лучший вариант.
Таблица 9.14
Набор данных к варианту 14
172
Вариант 15. Разработать прикладное программное обеспечение
деятельности аптечного склада. Аптечный склад занимается оптовой
продажей лекарств больницам и аптекам города. В его ассортименте –
тысячи наименований лекарств, а также различных аптечных принад-
лежностей (градусники, шприцы, бинты и т. д.) Возможна продажа лишь
тех лекарств, которые одобрены Минздравом РФ, то есть имеют регист-
рационный номер Минздрава РФ. Поступающие лекарства сопровожда-
ются документами – приходными накладными ведомостями. Покупатель
получает счет-фактуру на выбранный товар, оплачивает сумму, указан-
ную в ней, и после оплаты получает выходную накладную ведомость, по
которой получает выбранный товар.
Таблица 9.15
Набор данных к варианту 15
173
Вариант 16. Разработать прикладное программное обеспечение
деятельности отдела учета нежилых помещений Бюро технической ин-
вентаризации.
В 2000 г. в нашем городе была проведена сплошная инвентаризация,
в ходе которой было выявлено 16000 нежилых помещений. Это магази-
ны (встроенные, пристроенные и отдельно стоящие), офисы, учрежде-
ния, мастерские и т.д. Помещение может состоять из отдельных частей
(кабинет, проходная, коридор). Составных частей помещений выявлено
265 000 шт.
В одном здании может быть несколько помещений, а помещение мо-
жет состоять из нескольких частей. Любое здание имеет уникальный ка-
дастровый номер, однозначно определяющий его положение в городе.
Таблица 9.16
Набор данных к варианту 16
174
Вариант 17. Разработать прикладное программное обеспечение
деятельности отдела учета налогообложения физических лиц городской
налоговой инспекции. По существующему законодательству любой гра-
жданин России, заработавший более 50000 рублей в год и имеющий до-
ходы помимо основного места работы, должен представить в налоговую
инспекцию декларацию о полученных доходах. Налоговый инспектор
должен проверить ее, занести в базу данных и выписать платежное из-
вещение на уплату подоходного налога с доходов физического лица. Так
как действующая шкала налогообложения – прогрессивная (с большей
суммы уплачивается больший налог), то лица, заполнившие деклара-
цию, должны доплатить в бюджет некоторую сумму. С 2002 года порядок
несколько изменился. Шкала налогообложения – линейная (13 процен-
тов со всей заработанной суммы за год), но лицам, затратившим сред-
ства на обучение, покупку лекарств и т.д., из бюджета должна быть воз-
вращена некоторая сумма, рассчитываемая по специальной методике.
Таблица 9.17
Набор данных к варианту 17
175
Вариант 18. Разработать прикладное программное обеспечение
деятельности телеателье «Спектр».
Эта организация занимается послегарантийным ремонтом теле-, ра-
диоаппаратуры отечественного и импортного производства. Клиенты
этого телеателье – жители и организации нашего города и близлежащих
сел. Расчет с физическими лицами ведется наличными, а с организа-
циями – через банк. Выдача отремонтированной техники производится
после полной оплаты выполненного ремонта.
Отремонтированное изделие получает гарантию. Если в течение га-
рантийного срока произойдет поломка изделия, то повторный ремонт
выполняется за счет телеателье. Если брак допустил мастер, то часть
суммы удерживается из его зарплаты. Клиент, обратившийся к услугам
ателье несколько раз с ремонтом разной аппаратуры, получает дисконт-
ную карту, дающую право на скидку при ремонте очередного изделия.
Таблица 9.18
Набор данных к варианту 18
176
Вариант 19. Разработать прикладное программное обеспечение дея-
тельности отдела заселения муниципальных общежитий администрации
города.
В ведении администрации города находится несколько десятков об-
щежитий. Раньше они принадлежали предприятиям города, а теперь,
после банкротства предприятий, все эти общежития переданы муници-
пальным властям. В последние годы бесплатные квартиры гражданам
города практически не предоставляются, а количество малоимущих жи-
телей, нуждающихся в жилье, растет. Хоть как-то улучшить жилищные
условия этой категории граждан позволяет наличие муниципальных об-
щежитий. Получить четкую картину их заселения позволит данное про-
граммное обеспечение. База данных отдела содержит информацию об
общежитиях, комнатах общежитий и проживающих.
Таблица 9.19
Набор данных к варианту 19
177
Вариант 20. Разработать прикладное программное обеспечение
деятельности Государственной автомобильной инспекции по безопасно-
сти дорожного движения города.
База данных ГИБДД содержит сведения обо всех транспортных сред-
ствах города и их владельцах. В нее заносятся сведения о технических
осмотрах транспортных средств и об угонах. Описание угнанного авто-
мобиля не удаляется из базы данных. Истории переходов транспортных
средств от одних владельцев к другим не накапливаются. Сведения об
автомобилях, снятых с учета, навсегда удаляются из базы данных.
Таблица 9.20
Набор данных к варианту 20
178
Вариант 21. Разработать прикладное программное обеспечение
для ведения реестра имущества университетского городка.
В состав имущества входит несколько зданий. В зданиях располага-
ются аудитории, кафедры, лаборатории, вычислительные центры, дека-
наты и т.д. Любое помещение университета относится к какому-либо
подразделению. Все движимое имущество, находящееся в помещении,
состоит на балансе материально ответственного лица.
Каждая аудитория закреплена за определенной кафедрой универси-
тета, так же в ведении кафедр находятся и лаборатории.
По истечении определенного времени имущество, находящееся в
помещениях, списывается. Архив списанного имущества не ведется.
Таблица 9.21
Набор данных к варианту 21
179
Вариант 22. Разработать прикладное программное обеспечение
деятельности туристической компании «Вояж». Эта компания формиру-
ет туристические группы для заграничных поездок и обеспечивает им
полную поддержку на маршруте. Количество туристов в группе заранее
известно и ограничено.
Маршрут группы может пролегать через несколько городов страны
назначения. Экскурсии в несколько стран одновременно не проводятся.
При обращении в «Вояж» группы из нескольких человек компания
предоставляет скидку, которая зависит от количества туристов в группе.
Вместе с группой следует представитель компании, который несет пол-
ную ответственность за качество услуг, предоставляемых компанией.
При возникновении каких-либо неудобств на маршруте, возникших по
вине компании, турист получает назад заранее оговоренную в контракте
сумму.
Таблица 9.22
Набор данных к варианту 22
180
Вариант 23. Разработать прикладное программное обеспечение
деятельности регистратуры ведомственной поликлиники «Эскулап».
Работники регистратуры организуют запись пациентов на прием к
врачам поликлиники. Так как поликлиника ведомственная, медицинское
обслуживание работников предприятия – бесплатное (за счет средств
предприятия).
«Посторонние» пациенты также могут воспользоваться услугами по-
ликлиники, полностью оплатив затраты на лечение. Определение стои-
мости лечения и выдача платежных документов для таких больных вхо-
дит в круг обязанностей работников регистратуры. Врач ведет прием
всегда в одном кабинете. Приемные дни занесены в расписание работы
поликлиники. На каждого пациента в регистратуре заводится карточка. В
начале приема карточки больных, записавшихся на прием, доставляют-
ся работником регистратуры в кабинет врача.
Таблица 9.23
Набор данных к варианту 23
181
Вариант 24. Разработать прикладное программное обеспечение
деятельности рекламного агентства «Rapid».
В собственности этого агентства находится примерно около сотни
рекламных щитов, расположенных по всему городу. Установка их согла-
сована с администрацией города, и все необходимые формальности
выполнены. На этих щитах может быть размещена реклама по заказу
любой организации города. Срок размещения, стоимость аренды щита и
стоимость изготовления самой рекламы – договорные.
Одна организация может арендовать несколько рекламных щитов.
Один щит не сдается в аренду нескольким арендаторам, так как являет-
ся неделимой рекламной единицей.
Договор размещения рекламы может быть продлен по взаимной до-
говоренности сторон.
Таблица 9.24
Набор данных к варианту 24
182
Вариант 25. Разработать прикладное программное обеспечение
деятельности OOO «Центр оценки и продажи недвижимости».
Одним из источников прибыли этой организации является покупка и
продажа квартир. Центр оценки имеет большой штат специалистов, по-
зволяющий этой организации проводить сделки купли-продажи на высо-
ком профессиональном уровне. Владелец квартиры, желающий ее про-
дать, заключает договор с Центром, в котором указывается сумма, срок
продажи и процент отчислений в пользу Центра оценки и продажи не-
движимости в случае успешного проведения сделки.
Один клиент может заключить с Центром более одного договора куп-
ли-продажи одновременно, если он владеет несколькими квартирами.
Обмен квартир специалисты центра непосредственно не производят.
Для этих целей используется вариант купли-продажи.
Таблица 9.25
Набор данных к варианту 25
183
Вариант 26. Разработать прикладное программное обеспечение
деятельности отдела вневедомственной охраны квартир. Этот отдел
обеспечивает электронную охрану квартир граждан в одном районе го-
рода. Для установки охранной сигнализации требуется наличие квар-
тирного телефона. Один гражданин может заключить договор на охрану
нескольких квартир. Из-за ложных срабатываний сигнализации возмож-
но несколько выездов патрульных экипажей по одной квартире. На вла-
дельца квартиры, вовремя не отключившего сигнализацию после своего
прихода домой, налагается штраф, величина которого оговаривается
при заключении договора охраны. Если отдел вневедомственной охраны
не уберег имущество владельца квартиры, то он выплачивает постра-
давшему заранее оговоренную сумму. От величины этой суммы зависит
размер ежемесячной оплаты за охрану квартиры.
Таблица 9.26
Набор данных к варианту 26
184
Вариант 27. Разработать прикладное программное обеспечение
деятельности Отдела приватизации жилья администрации города. В
нашем городе на начало 2001 года приватизировано около 80 000 квар-
тир граждан. Еще далеко не все проживающие в «своих» квартирах ста-
ли собственниками своего жилья. Процесс приватизации продолжается
и займет еще несколько лет. Главная задача программного комплекса –
не допустить приватизации одним человеком более одной квартиры. К
сожалению, в отделе приватизации не используется уникальный кадаст-
ровый номер здания, поэтому вам придется использовать составной
первичный ключ (адрес) для таблицы зданий, квартир и проживающих.
Помните, что некоторые из проживающих в квартире могут не участ-
вовать в приватизации.
Таблица 9.27
Набор данных к варианту 27
№ Поле Тип Размер Описание
1 Address Текстовый 60 Адрес здания
2 District Текстовый 15 Район города
3 Balance Текстовый 60 Балансодержатель
4 Year Числовой 4 Год постройки здания
5 Material Текстовый 15 Материал стен здания
6 Base Текстовый 15 Материал фундамента
7 Comment Поле Memo Авто Примечания
8 Wear Числовой 2 Износ в процентах
9 Flow Числовой 2 Число этажей в здании
10 Line Числовой 5 Расстояние от центра города
11 Square Числовой 10 Площадь квартир
12 Hall Логический 1 Наличие нежилых помещений
13 Picture Поле OLE Авто Фото здания
14 Flats Числовой 3 Число квартир в здании
15 Elevator Логический 1 Наличие лифта
16 Flat Числовой 4 Номер квартиры
17 Storey Числовой 2 Номер этажа
18 Rooms Числовой 1 Количество комнат
19 SquareFlat Числовой Авто Общая площадь квартиры
20 Dwell Числовой Авто Жилая площадь квартиры
21 Branch Числовой Авто Всп. площадь квартиры
22 Balcony Числовой Авто Площадь балкона
23 Height Числовой Авто Высота квартиры
24 Record Числовой 2 Номер записи о приватизации
25 Document Текстовый 60 Документ на право приватизации
26 DateDoc Дата Авто Дата документа о приватизации
27 Cost Денежный Авто Инвентаризационная стоимость
27 FioHost Текстовый 60 Ф.И.О. проживающего
28 Pasport Поле Memo Авто Данные его паспорта
29 Sign Логический 1 Участие в приватизации (да/нет)
30 Born Числовой 4 Год рождения
31 Status Текстовый 20 Статус в семье
185
Вариант 28. Разработать прикладное программное обеспечение дея-
тельности предприятия “Газкомплект” по учету платы за пользование га-
зом и газовыми приборами. Плата взымается с каждой квартиры в зави-
симости от количества потребленного газа или от числа проживающих,
если счетчик отсутствует. Ответственный квартиросъемщик обязан каж-
дый месяц снимать показания счетчика и производить оплату за потреб-
ленный газ через сбербанк. Наряду с отслеживанием платы за газ пред-
приятие производит профилактическое обслуживание газовых приборов.
Правила техники безопасности предусматривают осмотр газовой плиты
инспектором предприятия раз в квартал. Если обнаружены неполадки в
подключении плиты или ее работе, то работник предприятия обязан не-
медленно устранить их за счет абонента. Оплата оказанных услуг осу-
ществляется на месте по квитанции.
Таблица 9.28
Набор данных к варианту 28
186
Вариант 29. Разработать прикладное программное обеспечение
деятельности «Бюро технической инвентаризации» по изготовлению и
выдаче технических паспортов на объекты недвижимости. Перед регист-
рацией сделки с объектом недвижимости собственник объекта должен
получить в БТИ на него технический паспорт. Ежедневно в БТИ обраща-
ется до 200 человек. Основное назначение программного комплекса – не
пропустить ни одного документа. Если технический паспорт не готов в на-
значенный срок, то БТИ должно выплатить неустойку. Алгоритм изготов-
ления документа следующий. Клиент обращается к инспектору, сдает
ему необходимые справки, согласовывает дату выхода техника на об-
мер, уплачивает аванс. Инспектор передает заявку начальнику отдела.
Начальник отдела назначает исполнителя и техника. Техник выполняет
обмер объекта. Исполнитель изготавливает документ и передает в от-
дел выдачи. В назначенный срок клиент забирает готовый документ, до-
платив недостающую сумму. Один клиент (физическое или юридическое
лицо) может заказать несколько технических паспортов, за изготовление
которых оплата может производиться частями.
Таблица 9.29
Набор данных к варианту 29
187
Вариант 30. Разработать прикладное программное обеспечение
деятельности отдела аренды ЗАО «Сириус». После удачной приватиза-
ции, когда у руководства этого предприятия оказалась большая часть
акций, дела некогда мощного предприятия пошли на спад. Основная
часть работников была уволена по сокращению штатов. В настоящее
время основной статьей получения прибыли является сдача в аренду
другим предприятиям и организациям площадей, которыми владеет
«Сириус». В его собственности имеется 12-ти этажное здание, которое
состоит примерно из 300 помещений. Почти все они сдаются в аренду.
Один арендатор может арендовать несколько помещений, причем срок
аренды для каждого устанавливается отдельно. Величина арендной платы
и ее периодичность устанавливается арендодателем. После окончания
срока аренды, договор может быть продлен на прежних или новых услови-
ях. Субаренда площадей запрещена. Закрытые договоры не удаляются из
базы данных для отслеживания предыдущих арендаторов.
Таблица 9.30
Набор данных к варианту 30
188
Вариант 31. Разработать прикладное программное обеспечение
деятельности телефонной компании.
Основное назначение программного комплекса – отслеживание або-
нентской платы за телефоны. Клиентами компании могут быть как физи-
ческие лица, так и организации. Расчет с организациями ведется в без-
наличной форме через банк. Физические лица вносят плату через кассу
компании.
Клиент телефонной компании может иметь несколько телефонных
номеров. Дополнительная плата за подключенный параллельно аппарат
не взимается. Если телефон у абонента не работает более суток, то
плата за пользование телефоном уменьшается.
Междугородние и международные звонки оплачиваются отдельно по
заранее установленным расценкам.
Таблица 9.31
Набор данных к варианту 31
189
Вариант 32. Разработать прикладное программное обеспечение
деятельности мелкооптового книжного магазина. Менеджер магазина,
изучив спрос на книжную продукцию в городе, принимает решение о за-
купке партии книг в том или ином издательстве. Некоторые, пользую-
щиеся повышенным спросом книги, могут быть закуплены у посредни-
ков. Часть продукции заказывается через Internet. Покупателем в мелко-
оптовом магазине может быть любой человек или организация, при ус-
ловии, что величина покупки превысит одну тысячу рублей. Расчет с ор-
ганизациями производится через банк. Расчет с физическими лицами –
наличными. Покупателю выписывается счет-фактура, которая имеет
уникальный номер и содержит список книг с указанием их стоимости.
После уплаты указанной суммы покупатель получает товар на складе.
Таблица 9.32
Набор данных к варианту 32
190
Вариант 33. Разработать прикладное программное обеспечение
деятельности ОАО «Автовокзал».
Это открытое акционерное общество занимается междугородними пас-
сажирскими перевозками по Дальневосточному региону. В его собственно-
сти находится несколько десятков автобусов различной вместимости.
Штат водителей превышает количество автобусов. Средний уровень
сменности для машины – 2.5. Водитель не может работать более одной
смены в сутки. Билеты на рейсы продаются только в здании автовокза-
ла. Возможна предварительная продажа. Маршрут автобуса может
пролегать через несколько населенных пунктов. В этом случае пассажир
может купить билет до любого промежуточного пункта. Освободившимся
местом после выхода пассажира распоряжается водитель. Полученную
выручку он сдает в кассу предприятия после прибытия с маршрута. На
линии работает контроль. Если в автобусе будет обнаружен пассажир
без билета, то на водителя налагается штраф.
Таблица 9.33
Набор данных к варианту 33
191
Вариант 34. Разработать прикладное программное обеспечение
деятельности агентства знакомств.
Агентство занимается организацией знакомств одиноких мужчин и
женщин. Возможен один из двух вариантов: человек либо регистрирует-
ся в агентство, оставляет информацию о себе, чтобы любой мог ознако-
миться с его кандидатурой, либо знакомится с базой уже зарегистриро-
ванных и выбирает подходящую кандидатуру. Регистрация и подбор
кандидатуры – платные. Тот, кто делает выбор по базе, платит за каж-
дый выбранный вариант. После того, как выбор сделан, агентство со-
гласовывает дату и время встречи с каждой из сторон, формирует и пе-
редает приглашения для знакомства обеим сторонам. Во избежание не-
доразумений первая встреча происходит в агентстве.
Клиенты, желающие быть исключенными из базы, переносятся в архив.
Таблица 9.34
Набор данных к варианту 34
192
Вариант 35. Разработать прикладное программное обеспечение
деятельности ломбарда.
Человек обращается в ломбард в том случае, если ему срочно нужны
деньги. Например, недостает небольшой суммы для покупки квартиры, а
подходящая квартира как раз продается, и на неё уже есть и другие по-
купатели. Тогда человек может пойти в ломбард и заложить вещи на не-
обходимую сумму.
В ломбарде с клиентом заключается договор. В нем оговариваются
следующие условия: до какого срока выкуп вещи возможен без процен-
тов, с какого времени будет взыматься процент, по истечении какого
срока выкуп вещи невозможен, и она поступает в собственность лом-
барда. Невыкупленные вещи ломбард выставляет на продажу.
Таблица 9.35
Набор данных к варианту 35
193
Вариант 36. Разработать прикладное программное обеспечение
деятельности гостиницы.
В любой уважающей себя гостинице существует большое количество
возможных вариантов заселения гостей: все номера различаются по ка-
тегориям (суперлюкс, люкс и т.д.), по количеству комнат в номере, коли-
честву мест в каждом номере, а также по обустройству комнат – учиты-
вается, например, наличие телевизора, холодильника,телефона.
В обязанности администратора гостиницы входит подбор наиболее
подходящего для гостя варианта проживания, регистрация гостей, прием
платы за проживание, оформление квитанций, выписка отъезжающих.
Учитывается также возможность отъезда гостя раньше указанного при
регистрации срока, при этом производится перерасчет. Существует так-
же услуга бронирования номера.
Таблица 9.36
Набор данных к варианту 36
194
Вариант 37. Разработать прикладное программное обеспечение ин-
ститута селекции растений.
Данный институт занимается сбором, выведением и продажей раз-
личных сортов семян. В его ассортименте можно найти семена практи-
чески всех возможных видов растений: от помидоров до редких цветов.
Только что выведенные сорта заносятся в отдельный список для даль-
нейшего тестирования. Каждый сорт семян имеет свои характеристики,
такие как урожайность, морозоустойчивость, адаптация к местным усло-
виям, сроки созревания (раннеспелый, среднеспелый, поздний) и т.п.
Покупатель может выбрать сорт, отвечающий тем или иным характери-
стикам. Компания занимается как оптовыми, так и розничными прода-
жами. Оптовые покупатели заносятся в базу главным образом для того,
чтобы информировать их о поступлении новых или отсутствовавших в
определенный момент в продаже сортов.
Таблица 9.37
Набор данных к варианту 37
195
Вариант 38. Разработать прикладное программное обеспечение дея-
тельности приемной комиссии университета.
Каждый год университет зачисляет новых абитуриентов для возмож-
ного их поступления в университет после сдачи вступительных экзаме-
нов. На бюджетную основу могут быть зачислены: абитуриенты, полу-
чившие на школьном экзамене высокий балл ЕГЭ и успешно прошедшие
собеседование; абитуриенты, набравшие необходимый для бесплатного
поступления балл на университетских экзаменах, а также абитуриенты,
имеющие направление от какого-либо государственного предприятия.
Все остальные могут поступить в университет на платной основе, на-
брав необходимое установленное университетом число баллов на всту-
пительных экзаменах.
Таблица 9.38
Набор данных к варианту 38
196
Вариант 39. Разработать прикладное программное обеспечение дея-
тельности кассы авиакомпании. Касса авиакомпании занимается прода-
жей билетов на предстоящие рейсы. В билете указывается номер и на-
звание рейса, а также все остальные необходимые для пассажира дан-
ные: дата и время вылета, прибытия, номер места и класс (бизнес, эко-
номический). Цена билета зависит от рейса, лайнера, класса, а также от
времени покупки билета – иногда авиакомпании делают скидки купив-
шим билет более чем за месяц или на “горящие рейсы” – все зависит от
желания компании. Билеты продаются только совершеннолетним граж-
данам при предъявлении паспорта. У авиакомпании обычно имеется не-
сколько касс, расположенных в разных концах города, поэтому обяза-
тельно необходимо учитывать номер кассы, в которой был продан би-
лет, во избежание недоразумений при сдаче или обмене билета.
Таблица 9.39
Набор данных к варианту 39
197
Вариант 40. Разработать прикладное программное обеспечение дея-
тельности предприятия “Хабэнерго” по учету платы за потребленную
электроэнергию. Плата взымается с каждой квартиры в зависимости от
количества потребленной энергии или от числа проживающих, если
счетчик отсутствует. Существует несколько методик начисления або-
нентской платы. Плата зависит от вида счетчика (однофазный, трехфаз-
ный), от типа счетчика (возможность учета дневного и ночного тарифов),
а также от вида квартиры (коммунальная, отдельная).
Ответственный квартиросъемщик обязан каждый месяц снимать по-
казания счетчика и производить оплату за потребленную электроэнер-
гию через сбербанк. Второй экземпляр квитанции он обязан хранить у
себя и предъявлять инспектору Хабэнерго по первому требованию.
Таблица 9.40
Набор данных к варианту 40
198
10. БИБЛИОГРАФИЧЕСКИЕ РЕКОМЕНДАЦИИ
199
Microsoft Windows 2000 Server. Учебный курс MCSA/MCSE: Пер. с
англ. – 3-е изд. – М.: Издательско-торговый дом «Русская редакция»,
2002. – 912 стр.: ил.
Данный учебный курс, посвященный Microsoft Windows 2000 Server, поможет освоить
способы ручной и автоматической установки, а также настройку параметров этой
операционной системы. В книке кратко описаны различия версий Windows 2000,
рассмотрены файловые системы и функции управления дисками. Подробно расска-
зано об администрировании ОС и службы каталогов Active Directory, сетевых прото-
колах, маршрутизации, удаленном доступе, новинках системы безопасности, мони-
торинге и оптимизации Windows 2000 Server. Книга адресована всем, кто хочет по-
лучить исчерпывающие знания в области установки, конфигурирования и админист-
рирования Microsoft Windows 2000 Server.
200
Разработка настольных приложений в Access 2002. Для профес-
сионалов. /П. Литвин, К. Гетц. – СПб.: Питер; Киев: ВНV, 2003 – 941 c.:
ил.
В книге известных авторов, потративших бессчетное количество времени на изуче-
ние возможностей и недокументированных секретов Access 2002, рассказывается о
том, что должен знать и уметь каждый разработчик: о проектировании структуры баз
данных, SQL, об объектах доступа к данным ADO, формах, отчетах, о работе с Win-
dows API, создании модулей классов, событиях Access и т.д.
201
11. ЧТО СОДЕРЖИТСЯ НА КОМПАКТ-ДИСКЕ
202
ОГЛАВЛЕНИЕ
ПРЕДИСЛОВИЕ............................................................................................ 3
ВВЕДЕНИЕ ................................................................................................... 4
1. ПОСТАНОВКА ЗАДАЧИ ........................................................................... 6
2. НОРМАЛИЗАЦИЯ ДАННЫХ .................................................................... 7
3. РАЗРАБОТКА БАЗЫ ДАННЫХ .............................................................. 17
3.1. Создание новой базы данных.......................................................... 17
3.2. Создание таблиц .............................................................................. 18
3.3. Создание первичных ключей и индексов........................................ 23
3.4. Контроль правильности ввода данных ........................................... 27
3.5. Создание связей между таблицами ................................................ 30
3.6. Устранение проблем, возникающих при создании ключей............ 34
3.7. Устранение связи «многие ко многим» ........................................... 36
4. СОЗДАНИЕ ФОРМ ДЛЯ ВВОДА И РЕДАКТИРОВАНИЯ ДАННЫХ ..... 38
4.1. Создание простой формы в режиме конструктора......................... 38
4.1.1. Создание заготовки для формы ................................................ 40
4.1.2. Создание поля со списком......................................................... 41
4.1.3. Создание текстовых полей ........................................................ 43
4.1.4. Создание поля типа «Флажок».................................................. 44
4.1.5. Создание поля типа «Группа переключателей»....................... 45
4.1.6. Отображение фотографий в форме.......................................... 47
4.2. Создание сложной формы............................................................... 50
4.3. Добавление кнопки в форму для вызова другой формы ............... 57
4.4. Первые результаты .......................................................................... 61
4.5. Создание главной кнопочной формы.............................................. 64
5. СОЗДАНИЕ ОТЧЕТОВ ........................................................................... 65
5.1. Построение базового запроса ......................................................... 65
5.2. Разработка отчета в режиме конструктора..................................... 67
5.2.1. Создание заготовки отчета ........................................................ 67
5.2.2. Добавление элементов в отчет Microsoft Access ..................... 68
5.2.3. Вывод отчета Microsoft Access на печать ................................. 70
5.2.4. Операторы Microsoft Access для построения выражений........ 75
5.2.5. Стандартные функции для Microsoft Access и VBA.................. 76
6. ДОПОЛНИТЕЛЬНЫЕ ВОЗМОЖНОСТИ................................................ 78
6.1. Сжатие базы данных........................................................................ 78
6.2. Преобразование базы данных к предыдущей версии ................... 78
6.3. Анализ быстродействия базы данных ............................................ 79
6.4. Сохранение базы данных в виде MDE-файла................................ 79
6.5. Анализ данных в Microsoft Excel...................................................... 80
6.6. Повышение быстродействия Microsoft Access ............................... 82
7. ПЕРЕВОД ПРИЛОЖЕНИЯ НА ПЛАТФОРМУ КЛИЕНТ-СЕРВЕР ......... 83
7.1. Выбор редакции SQL Server ............................................................ 83
203
7.2. Генерация SQL Server 2000 Developer Edition ................................ 83
7.3. Преобразование базы данных Access в базу SQL Server.............. 93
7.3.1 Создание нового приложения клиент-сервер ............................ 99
7.3.2 Связь Access-приложения с базой данных SQL Server .......... 107
7.3.3 Создание базы SQL Server без изменения приложения........ 108
8. ВНЕСЕНИЕ ИЗМЕНЕНИЙ В ПРОЕКТ MICROSOFT ACCESS ........... 113
8.1. Преимущества работы с мастером преобразования ................... 113
8.2. Перенесенные объекты и оставшиеся проблемы ....................... 114
8.2.1. Запуск Enterprise Manager MS SQL Server .............................. 114
8.2.2. Работа с мастером построения схемы данных ...................... 116
8.2.3. Успешное преобразование запроса Access в вид MS SQL.... 118
8.3. Исправление ошибок мастера преобразования ........................... 119
8.3.1. Создание хранимой процедуры с параметрами..................... 119
8.3.2. Обновление данных в форме с двумя таблицами ................. 120
8.3.3. Создание хранимой процедуры средствами Access .............. 126
8.3.4. Стандартные функции MS SQL Server.................................... 134
8.4. Замена англоязычных сообщений СУБД на русские ................... 136
8.5. Резервное копирование базы данных........................................... 140
8.6. Перенос базы данных на рабочий сервер .................................... 144
8.7. Система безопасности базы данных............................................. 147
8.7.1. Работа системного администратора ....................................... 148
8.7.2. Работа администратора базы данных .................................... 150
8.8. Управление блокировками............................................................. 155
9. ЗАДАНИЯ НА КУРСОВОЙ ПРОЕКТ (РАБОТУ)................................... 158
10. БИБЛИОГРАФИЧЕСКИЕ РЕКОМЕНДАЦИИ ..................................... 199
11. ЧТО СОДЕРЖИТСЯ НА КОМПАКТ-ДИСКЕ ...................................... 202
204
Гурвиц Геннадий Александрович.
Издательство ДВГУПС
680021, г. Хабаровск, ул. Серышева, 47.
205