Министерство транспорта Российской Федерации Федеральное агентство железнодорожного транспорта ГОУ ВПО «Дальневосточный ...
38 downloads
344 Views
6MB Size
Report
This content was uploaded by our users and we assume good faith they have the permission to share this book. If you own the copyright to this book and it is wrongfully on our website, we offer a simple DMCA procedure to remove your content from our site. Start by pressing the button below!
Report copyright / DMCA form
Министерство транспорта Российской Федерации Федеральное агентство железнодорожного транспорта ГОУ ВПО «Дальневосточный государственный Университет путей сообщения»
Г.А. Гурвиц
Разработка реального приложения в среде клиент-сервер
Рекомендовано Дальневосточным региональным учебно-методическим центром в качестве учебного пособия для студентов направления 230200 «Информационные системы» ВУЗов региона
Хабаровск Издательство ДВГУПС 2005
УДК 004.451.83(075.8) ББК З973.2-018.2 я73 Г 950 Рецензенты: Кафедра “Информатика и информационная безопасность” Петербургского Государственного университета путей сообщения Заведующий кафедрой доктор технических наук профессор Корниенко А.А. Кафедра «Автоматика и системотехника» Хабаровского Государственного технического университета Заведующий кафедрой доктор технических наук профессор Чье Ен Ун Гурвиц Г.А. Г 950 Разработка реального приложения в среде клиент-сервер. Учебное пособие. – Хабаровск: Изд-во ДВГУПС, 2005. – 204 с.: ил. Учебное пособие соответствует Государственному образовательному стандарту направления 230200 “Информационные системы” специальности 230201 “Информационные системы и технологии”. Рассматриваются основные этапы создания реального приложения для работы с реляционными базами данных. Описывается работа с Microsoft SQL Server (сервер) и Microsoft Access (клиент). Пособие предназначено для студентов, изучающих курсы “Управление данными”, “Базы данных” и “Корпоративные информационные системы”. Главы 1-6 могут быть использованы студентами всех специальностей в курсе “Информатика”. УДК 004.451.83(075.8) ББК З973.2-018.2 я73 Все названия программных продуктов являются зарегистрированными торговыми марками. Никакая часть настоящего издания ни в каких целях не может быть воспроизведена в какой бы то ни было форме и какими-то ни было средствами, будь то электронные или механические, включая фотокопирование и запись на магнитный носитель, если на то нет письменного разрешения владельцев авторских прав.
ISBN 5-262-00208-0 © Издательство Дальневосточного государственного университета путей сообщения (ДВГУПС), 2005 © Гурвиц Г.А. 2005 © Гурвиц Ю.Г. (Обложка) 2005 2
ПРЕДИСЛОВИЕ Microsoft Access 2003 – последняя версия продукта корпорации Microsoft – является самой распространенной в мире системой управления реляционными базами данных для персональных компьютеров. Она предоставляет разработчикам комбинацию мощных современных технологий и развитых средств для создания прикладных программ нового поколения. Тот, кто уже знаком с современной компьютерной литературой по разработке приложений, возможно, удивится, не обнаружив на каждой странице двух-трех десятков строк кода. Обилие картинок в пособии вполне соответствует новому мышлению. Теперь процесс разработки программы проще показать, чем рассказать о нем. Автор, используя весь свой богатый опыт практических разработок, предлагает собственный подход к освоению нового инструмента, делится с читателем своим видением уникальных перспектив Microsoft Access. Изучив его, начинающий разработчик несомненно освоит основы создания приложений и получит навыки выбора нужных инструментов Microsoft Access для достижения наилучшего результата. В Microsoft Access 2003 реализовано огромное количество новейших концепций, технических приемов и инструментов. Независимо от того, является ли читатель новичком в мире визуального программирования или делает огромный шаг вперед, опытный наставник рядом значительно ускорит процесс обучения, поможет быстрее сориентироваться и достичь высокой производительности в среде Microsoft Access. Главный упор в пособии сделан на поэтапное – шаг за шагом – освоение нового. Значительная часть учебного пособия посвящена переводу уже готового приложения на платформу клиент-сервер. В качестве сервера выбран MS SQL Server – самая лучшая на сегодняшний день серверная СУБД, выгодно отличающаяся от других соотношением цена – качество. Вполне возможно, что читатель найдет лучшее решение проблем, поднятых автором, - это нормально, значит, пособие подтолкнуло к поиску самых оптимальных решений! Анатолий Корниенко Заведующий кафедрой “Информатика и информационная безопасность” доктор технических наук профессор Петербургский Государственный университет путей сообщения 3
ВВЕДЕНИЕ Назначение этой книги состоит в том, чтобы помочь из огромной массы материала вычленить ключевые вопросы и важнейшие решения. На протяжении всего изложения я старался честно и в меру своих сил объяснять, что и почему происходило. Уинстон Черчиль. Мировой кризис.
Реально работающее приложение лучше всего подходит для изучения проблем, с которыми не раз доводилось сталкиваться в процессе работы с новым программным продуктом. Именно на этом и сделан особый акцент в пособии. Надеюсь, что вы найдете в нем простые приемы создания приложений для работы с базами данных, позволяющие избежать тупиковых решений и ненужных усилий, обычно ведущих к напрасной потери времени. Перед вами руководство по быстрому освоению базовых возможностей Microsoft Access и Microsoft SQL Server. Поэтому не ищите в нем подробных экскурсов в теорию программирования. В последнее время широкое распространение получил унифицированный язык моделирования – UML, который предназначен для описания, визуализации и документирования объектно-ориентированных систем и бизнес-процессов с ориентацией на их последующую реализацию в виде программного обеспечения. Ввиду небольшого масштаба предприятий, предложенных в качестве вариантов к курсовой работе (курсовому проекту) в данном пособии, этот язык и его реализации (CASEинструментарии) не рассматриваются. Сначала мы просто создадим несложное приложение в Microsoft Access, и в процессе работы Вы получите опыт использования возможностей рассматриваемой СУБД (системы управления базами данных). Советую Вам заглянуть в папку: C:\Program Files\Microsoft Office\Office11\Samples\ Здесь вы найдете несколько приложений-примеров, входящих в базовую поставку Microsoft Access 2003. Начинающим разработчикам будет очень полезно изучить возможности базы данных Борей.mdb. Поищите здесь и другие приложения, выберите те, на которые хотите сделать похожими ваши собственные, и разберитесь как они устроены. Вы удивитесь: масса вещей, требующих написания текста программы до появления Microsoft Access, теперь просто встроены в меню СУБД. Затем мы рассмотрим процесс перевода нашего приложения на платформу клиент-сервер. Уверяю Вас, что рассматриваемый в пособии Microsoft SQL Server, является самой выгодной серверной СУБД среди существующих, исходя из соотношения цены и качества. Информационные системы уровня предприятия, построенные с использованием Microsoft SQL Server, выгодно отличаются невысокой суммарной стоимо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. ПОСТАНОВКА ЗАДАЧИ Итак, к делу. Вам предстоит работа в информационно-аналитическом отделе дистанции гражданских сооружений (НГЧ-3). Первое ваше задание – разработка прикладного программного обеспечения деятельности отдела по учету недвижимости, находящейся на балансе предприятия. В связи с реорганизацией станционного хозяйства, объектов в ведении НГЧ-3 теперь около полусотни. Квартир порядка трех тысяч, в них проживает около десяти тысяч человек. Учет недвижимости, а также отслеживание квартплаты отныне в ведении этого отдела, но это уже второй этап работы. В первую очередь на вас возложена задача компьютерного учета недвижимого имущества. Объем работы сравнительно небольшой. Не радуйтесь! Ваш начальник требует, чтобы эксплуатация программного комплекса, заказанного им сегодня, началась еще вчера. Вы провели в отделе по учету недвижимости значительное время, но все, что вам удалось выяснить из разговора с персоналом, – это набор данных, которые будут храниться в электронном виде, их тип и максимальное количество в базе (табл. 1.1). Они сведены вами в таблицу. Надеюсь, что вы предупредили работающих о том, что если какой-либо параметр отсутствует в базе данных, то извлечь его и выполнить какие-либо расчеты с его участием будет в дальнейшем невозможно. Разумно, если вы выбрали в качестве инструмента Microsoft Access 2002 – рекордсмена среди существующих СУБД по времени разработки приложения и запланировали перевод базы данных на платформу SQL Server 2000, так как при отслеживании платежей по квартплате, число записей в таблице лицевых счетов достигнет 200– 500 тыс., а это уже значительно превышает возможности Access 2002. Таблица 1.1 Набор данных «Недвижимость»
6
№
Поле
Тип
Размер
Описание
1
Address
Текстовый
50
Адрес здания
2
District
Текстовый
15
Район города, где оно расположено
3
Land
Числовой
10
Площадь земельного участка
4
Year
Числовой
4
Год постройки здания
5
Material
Текстовый
15
Материал стен здания
6
Comment
Поле Memo
Авто
Примечания
7
Wear
Числовой
2
Износ в процентах
8
Cost
Денежный
15
Стоимость здания в рублях
№
Поле
Тип
Размер
Описание
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. НОРМАЛИЗАЦИЯ ДАННЫХ Теперь займемся проектированием эффективной структуры данных. На сегодняшний день известны три модели данных: иерархическая, сетевая и реляционная. Так как Microsoft Access 2002 и Microsoft SQL Server 2000 – это реляционные СУБД, то выбора у нас нет. Теория реляционной базы данных была разработана в начале 70-х годов Коддом (E. F. Codd) на основе математической теории отношений. В реляционной базе данных все данные хранятся в виде таблиц, при этом все операции над базой данных сводятся к манипуляциям с таблицами. Основными понятиями в этой теории являются: таблица, строка, столбец, индекс, первичный и внешний ключи, связи. Таблица состоит из строк и столбцов и имеет уникальное имя в базе данных. База данных содержит множество таблиц, связь между которыми устанавливается с помощью
7
совпадающих полей. В каждой из таблиц содержится информация о каких-либо объектах одного типа. Приступая к созданию нового приложения, главное – самым тщательным образом спроектировать структуру его таблиц. Если не уделить структуре должного внимания, то в лучшем случае это может проявиться в неэффективной работе приложения, а в худшем – в невозможности реализации некоторых требований к системе в целом. И, наоборот, при хорошей организации набора таблиц будут решены не только текущие проблемы, но и потенциальные, которые в данный момент вы не могли предвидеть. В общем, структура данных является определяющим фактором успеха или провала всего приложения. Э.Ф. Кодд доказал, что, следуя при создании таблиц и связей между ними только немногим формализованным правилам, можно обеспечить простоту манипулирования данными. Его методика получила наименование нормализации данных. Теория реляционных баз данных основана на концепции использования ключевых полей для определения отношений между таблицами. Чем больше таблиц, тем больше отношений требуется определить, чтобы связать их между собой. Из теории Кодда отнюдь не следует, что каждая таблица должна быть напрямую связана с любой другой таблицей. Но, поскольку каждая таблица связана хотя бы с одной таблицей в базе данных, можно утверждать, что все таблицы в базе имеют прямые или косвенные отношения друг с другом. Мы установили, какие поля будут включены в базу данных. Следующий этап состоит в разделении их на таблицы. Конечно же, можно было бы работать с приведенной выше единственной таблицей «Недвижимость», но даже не знающим правил нормализации ясно, что для каждого проживающего в квартире не имеет смысла повторять всю информацию о здании, квартире, ответственном квартиросъемщике и лицевом счете, а при переименовании улицы – вносить исправления в тысячи записей, содержащих сведения о технических характеристиках квартиры. Наличие повторяющейся информации приведет к неоправданному увеличению размера базы данных. В результате снизится скорость выполнения запросов. При многократном вводе повторяющихся данных возрастет вероятность ошибки. Представьте себе ситуацию, связанную с вводом данных о проживающих на Восточном шоссе. Это пять тысяч человек. Вот несколько вариантов адреса: Шоссе Восточное, Восточное шоссе, ш. Восточное, ш-се Восточное. А сколько еще вариантов может появиться у оператора, работающего с вашей программой. О грамматических ошибках и вариантах с номером дома, запятыми и точками в адресе позволю себе умолчать. Какую информационно-поисковую систему мы получим в результате? Скорее всего: искать можно – найти нельзя!
8
Воспользуемся практическими рекомендациями теории нормализации для разработки на основании таблицы «Недвижимость» многотабличной базы данных «Real Estate». Я хорошо помню своего учителя физики в старших классах школы. В нарушение всех тогда существовавших методик он давал весь годовой курс за месяц, а оставшееся время расширял заложенные в наши головы основы знаний. Его методика мне очень нравится, и я постоянно буду использовать ее в этой книге. Вот Вам результат ее первого применения. На рис. 2.1 вы видите то, что у вас должно получиться после всех манипуляций, кратко изложенных выше и предусмотренных теорией нормализации. Практический же путь к этому результату смотрите на следующих полутора десятках страниц.
Рис. 2.1. Окончательный вид базы данных «Real Estate»
Первая нормальная форма. Таблица находится в первой нормальной форме, если значения всех ее полей атомарные, и в ней отсутствуют повторяющиеся группы полей. На «заре» существования реляционных баз данных на количество полей в записи накладывались определенные ограничения. Как следствие, разработчики объединяли несколько предполагаемых полей в одно, чтобы все нужные данные поместить в одну запись. Известно, что если поле содержит несколько значений, то существенно усложняется формирование отношений между полями, считывание данных и выполнение других операций, а необходимость выполнения поиска подстрок и синтаксического анализа полей в значительной степени замедляет работу приложения. К счастью, сейчас все ограничения на количество полей в записи сняты. 9
Приведем наши данные к первой нормальной форме. Выделим самостоятельные группы полей и поместим их в отдельные таблицы. На первый взгляд их четыре. Это информация об адресе, здании, квартире и собственниках. Добьемся атомарности всех полей. Поле FioHost, в которое записывается информация о фамилии, имени и отчестве ответственного квартиросъемщика, заменим тремя полями: Family, Name, Second. Также поступим и с проживающими в квартире. Поле Address разобьем на три: название, признак и порядок их следования в официальных документах. Получится следующая картина (табл. 2.1). Таблица 2.1 Информация об адресе (Street) №
Поле
Тип
Размер
Описание
1
Street
Числовой
4
Номер улицы
2
Name
Текстовый
30
Название улицы
3
Sign
Текстовый
10
Признак адреса
4
First
Логический
1
Порядок следования в документах
Street
Name
Sign
First
173
Воронежская
Улица
Ложь
174
Воронежский
проезд
Истина
175
Воронежское
шоссе
Истина
176
Ворошилова
Улица
Ложь
Если значением поля First является Ложь, то при формировании адреса здания в официальных документах на первое место будет поставлен признак: Улица Ворошилова, а если Истина – название: Воронежское шоссе или Воронежский проезд. Обратите внимание на заполнение поля Sign. Если в поле First стоит Ложь, то значение признака пишется с большой буквы. Обратите внимание на то, как легко будет сейчас решаться проблема переименования улицы. Допустим, что отныне Воронежское шоссе, стоящее под номером 175 в таблице Street, переименовано, например, в улицу Муравьева-Амурского. Вносим исправления только в таблицу Street. Оставляем этот номер, меняем название, признак и значение поля First c Истина на Ложь. Проблема решена. Так как во всех остальных таблицах Воронежское шоссе (улица Муравьева-Амурского) фигурирует под номером 175, то никакие изменения не требуются. 10
Таблица 2.2 Информация о здании (Building) №
Поле
Тип
Размер
Описание
1 2 3 4 5 6 7 8 9 10 11 12 13 14
Street House District Land Year Material Comment Wear Cost Line Square Picture Kind Elevator
Числовой Текстовый Текстовый Числовой Числовой Текстовый Поле Memo Числовой Денежный Числовой Числовой Поле OLE Числовой Логический
4 10 15 10 4 15 Авто 2 15 5 10 Авто 1 1
Ссылка на номер улицы Номер дома Район города Площадь земельного участка Год постройки здания Материал стен здания Примечания Износ в процентах Стоимость здания в рублях Расстояние от центра города Площадь нежилых помещений Фото здания Вид собственности Наличие лифта
Таблица 2.3 Информация о квартире (Flat) №
Поле
Тип
Размер
Описание
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
Street House Flat Storey Rooms SquareFlat Dwell Branch Balcony Height Account Family Name Second Pasport
Числовой Текстовый Числовой Числовой Числовой Числовой Числовой Числовой Числовой Числовой Числовой Текстовый Текстовый Текстовый Поле Memo
4 10 4 2 1 Авто Авто Авто Авто Авто 5 20 20 20 Авто
Ссылка на номер улицы Номер дома Номер квартиры Номер этажа Количество комнат Общая площадь квартиры Жилая площадь квартиры Вспомогательная площадь квартиры Площадь балкона Высота квартиры Номер лицевого счета Фамилия квартиросъемщика Имя квартиросъемщика Отчество квартиросъемщика Данные его паспорта
11
Таблица 2.4 Информация о проживающих в квартире (Owners) №
Поле
Тип
Размер
Описание
1 2 3 4 5 6 7 8 9
Street House Flat Number Family Name Second Born Status
Числовой Текстовый Числовой Числовой Текстовый Текстовый Текстовый Числовой Текстовый
4 10 4 2 20 20 20 4 20
Ссылка на номер улицы Номер дома Номер квартиры Порядковый номер проживающего Фамилия проживающего Имя проживающего Отчество проживающего Год рождения проживающего Льготы и статус проживающего
Удовлетворение требованиям первой нормальной формы называется структурной или синтаксической нормализацией. Данные разделены (табл. 2.1, 2.2, 2.3, 2.4) на четыре родственные группы: улицы, здания, квартиры и проживающие (рис. 2.2). Значения всех полей этих таблиц – атомарные. Все таблицы находятся в первой нормальной форме. Однако останавливаться на этом не следует. С такими данными все еще возможно возникновение проблем. Прежде всего, в базе данных много повторений значений – не внутри одной записи, а в пределах одной Рис. 2.2. Таблицы базы данных таблицы. А там, где есть повторяющиеся значения, возможны противоречия. Посмотрите на поля Material и District таблицы Building. Та же картина, которая имела место чуть раньше с названиями улиц. Варианты названий материала стен: шлакобетон, шлакобетонные, шлб, шл.бет. Уберем название материала стен и названия районов в отдельные таблицы – справочники (Wall и District), оставив в основной таблице Building ссылки на эти справочники. База данных примет более правильный вид (таблицы на рис. 2.3).
12
Рис. 2.3. Таблицы базы данных в первой нормальной форме
Появились еще две таблицы: Wall и District (табл. 2.5, табл. 2.6). Таблица 2.5 Информация о районах города (District) № 1 2
Поле District Area
Тип Числовой Текстовый
Размер 1 15
Описание Номер района Название района
Таблица 2.6 Информация о материале стен здания (Wall) №
Поле
Тип
Размер
Описание
1 2
Material Wall
Числовой Текстовый
1 15
Номер материала Название материала
Структура таблицы Building несколько изменилась. Вместо описаний района и материала стен появились ссылки на соответствующие таблицы (табл. 2.7). Таблица 2.7 Окончательная структура таблицы Building №
Поле
Тип
Размер
Описание
1
Street
Числовой
4
Ссылка на номер улицы
2
House
Текстовый
10
Номер дома
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
Наличие лифта
Вторая нормальная форма. Таблица находится во второй нормальной форме, если она удовлетворяет условиям первой нормальной формы, и любое неключевое поле однозначно идентифицируется полным набором ключевых полей. Настало время поговорить о ключевых полях. Мощь реляционных баз данных, таких как Microsoft Access, опирается на их способность быстро найти и связать данные из разных таблиц при помощи запросов, форм и отчетов. Для этого каждая таблица должна содержать одно или несколько полей, однозначно определяющих каждую запись в таблице. Такие поля называют первичным ключом таблицы. Если для таблицы определен первичный ключ, то Microsoft Access предотвращает дублирование значений полей или ввод значений Null в эти поля. В Microsoft Access 2002 можно выделить три типа ключевых полей: простой ключ, составной ключ и счетчик. Если поле содержит уникальные значения, то его можно определить как ключевое или простой ключ. Примеры из нашей реальной жизни: идентификационный номер налогоплательщика, однозначно определяющий каждого жителя нашей страны, номер свидетельства пенсионного фонда, кадастровый номер земельного участка, реестровый номер строения, номер автомобиля – все это уникальные номера в пределах страны. Поле Street (номер улицы) в таблице Street также можно определить как простой ключ. Этим же требованиям отвечают поля District (номер района) и Material (номер материала) таблиц District и Wall. Можно смело гарантировать их уникальность в пределах нашего программного комплекса. С таблицей Building, содержащей информацию о зданиях, при определении первичного ключа нужно поступить таким образом. К нашим услугам составной ключ. Связка полей – 14
номер улицы плюс номер дома – однозначно определит положение записи, относящейся к одному зданию в этой таблице. С однозначным определением квартиры в таблице Flat (квартиры) дело состоит чуть сложнее. Составной первичный ключ выглядит так: номер улицы плюс номер дома плюс номер квартиры. В очень редких случаях с определением первичного ключа для таблицы может сложиться тупиковая ситуация. Не отчаивайтесь, добавьте в таблицу поле и определите его тип как «счетчик». Все остальное Access сделает самостоятельно. В это поле будет автоматически вноситься уникальное число даже при работе с Вашей базой в сетевом варианте (с нескольких компьютеров одновременно). Если до сохранения созданной таблицы ключевые поля не были определены, Microsoft Access предложит создать ключевое поле автоматически. При нажатии кнопки «Да» будет создано ключевое поле счетчика. Третья нормальная форма. Таблица находится в третьей нормальной форме, если она удовлетворяет условиям второй нормальной формы и ни одно из неключевых полей таблицы не идентифицируется с помощью другого неключевого поля. Посмотрите внимательно на таблицу Flat (квартиры). Она содержит неключевое поле Account (номер лицевого счета), которое однозначно определяет ответственного квартиросъемщика (поля: Family, Name, Second и Pasport) в этой таблице. Уберем все эти поля в еще одну таблицу Account и назначим в ней в качестве простого первичного ключа поле Account (табл. 2.8). Таблица 2.8 Информация об ответственном квартиросъемщике (Account) №
Поле
Тип
Размер
Описание
1 2 3 4 5
Account Family Name Second Pasport
Числовой Текстовый Текстовый Текстовый Поле Memo
5 20 20 20 Авто
Номер лицевого счета Фамилия квартиросъемщика Имя квартиросъемщика Отчество квартиросъемщика Данные его паспорта
Осталось установить связи между таблицами, и база данных будет готова к работе. Microsoft Access поддерживает четыре типа связей: один к одному, один ко многим, много к одному и много ко многим. Связь «один к одному» означает, что каждой записи одной таблицы соответствует только одна запись другой таблицы и наоборот. В качестве примера рассмотрим связь между таблицами Flat и Account (рис. 2.4). Одна квартира – один ответственный квартиросъемщик. Связь между ними поддерживается при помощи совпадающих полей Account. 15
Обратите внимание! У полей, используемых для связи, одинаковое наименование (Account) и тип (числовой с 5 разрядами). Всегда придерживайтесь этого правила при определении полей для связи любого типа между таблицами. Хотя, если быть более точным, связь между таблицами устанавливается на основании значений совпадающих полей, а не их наименований.
Рис. 2.4. Схема связей между таблицами
Связь «один ко многим». В качестве иллюстрации данного типа связи обратимся к таблицам Street и Building. Одной улице в таблице улиц Street соответствует несколько зданий из таблицы зданий Building. Связь между ними осуществляется на основании значений совпадающих полей Street. Используется простой первичный ключ таблицы Street. В качестве других примеров могут быть рассмотрены таблицы Building и Flat, Flat и Owners. Одному зданию соответствуют несколько квартир, а одной квартире – несколько собственников. Для связи этих таблиц используются составные первичные ключи. Связь «много к одному» аналогично ранее рассмотренному типу «один ко многим». Тип связи между объектами полностью зависит от вашей точки зрения. Например, если вы будете рассматривать связь между собственниками и квартирой, то получите много к одному. Несколько собственников проживают в одной квартире. Связь «многие ко многим» возникает между двумя таблицами в тех случаях, когда одна запись из первой таблицы может быть связана бо-
16
лее чем с одной записью из второй таблицы, а одна запись из второй таблицы может быть связана более чем с одной записью из первой таблицы. Таких связей следует избегать, так как реляционная модель не позволяет непосредственно работать с ними. Microsoft Access или любая другая реляционная СУБД в этом случае бесполезны. Всегда можно ввести в базу данных еще одну - две промежуточные таблицы и тем самым избежать возможных неприятностей при разработке интерфейса вашего приложения, используя понятные и безотказно работающие связи «один ко многим». Некоторые варианты заданий из этого пособия могут привести к связи «многие ко многим» между таблицами базы данных. Обратившись к материалам главы 3.7, Вы увидите мое видение решения этой проблемы одного из вариантов. Что за третьей нормальной формой? Если вы довели уровень нормализации таблиц вашей базы данных до третьей нормальной формы и ваша задача – разработка системы масштаба предприятия, то смело можете переходить к разработке интерфейса. Однако если вы участвуете в разработке суперхранилища данных под Oracle или DB2, то разберитесь по специальной литературе с нормальной формой БойсаКодда, четвертой и пятой нормальными формами. 3. РАЗРАБОТКА БАЗЫ ДАННЫХ 3.1. Создание новой базы данных Запустите Microsoft Access на вашем компьютере. Для этого нажмите кнопку «Пуск» и выберите в меню «Программы» пункт «Microsoft Access»–Access 2002 установлен там по умолчанию. На экране появится главное окно Access 2002 и диалоговое окно, позволяющее создать базу данных или открыть уже существующую базу данных (рис. 3.1).
Рис. 3.1. Диалоговое окно Microsoft Access 2002
17
В верхней части диалогового окна вы увидите список ранее открывавшихся баз данных. Если Access 2002 запущен в первый раз, то в списке появится только элемент «Другие файлы». Выберите переключатель «Новая база данных» и щелкните по кнопке «Ок». Появится окно, имеющее заголовок «Файл новой базы данных». Определитесь с именем файла и папкой, в которой он будет расположен. Пусть его имя – Real Estate. Нажмите кнопку «Создать». Появится окно базы данных с этим именем (рис. 3.2). База данных получила свое название и законное место на жестком диске. Отличительной особенностью Рис. 3.2 Окно создаваемой базы данных Microsoft Access является то, что окно базы данных является отправной точкой, с которой начинается выполнение всех операций над объектами базы данных: таблицами, запросами, формами, отчетами, макросами и модулями. Не менее интересным фактом является и тот, что все эти элементы хранятся в одном единственном файле. В данном случае – Real Estate.mdb, чего не скажешь о других СУБД для персональных компьютеров. 3.2. Создание таблиц Существует несколько способов создания таблиц в Microsoft Access. 1. С помощью мастера таблиц. 2. Путем ввода данных в таблицу. 3. С использованием конструктора таблиц. 4. Путем импорта данных из внешнего файла в текущую базу данных. 5. Создание таблиц в текущей базе данных, связанных с таблицами внешнего файла. Первые два способа – для новичков в работе с базами данных, испытывающих сильное желание немедленно создать свою первую таблицу. Процесс создания таблицы с помощью мастера включает в себя несколько этапов. Вам будет предложено несколько десятков образцов таблиц делового и личного применения. Выбирайте нужные детали и проектируйте свою таблицу! Второй способ еще проще. Access 2002 создаст пустую таблицу на основе используемой по умолчанию со структурой, имеющей 20 полей и 30 пустых записей. Заносите данные прямо в нее, но помните, что этот способ пригоден только для таблиц, не имеющих связей. 18
Если вы заняты разработкой серьезного приложения – забудьте про эти способы. Конструктор таблиц – вот то, что вам необходимо в этом случае! В списке «Объекты» (рис. 3.2) выберите пункт «Таблицы» – дальше три пути на ваш выбор. Все они приведут к цели. Такое оформление характерно для многих продуктов фирмы Microsoft. Моя дочь называет его: «Пересекающиеся каскады». Каскад первый. Выберите первый пункт меню, расположенного в окне таблиц базы данных, Рис. 3.3. Создание новой таблицы в режиме конструктора таблиц который называется: «Создание таблицы в режиме конструктора» (рис. 3.3). Самих таблиц там пока еще нет. Каскад второй. Нажмите кнопку «Создать» на панели инструментов окна базы данных. Появится окно с названием «Новая таблица». Выберите в появившемся меню этого окна пункт «Конструктор» и сделайте щелчок мышью по кнопке «Ok». Каскад третий. Щелкните по кнопке «Конструктор» (рис. 3.3). Она расположена на панели инструментов окна базы данных рядом с пикто. граммой Во всех трех случаях увидим окно конструктора таблицы (рис.3.4).
Рис. 3.4. Окно конструктора таблицы
В окне три колонки. Первые две: имя поля и тип данных будут использоваться приложением, а третья: описание – предназначена только для разработчика. Не оставляйте ее пустой! Опишите подробно назначение поля таблицы. Позже обязательно поймете важность этого совета. Имена полей должны содержать не более 64 символов и могут включать любые комбинации символов за исключением точки, восклицательного знака и квадратных скобок. Используйте в именах полей только латинские 19
буквы при общей длине имени до 10 символов включительно. В этом случае у Вас не будет проблем с конвертацией таблиц Microsoft Access в таблицы других СУБД (например, Visual Fox Pro). Каждое поле таблицы должно иметь уникальное имя, но в различных таблицах можно использовать одинаковые имена полей. В табл. 3.1 приведены основные типы данных полей Microsoft Access 2002. Создадим нашу первую таблицу Building. Ее окончательная структура взята из табл. 2.7. Имейте в виду, что имя поля и его описание вводится с клавиатуры, а тип данных выбирается из списка. Список будет доступен только тогда, когда курсор попадет в колонку «Тип данных». Таблица 3.1 Типы данных полей таблиц Access 2002 Вид данных
Тип данных Текстовый
Символьный МЕМО
Числовой
Счетчик Числовой
Описание Текст или числа, не требующие проведения расчетов. Максимальная длина – 255 символов. По умолчанию длина текстового поля устанавливается равной 50 символов Поля типа МЕМО предназначены для хранения больших текстовых данных. Длина поля может достигать 64 Кб. Поле не может быть ключевым или индексированным Содержит множество подтипов (размеров). От выбора размера зависит точность вычислений. Используйте целый тип для полей, которые используются в ссылках на другие таблицы базы данных Уникальные, последовательно возрастающие числа, автоматически вводящиеся в таблицу при добавлении каждой новой записи
Логический
Содержит одно из двух возможных значений 0 – для представления значения «нет» и –1 (обратите внимание: минус 1) для «да»
Денежный
Позволяет выполнять расчеты с точностью до 15 знаков в целой и до 4 знаков в дробной части
Дата и время
Дата/Время
Семь видов форматов для отображения даты и времени
Произвольный
Поле объекта OLE
Включает рисунок, фотографию, звукозапись, диаграммы, векторную графику, форматированный текст и т.п.
Адреса WEB
Гиперсвязь
Содержит адреса Web-страниц
Рассмотрим действия по созданию таблицы подробнее (рис. 3.5). 20
1. Введите в первую колонку имя первого поля: STREET и нажмите клавишу <Enter>. Курсор переместится во вторую колонку «Тип данных». По умолчанию будет назначен тип «Текстовый». 2. Нажмите клавишу для того, чтобы раскрыть список типов данных. Раскрыть список можно и при помощи мыши. Выберите тип «Числовой» и нажмите клавишу <Enter>. Мне больше нравится создавать таблицы, не прибегая к помощи манипулятора «мышь», поскольку в основном данные вводятся с клавиатуры, а переключение между клавиатурой и мышью занимает дополнительное время, тем более что такую возможность нам предоставили создатели Microsoft Access. Для создания таблиц в режиме конструктора они задействовали несколько функциональных клавиш.
Рис 3.5. Таблица Building в режиме конструктора
3. Заполните колонку «Описание». Не ленитесь, пишите подробнее! 4. Нажмите клавишу для перемещения курсора в область «Свойства поля». Сначала он окажется в строке «Размер поля». По умолчанию там стоит значение «Длинное целое». 5. Нажмите клавишу . Раскроется список подтипов числового типа. Выберите подтип «Целое» при помощи клавиши < ↓ > и нажмите клавишу<Enter>. 6. Оставьте незаполненным «Формат поля». Перейдите сразу к строке «Число десятичных знаков» и нажмите клавишу . Для ссылки на номер улицы используем четыре десятичных знака. Это дает возможность работать с 9999 улицами, что вполне достаточно для города с 21
миллионным населением. Кстати, в Хабаровске 1248 улиц, переулков, проездов, шоссе, кварталов, площадей, бульваров и т.д. 7. Нажмите клавишу для перехода в верхнюю часть окна конструктора таблицы. 8. Повторите шаги 1–7 для всех оставшихся полей таблицы. После занесения данных обо всех Рис. 3.6. Ввод имени таблицы полях таблицы просто закройте окно конструктора таблиц. Появится диалоговое окно «Сохранение», запрашивающее подтверждение на сохранение структуры таблицы (рис. 3.6). Вместо названия Таблица1 введите название building, и щелкните по кнопке «Ок». Наша первая Рис. 3.7. Окно базы данных таблица появится в окне базы данных (рис. 3.7). Заполнять сейчас созданную таблицу начинающему пользователю категорически не рекомендуется, да так и не делается! Посмотрите на содержимое таблицы 3.2. Это не отдельная таблица, она будет связана с другими таблицами базы данных Real Estate. Что в ней хранится – пока загадка. Уверен, что большинство цифр Вам просто непонятны. Таблица 3.2 Информация, содержащаяся в связанной таблице Street
House
Flat
Storey
Rooms
Square
Dwell
Branch
Account
14 14 14 14 14 14 14 179 179 179 179
102 102 102 102 102 102 102 104 104 104 104
1 2 3 4 5 6 7 1 2 3 4
1 1 1 2 2 10 10 1 1 1 2
3 4 4 4 3 1 7 1 2 1 4
60,8 100 78 90 100 200 170 30 42 27 100
40 70 60 80 95 190 150 20 30 20 90
20 28 16 5 30 8 10 9 11 6 5
3450 1000 4321 666 778 9787 879 23210 3267 6666 4587
22
Аналогичным образом создадим все наши таблицы, разработанные в главе 2: Flat, Owners, Account, Street, District и Wall. 3.3. Создание первичных ключей и индексов Одним из основных требований, предъявляемых к СУБД, является возможность быстрого поиска требуемых записей. В реляционных СУБД для реализации этого требования служат индексы. Индекс очень похож на алфавитный указатель в книге. Например, у вас в руках книга по Access 2002 и вы хотите узнать о том, что написано в ней об индексах. Загляните в конец книги и найдите в предметном указателе слово «индекс». Так как указатель отсортирован по алфавиту, вы без труда найдете нужное слово и ссылки на страницы, где оно встречается в книге. Индекс работает с таблицей по такому же принципу. Он содержит отсортированные значения указанного поля таблицы и ссылки на номера записей таблицы, где эти значения находятся. При поиске записи система управления базами данных сначала просматривает индекс, что занимает совсем немного времени, так как для этого используется специальный алгоритм, находит ссылку на номер записи и по ней – нужную строчку в таблице. Таким образом, отпадает необходимость последовательного просмотра всех записей в таблице. Индекс можно построить по полю почти любого типа. К счастью, пользователь не обязан знать, за счет чего достигается такое огромное увеличение скорости поиска. Достаточно отметить поле как индексированное, а система Access 2002 позаботится обо всем остальном. Хочу предостеречь вас от типичной ошибки начинающего разработчика – создания индексов по всем полям таблицы для достижения максимальной скорости поиска в сложных запросах. Во-первых, в этом просто нет необходимости, а во-вторых – возникнет серьезная задержка при добавлении записей в таблицу, так как системе придется перестраивать большое число индексов одновременно. Простой первичный ключ – это индекс, созданный по ключевому полю таблицы. Составной первичный ключ – это индекс, созданный по ключевой связке полей таблицы. О том, как выбрать ключевое поле или назначить ключевую связку полей для таблицы, рассказано в подразделе «Вторая нормальная форма» главы 2. Первичный ключ у любой таблицы может быть только один. Этого требует теория нормализации. Кроме первичного ключа таблица может иметь любое количество обычных индексов. Среди них могут быть и уникальные, не допускающие повторяющихся значений. Их принято называть индексы-кандидаты на роль первичного ключа. В нашем примере 23
такой индекс есть. Загляните в таблицу Flat (рис. 2.4) и обратите внимание на поле Account (номер лицевого счета квартиросъемщика). Это поле однозначно определяет положение любой квартиры в таблице. Создание обычного индекса по полю таблицы. Порядок создания как простого индекса, так и уникального (индекса-кандидата) – один и тот же. Создадим индекс по полю Account таблицы Flat. 1. Откройте таблицу Flat в режиме конструктора (рис. 3.8). Для этого в окне базы данных Real Estate выделите таблицу Flat и щелкните мышью по кнопке «Конструктор» на панели инструментов окна базы данных. Она расположена рядом с пиктограммой . 2. Выделите поле Account, нажав на кнопку выделения поля в левой части бланка структуры таблицы . 3. Сделайте активным свойство «Индексированное поле», щелкнув или нажав клавишу (рис. 3.8). по кнопке 4. Поле Account не может содержать повторяющиеся данные, поэтому в списке необходимо выбрать значение «Да (Совпадения не допускаются)». 5. Перейдите в режим базы данных. Для этого закройте окно конструктора таблиц. Появится диалоговое окно, сообщающее о том, что структура таблицы была изменена. Подтвердите сохранение.
Рис. 3.8. Создание индекса по полю Account 24
Создание простого первичного ключа. Создадим простой первичный ключ для таблицы Street (улицы). Ключевое поле, однозначно определяющее положение любой улицы в таблице улиц, также носит название Street (рис. 2.1). 1. Откройте таблицу Street в режиме конструктора. Для этого в окне базы данных Real Estate выделите таблицу Street и щелкните мышью по кнопке «Конструктор» на панели инструментов окна базы данных. Она расположена рядом с пиктограммой . 2. Выделите поле Street, нажав на кнопку выделения поля в левой части бланка структуры таблицы . Строчка, относящаяся к этому полю, будет выделена черным цветом (рис. 3.9).
Рис. 3.9. Выделение поля таблицы
3. Сделайте щелчок мышью по пиктограмме создания ключевого поля на панели инструментов главного окна Access 2002. Такой же ключ появится возле поля Street (рис. 3.10).
Рис. 3.10. Простой первичный ключ создан
4. Перейдите в режим базы данных. Для этого закройте окно конструктора таблиц. Появится диалоговое окно, сообщающее нам о том, что структура таблицы была изменена. Подтвердите сохранение (рис. 3.11). Создание составного первичного ключа. Создадим составной первичный ключ для таблицы Flat (квартиры). Ранее ключевая связка полей для этой таблицы была определена нами так: Рис. 3.11. Подтвержденомер улицы плюс номер дома плюс номер кварние сохранения тиры. 1. Откройте таблицу Flat в режиме конструктора. Для этого в окне базы данных Real Estate выделите таблицу Flat и щелкните мышью по 25
кнопке «Конструктор» на панели инструментов окна базы данных. Она расположена рядом с пиктограммой . 2. Выделите поле Street, нажав на кнопку выделения поля в левой части бланка структуры таблицы . Строчка, относящаяся к этому полю, будет выделена черным цветом. Нажмите клавишу и, удерживая ее, щелкните последовательно кнопки выделения напротив полей House и Flat. Черных строчек станет три (рис. 3.12).
Рис. 3.12. Выделение связки полей таблицы
3. Сделайте щелчок мышью по пиктограмме создания ключевого поля на панели инструментов главного окна Access 2002. Стилизованное изображение ключа появится напротив всех трех выбранных полей. Имейте в виду: ключиков три, а первичный ключ таблицы – один – составной. Вы помните, что ранее по полю Account таблицы Flat мы уже создали обычный индекс. Давайте посмотрим, что получилось с индексированием нашей таблицы (рис. 3.13). Сделайте щелчок по пиктограмме индексов. Откроется окно «Индексы: flat». Смотрите. Комментарии излишни!
Рис. 3.13. Информация об индексах таблицы
4. Закройте окна индексов и конструктора таблицы и подтвердите сохранение сделанных изменений. 26
3.4. Контроль правильности ввода данных Информация, накапливаемая в базе данных, должна обладать абсолютной достоверностью. Несоблюдение этого правила может порой привести к печальным последствиям. Например, отдел комплектации не сделает вовремя заказ на поставку необходимых материалов, владелец квартиры получит квитанцию для оплаты налога на автотранспорт, которого у него никогда не было, а пенсионеру будет отказано в выдаче страхового полиса и т.д. и т.п. Даже самые опытные пользователи, заполняющие таблицы, могут допустить ошибку и занести неверные данные, что, скорее всего, и произошло в перечисленных выше случаях. Разработчик программного комплекса просто обязан помочь пользователю избежать большинства ошибок при вводе информации. Ниже приведены две возможности, которые любезно предоставили в наше распоряжение авторы Microsoft Access 2002. Добавление условия на значение поля позволяет проверить корректность данных только в одном поле, независимо от значений других полей. Рассмотрим пример, в котором на номер района наложено ограничение. Этот номер не может находиться вне диапазона от 1 до 9, даже если пользователь этого очень захочет (рис. 3.14).
Рис. 3.14. Свойства поля District (номер района города)
Чтобы добавить условие на значение поля таблицы District (районы): 1. Откройте таблицу District в режиме конструктора. Для этого в окне базы данных Real Estate выделите таблицу District и щелкните мышью по кнопке «Конструктор» на панели инструментов окна базы данных. Она расположена рядом с пиктограммой . 2. Поместите текстовый курсор в поле «Условие на значение». 27
3. Наберите на клавиатуре >=1 And <10 и нажмите клавишу <Enter>. Курсор переместится в поле «Сообщение об ошибке». 4. Введите текст сообщения. Номер района должен быть в пределах от 1 до 9 включительно. Если текст не поместится в поле целиком, то система прокрутит его влево. Для перехода в начало текста сообщения нажмите клавишу <Номе>. 5. Закройте окно конструктора таблицы и подтвердите сохранение сделанных изменений. При попытке ввода номера района, который не находится в пределах диапазона 1–9, получим сообщение об ошибке и отказ программного комплекса от записи в таблицу сделанных изменений (рис. 3.15).
Рис. 3.15. Сообщение при ошибочных действиях оператора ЭВМ
Добавление условия на значение записи. Позволяет сравнить значения нескольких полей сразу. Рассмотрим пример, в котором производится проверка соответствия общей площади квартиры сумме составляющих: жилой, вспомогательной и приведенной площади балкона. Для того, чтобы добавить условие на значение записи: 1. Откройте таблицу Flat в режиме конструктора. Для этого в окне базы данных Real Estate выделите таблицу Flat и щелкните мышью по кнопке «Конструктор» на панели инструментов окна базы данных. Она расположена рядом с пиктограммой . 2. Щелкните левой кнопкой мыши по пиктограмме «Свойства» . Она находится на панели инструментов главного окна Microsoft Access. Появится диалоговое окно «Свойства таблицы» (рис. 3.16). Это же окно можно активизировать щелчком правой кнопки мыши в любом месте окна конструктора таблицы и выбором последнего пункта «Свойства таблицы» в появившемся меню. 3. Введите в поле «Описание» краткое назначение выполняемой проверки: «Проверка общей площади квартиры».
28
4. Переместите курсор в поле «Условие на значение». Появится кнопка в его правой части. Нажмите ее.
Рис. 3.16. Диалоговое окно «Свойства таблицы»
5. Появится диалоговое окно «Построитель выражений». В нем без труда вы найдете список всех полей таблицы Flat. Выполните двойной щелчок левой кнопкой мыши по элементу SquareFlat. В окне создаваемого выражения появится [SquareFlat] (рис. 3.17). 6. Введите с клавиатуры знак равенства и выполните двойной щелчок по элементу Dwell, чтобы добавить его в выражение. Аналогичные действия по отношению к элементам Branch и Balcony приведут вас к окончательному виду: [SquareFlat]=[Dwell]+[Branch]+[Balcony]. 7. Закройте окно «Построитель выражений», выбрав кнопку «Ок». 8. Поместите текстовый курсор в поле «Сообщение об ошибке» диалогового окна «Свойства таблицы» (рис. 3.16). Введите текст, который будет появляться всякий раз при нарушении условия равенства площадей: «Общая площадь квартиры не равна сумме составляющих». Закройте окно «Свойства таблицы».
Рис. 3.17. Построитель выражений 29
10. В случае появления этой ошибки при работе программного комплекса появится одно из сообщений об ошибке (рис. 3.18).
Рис. 3.18. Сообщения об ошибке
3.5. Создание связей между таблицами Подведем итоги. База данных имеется. Таблицы доведены до третьей нормальной формы и помещены в базу. Первичный ключ есть у каждой таблицы. Индексы созданы. Типы связей между таблицами определены. Настало время создания связей между таблицами непосредственно в базе данных. Связи между таблицами назначают и просматривают в специальном окне «Схема данных». Определим связь между таблицами District (районы) и Building (здания). Это связь «один ко многим». В одном районе города расположено несколько зданий. 1. Сделайте активным окно базы данных Real Estate (рис. 3.19).
Рис. 3.19. Окно базы данных Real Estate 30
2. Выполните щелчок правой кнопкой мыши в любом свободном месте этого окна. Появится меню (рис. 3.19). Выберите пункт «Схема данных». Добраться до схемы данных можно и по-другому. Щелкните левой кнопкой мыши по пиктограмме главного окна Microsoft AcРис. 3.20. Схема данных cess. Появится окно (рис. 3.20). 3. Выполните щелчок правой кнопкой мыши в любом месте окна «Схема данных». В появившемся меню выберите первый пункт «Добавить таблицу» (рис. 3.21). 4. Появится диалоговое окно «Добавление таблицы». Раскройте вкладку «Таблицы». В списке таблиц выберите District (районы) и Рис. 3.21. Список таблиц нажмите кнопку «Добавить». Нажмите кнопку «Закрыть». Таблица District появится в окне «Схема данных» (рис. 3.22). Выполните аналогичные действия с таблицей Building (Здания).
Один ко многим
Рис. 3.22. Создание связей между таблицами 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
Рис. 3.23. Схема данных
Рис. 3.24. Создание связи между таблицами Flat и Owners
Рис. 3.25. Окончательный вид связи между таблицами Flat и Owners
Поместите указатель мыши над выделенной группой из трех полей таблицы Flat, нажмите левую кнопку мыши и, не отпуская ее, «перетащите» появившийся значок связки полей в любое место таблицы Owners. Отпустите левую кнопку мыши. Появится диалоговое окно «Изменение связей» ( рис. 3.24). В отличие от связывания таблицы, имеющей простой первичный ключ (рис. 3.22), где связь District–District была установлена автоматически, в данном случае необходимо явно указать, какие связки полей из таблиц Flat и Owners участвуют при создании связи между этими таблицами. Используя поле с раскрывающимся списком, установите нужные вам связи. Поставьте флажки во всех трех полях, обеспечивающих ссылочную целостность. Каскадное удаленние связанных записей здесь вполне уместно. В последнее время часто две соседние квартиры приобретает одна семья. Без третьего флажка (рис. 3.25) удалить данные по квартире и одновременно по проживающим нельзя. Поставьте его. Этим Вы значительно облегчите жизнь пользователю Вашей программы. Окончательный вид связи между таблицами Flat и Owners будет таким (рис. 3.25). 33
3.6. Устранение проблем, возникающих при создании ключей Вы создали свою первую таблицу, и вам, конечно же, не терпится занести в нее данные, тем более что Access без труда позволяет это сделать. Не торопитесь! Завершите создание базы данных, назначьте первичные ключи и установите связи между таблицами. Нарушение этого порядка может доставить вам массу неприятностей. Вот одна из них. В таблицу Flat (квартиры) занесена 16291 запись. Первичный ключ у этой таблицы, конечно же, не создан. Начальство торопит с выполнением проекта, да к тому же выделило работника для занесения информации. Вот вам – результат! Информация обо всех квартирах занесена, вы пытаетесь создать первичный ключ у этой таблицы, а в ней есть повторяющиеся записи. Наборщик Рис. 3.26. Сообщение об ошибке из-за повторяющихся значений в занес одну или несколько квартир более индексе одного раза. Не удивительно, ведь Ваш программный комплекс его никак не контролировал. Не отчаивайтесь, а сделайте следующее. 1. В окне базы данных Real Estate выберите значок «Запросы». Он находится в списке «Объекты». Нажмите кнопку «Создать» на панели инструментов окна базы данных. Появится окно «Новый запрос» (3.27). Выберите пункт «Повторяющиеся записи» и нажмите кнопку «Ок». 2. Появится список таблиц базы данных. Выберите в нем таблицу Рис. 3.27. Создание нового запроса Flat и нажмите кнопку «Далее». 3. В появившемся диалоговом окне «Поиск повторяющихся записей» занесите в окно «Поля с повторами» три поля: Street, House, Flat, используя кнопку (рис. 3.28).
Рис. 3.28. Выбор полей 34
4. Нажмите кнопку «Готово» и результат перед вами (рис. 3.29).
Рис. 3.29. Повторяющиеся записи в таблице Flat (пять квартир из 16291 занесены дважды)
Осталось удалить из таблицы Flat пять квартир, которые занесены по два раза. Для этого вернитесь в окно базы данных Real Estate, удалите запрос, который называется «Поиск повторений для Flat», и начните все с самого начала. Как ни странно – это самый быстрый путь к цели. Выполните пункты с первого по четвертый, а в пятом пункте вместо кнопки «Готово» – нажмите кнопку «Далее». Вам будет дана возможность выбрать дополнительные поля, которые будут отображены вместе с повторяющимися значениями. Советую Вам выбрать все поля, нажав кнопку . После этого нажмите кнопку «Готово» и на экране появятся все записи, которые дублируют друг друга по составному ключу (рис. 3.30).
Рис. 3.30. Расшифровка повторяющихся записей в таблице Flat
На рис. 3.30 хорошо видны ошибки, которые сделал наборщик информации. Посмотрите на первые две строчки. Квартира номер 1, находящаяся в доме 48, расположенном на улице с ссылочным номером 45, один раз занесена как двухкомнатная с площадью 42,4 м2, а во второй раз – как однокомнатная с площадью 30,4 м2. Очевидно, что одну из этих квартир следует удалить. Разберитесь – какую именно и выделите ее, нажав на кнопку выделения строки таблицы в левой части бланка . Вся строка после этого будет выделена черным цветом. Щелкните по 35
пиктограмме удаления записи, расположенной в главном окне Access. Правильно ответьте на запрос системы (рис. 3.31). Удалить запись можно и другим способом. Выделите ее, как было описано выше. Сделайте щелчок левой кнопкой мыши по пункту главного меню Microsoft Access «Правка». В раскрывшемся меню выберите пункт «Удалить запись».
Рис. 3.31. Запрос на подтверждение удаления записи
3.7. Устранение связи «многие ко многим» В качестве примера рассмотрим функционирование фирмы «Столица» (часть варианта 8). Особенностью работы этой фирмы является посредническая деятельность - стыковка поставщиков товаров и покупателей. Один поставщик связан с несколькими покупателями. Один покупатель, в свою очередь, связан с несколькими поставщиками. По понятным причинам поставщик «не знает» покупателя и наоборот. Вот Вам предпосылка создания связи «многие ко многим» между двумя таблицами: поставщики и покупатели (рис. 3.32). Поставщики ИНН поставщика
Название поставщика
Штрихкод
Название товара
Дата выпуска
Цена за 1 ед.
К-во
252206156 772654321 772654321 772654321 278765433
«Океан-2» «Октябрь» «Октябрь» «Октябрь» «Амур пиво»
46052461 78690543 78695544 78694455 46052462
Печенье Печенье Шоколад Конфеты Печенье
01.06.04 12.07.04 15.05.04 14.06.04 14.07.04
95-00 123-50 43-00 105-00 97-00
200 450 500 350 600
∞
∞
Покупатели ИНН покупателя 276546373 276546373 273894756
Название покупателя «Татьяна» «Татьяна» «Светлый-3»
Название товара Печенье Печенье Печенье
Дата покупки 18.07.04 18.07.04 21.07.04
Цена за 1 ед. 105-00 140-00 110-00
Рис. 3.32. Пример связи «многие ко многим» 36
К-во 100 150 50
Штрихкод 46052462 78690543 46052461
Как мы уже знаем, реляционная модель не позволяет непосредственно реализовать связь типа «многие ко многим». Кроме этого, штрих-код товара (рис.3.33), являясь его однозначной идентификацией, не может быть назначен в качестве первичного ключа. В случае если через какое-то время будет закуплена еще одна партия такого же товаРис.3.33 Штрих-код ра, то в таблице «поставщики» появится строчка, имеющая идентичный штрих-код. Аналогичная ситуация возможна и с покупателем, который приобретет такой же товар из другой партии. И еще одна проблема: один клиент практически никогда не покупает всю партию целиком и перед фирмой встает проблема учета остатка товара. Все эти проблемы (реляционной модели и алгоритма) легко решаются добавлением двух промежуточных таблиц: «Поставленные товары» и «Проданные товары». На рис. 3.34 показан фрагмент схемы данных превращения «связи многие ко многим» в несколько связей «один ко многим» с добавлением этих промежуточных таблиц.
Рис. 3.34. Работающий фрагмент схемы данных 37
Преобразование связи «многие ко многим» в несколько связей «один ко многим» и «много к одному» можно сделать следующим образом. Вместо того чтобы рассматривать множество поставщиков, поставляющих товары многим клиентам, будем рассматривать одного поставщика и множество поставляемых им товаров («один ко многим»). Далее будем рассматривать деление товара одной партии на множество частей, подлежащих продаже («один ко многим»). В результете получим множество товаров, приобретаемым одним покупателем («много к одному»). Появление таблицы «проданные товары» позволяет решить внутреннюю проблему учета остатков товара в фирме «Столица». Особенностью реализации предложенной схемы является наличие составного первичного ключа в таблице «Поставленные товары» по связке полей «штрих-код товара» плюс «номер партии» (GoodsID + NumberPart). 4. СОЗДАНИЕ ФОРМ ДЛЯ ВВОДА И РЕДАКТИРОВАНИЯ ДАННЫХ Microsoft Access 2002 дает нам возможность ввода и редактирования данных непосредственно в режиме таблицы. Однако для конечного пользователя программного комплекса этого явно недостаточно – из-за его низкой квалификации. Пользователь должен работать с законченным программным продуктом. Его не интересует ни реляционная модель, ни то, что информация хранится в таблицах, и что существуют первичные ключи и триггеры. Он желает знать только одно: щелчком по какой кнопке он добьется желаемого результата. Так предоставим же ему эту возможность. 4.1. Создание простой формы в режиме конструктора В этом подразделе мы создадим форму, размещая в ней элементы различных типов в режиме конструктора. Microsoft Access имеет в своем арсенале еще одно средство для создания формы за несколько минут – Мастер форм. Однако позволю себе порекомендовать вам не работать с ним. Это инструмент для дилетантов. Времени потратите немного, но и хорошего результата не получите! Перед Вами самый распространенный вид формы (рис. 4.1), созданной в Microsoft Access. В данном случае она используется для отображения информации о зданиях (Building) и связана с одноименной таблицей. В любой момент времени в этой форме расположено описание только одного из 195 зданий. Линейка прокрутки, размещенная в нижней части формы, дает возможность отобразить в форме любую запись из таблицы. В центре линейки прокрутки находится номер записи. На рис. 4.1 – это запись номер 1. 38
Рис. 4.1. Наша первая форма, созданная в режиме конструктора
Откроем форму в конструкторе. Для этого в окне базы данных Real Estate выберите вкладку «Формы». Файл Real Estate.mdb находится на компакт-диске, прилагаемом к этому учебному пособию. Компакт-диск можно также взять на кафедре. Щелкните левой кнопкой мыши по форме Building, а затем по пиктограмме «Конструктор» (рис. 4.2).
Рис. 4.2. Окно конструктора форм
39
На экране дисплея появится три окна. Первое с названием «Building: форма» – сам конструктор. Второе – с полями одноименной таблицы (см. табл. 2.7) и третье – панель элементов, которая содержит ряд кнопок, предназначенных для размещения в форме элементов. Функции этих кнопок будут рассмотрены в следующих разделах. 4.1.1. Создание заготовки для формы Теперь, когда мы в общих чертах знаем c чем придется иметь дело, предлагаю Вам начать конструирование с самого начала, останавливаясь подробно на каждом элементе создаваемой формы. Сделайте активным окно базы данных. Выберите вкладку «Формы». Так как в данный момент мы не создали еще ни одной формы, то вы увидите в окне списка форм только два приглашения: «Создание формы в режиме конструктора» и «Создание формы с помощью мастера» (см. рис. 4.4). Если вы выбрали первое предложение, то в дальнейшем у вас возникнут затруднения с привязкой таблицы к создаваемой форме. Работу же с «Мастером» мы не рассматриваем вообще. Поэтому проигнорируйте оба этих приглашения и сделайте щелчок левой кнопкой мыши по пиктограмме «Создать». Появится диалоговое окно «Новая форма» (рис. 4.3). Выберите пункт «Конструктор» в верхнем окне и таблицу Building в поле с раскрывающимся списком. В завершение этого этапа нажмите кнопку «Ок». На рис. 4.4 приведен вид окна Microsoft Access 2002 Рис. 4.3. Создание новой формы целиком. Хорошо видна заготовка новой формы (пока ее название – Форма1), окно базы данных Real Estate, окно полей таблицы building и панель элементов, на которой уже выбран элемент: поле со списком. Система готова к построению формы! Каждому полю таблицы Building в форме, которую мы позже назовем так же – Building, соответствует определенный элемент. Начнем с первого поля: Street. 40
Рис. 4.4. Заготовка новой формы в конструкторе форм
4.1.2. Создание поля со списком Улицу, на которой расположено здание, пользователь должен выбрать из списка улиц города, а не вносить с клавиатуры её название. В Access очень грамотно реализован выбор значения из очень длинных списков. Вы можете ввести один или несколько символов названия элемента списка (в данном случае улицы) – Access сам найдет в списке нужный элемент по первым символам и занесет его в текстовое поле. Поэкспериментируйте с формой Building из файла Real Estate.mdb и уверен, вам очень понравится такая реализация выбора. А сейчас – непосредственно построение. 1. Убедитесь, что на панели элементов кнопка с подсказкой «Мастер» нажата. Если нет – «утопите» ее щелчком левой кнопки мыши. В противном случае Вы очень долго будете обвинять во всех грехах свой безупречно работающий компьютер. Построитель этого элемента так и не запустится. 2. Нажмите на панели элементов кнопку «Поле со списком». Поместите указатель мыши над активной областью формы. Он превратится в значок поля со списком , снабженный крестиком в левом верхнем углу. Прицельтесь получше и сделайте щелчок левой кнопкой мыши. Увидите следующую картину (рис. 4.5). 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 предоставляет пользователю массу возможностей для форматирования. Во-первых, щелкните правой кнопкой мыши по надписи «Адрес» и выберите в раскрывшемся меню пункт «Размер», а в появившемся подменю пункт – «По размеру данных». Во-вторых, переместите поле со списком и его метку в нужное место на форме. Для этого поместите указатель мыши в любую точку на границе выделенного элемента, отличную от маркеров изменения размеров. Нажмите левую кнопку мыши и, не отпуская ее, «перетащите» элемент на новое место. Более точно «выставить» элемент управления и его метку на форме можно при помощи клавиш клавиатуры с изображением стрелок при нажатой клавише . 4.1.3. Создание текстовых полей Создадим текстовое поле для отображения номера дома (рис. 4.10). Это однострочное текстовое поле, присоединенное к полю House таблицы Building. Порядок действий следующий. 1. Если на экране дисплея отсутствует окно списка полей таблицы Building, выберите в главном меню Microsoft Access пункт «Вид», а в раскрывшемся подменю пункт – «Список полей». 2. В списке полей выделите поле House. Нажмите левую кнопку мыши и «перетащите» выделенный элемент на форму. В активной области формы указатель мыши превратится в символ текстового поля, но без маленького крестика, как это было при создании поля со списком. Расположение символа поля указывает верхний левый угол самого текстового поля, а не на его метки. Если подведете курсор слишком близко к левому краю формы, то можете потерять метку текстового поля. На экране ее не будет видно, хотя среди элементов формы она будет присутствовать. 3. «Перетащите» текстовое поле за маркер перемещения к метке и уменьшите ширину текстового поля. У вас есть возможность изменить размеры как элемента, так и метки при помощи клавиатуры. Выделите нужный объект и клавишами клавиатуры с изображением стрелок при Рис. 4.10. Текстовое поле нажатой клавише <Shift> добейтесь необходимых результатов. При помощи клавиатуры такие действия выполняются гораздо точнее, чем при использовании мыши. В качестве метки Access применяет название перетаскиваемого поля таблицы. Название метки можно изменить, причем несколькими спо43
собами. Проще всего щелкнуть по выделенной метке левой кнопкой мыши. Указатель мыши превратится в текстовый курсор. Далее используйте клавиатуру для ввода надписи. Настала очередь создания поля «Примечания» (см. рис. 4.1). Это поле ввода с линейкой прокрутки. Применяется для включения в форму длинных текстовых полей. 1. Если на экране дисплея отсутствует окно списка полей таблицы Building, выберите в главном меню Microsoft Access пункт «Вид», а в раскрывшемся подменю – пункт «Список полей». 2. В списке полей выделите поле Comment (рис. 4.11). Нажмите левую кнопку мыши и «перетащите» выделенный элемент на форму. В активной области формы указатель мыши превратиться в символ текстового поля. Отпустите левую кнопку мыши. 3. Удалите метку поля и измените размеры текстового поля до требуемых. 4. Сделайте щелчок правой кнопкой мыши по созданному полю. Выберите в открывшемся меню пункт «Свойства».
Рис. 4.11. Создание поля ввода с линейкой прокрутки
5. В появившемся диалоговом окне с заголовком «Поле: Comment» выберите вкладку «Макет». Найдите в списке этой вкладки свойство «Полосы прокрутки». Раскройте список свойств и «По вертикали». Внимание! Вертикальная полоса прокрутки такого поля ввода отображается только тогда, когда поле получает фокус. 4.1.4. Создание поля типа «Флажок» Если в таблице находится поле логического типа, принимающее значение только «да» или «нет», то использование флажка сделает форму более выразительной и удобной. В нашем случае речь пойдет о поле Elevator (лифт). Выделите в списке полей таблицы это поле и «перетащите» на форму. Остается изменить название метки. Щелкните по ней левой кнопкой мыши. Указатель превратится в текстовый курсор. Ис44
пользуйте клавиатуру для ввода надписи. Этого же результата можно добиться и другим способом. Сделайте щелчок правой кнопкой мыши по созданной метке. Выберите в открывшемся меню пункт «Свойства». В появившемся диалоговом окне выберите вкладку «Макет». Найдите в списке этой вкладки свойство «Подпись». Введите текст, который хотите увидеть рядом с флажком – «Лифт» (рис. 4.12).
Рис. 4.12. Поле типа «флажок» создано
4.1.5. Создание поля типа «Группа переключателей» В таблице Building (здания) имеется поле Kind – вид собственности. Собственность может быть только трех типов: муниципальная, краевая и федеральная. Тип этого поля – числовой. В качестве значений могут выступать только числа от 1 до 3. Конечно, можно было создать еще одну таблицу, назначить ключевое поле, установить отношение один ко многим с таблицей Building по этому ключу, а для отображения в форме использовать поле со списком. К счастью, Microsoft Access предлагает нам более легкий, а с позиции интерфейса и более красивый путь решения задачи такого типа, когда значений поля немного, и их количество в процессе эксплуатации программного комплекса меняться не будет. Порядок создания группы переключателей следующий. с подсказкой «Мас1. Убедитесь, что на панели элементов кнопка тера» нажата. Если нет – «утопите» ее щелчком левой кнопки мыши. Нам понадобится работа построителя. 2. На этой же панели выберите пиктограмму «Группа переключателей». Типичная ошибка начинающих – выбор пиктограммы «Переключатель». Помните! Набором переключателей в Microsoft Access группу переключателей сделать нельзя. 45
3. Поместите указатель мыши над активной областью формы. Он превратиться в значок группы переключателей с крестиком в левом верхнем углу. Нажмите левую кнопку мыши и, удерживая ее в нажатом состоянии, переместите курсор по диагонали так, чтобы получилась рамка требуемого размера. Отпустите левую кнопку мыши. Автоматически запустится построитель группы переключателей. 4. Сделайте подписи у переключателей (рис. 4.13) и нажмите кнопку «Далее». Теперь назначим переключатель, используемый по умолчанию. Большинство зданий города находится в муниципальной собственности. Предоставим возможность пользователю не щелкать мышью по этому элементу при занесении муниципального здания. Он наверняка будет нам за это благодарен (рис. 4.14).
Рис. 4.13. Шаг 1
Рис. 4.14. Шаг 2
5. Третий шаг построителя посвящен привязке подписи к значению. Если ничего не менять, то цифра один будет соответствовать муниципальной собственности, два – краевой, а три – федеральной. 6. На четвертом шаге (рис. 4.15) необходимо указать поле таблицы Building, в которое будет занесена выбранная цифра. Сделайте щелчок мышью по второй кнопке и не ошибитесь с выбором. Это поле Kind (вид собственности). 46
Рис. 4.15. Шаг 4
7. Пятый шаг построителя (рис. 4.16) – оформление внешнего вида группы переключателей. Здесь нам предоставляется возможность увидеть, что будет в форме, если мы сделаем тот или иной выбор. Смелее выбирайте тип оформления и смотрите на левую часть окна (образец).
Рис. 4.16. Шаг 5
8. На последнем шаге необходимо ввести подпись для созданной группы переключателей. Если подпись в таком виде не нужна, то введите пустое значение, а в форму в нужном месте поместите элемент «надпись» с заголовком «Собственность». 4.1.6. Отображение фотографий в форме Все современные настольные СУБД дают нам возможность отображать фотографии, содержащиеся в таблицах баз данных. В Microsoft Access как фотографии, так и другие объекты OLE, отображаются в присоединенной рамке объекта. Этот элемент управления представляет собой контейнер OLE, в котором могут отображаться растровые и векторные изображения, звуковые объекты, рисунки с анимацией, видеообъекты и т.п.
47
Добавим присоединенную рамку объекта в нашу первую форму (см. рис. 4.1). Напомню, что для хранения фотографий зданий мы предусмотрели поле Picture (поле OLE) в таблице Building. «Присоединенная 1. Выберите на панели элементов пиктограмму рамка объекта». Не перепутайте ее с очень похожей на нее свободной рамкой объекта . 2. Поместите указатель мыши над активной областью формы. Он превратится в значок присоединенной рамки объекта с крестиком в левом верхнем углу. Нажмите левую кнопку мыши и, удерживая ее в нажатом состоянии, переместите курсор по диагонали так, чтобы получилась рамка требуемого размера. Отпустите левую кнопку мыши. 3. Удалите подпись возле этого элемента управления, которую сгенерировал компьютер: «Присоединенный OLE» (рис. 4.17). Нет никакого смысла переименовывать ее во что-то типа «Фотография» или нечто подобное. И без нее все предельно ясно.
Рис. 4.17. Размещение фотографии здания в форме
4. Сделайте щелчок правой кнопкой мыши по только что созданному объекту и в появившемся меню выберите пункт «Свойства». Настала очередь привязать к объекту поле таблицы. Выберите вторую вкладку «Данные». 5. Последний этап – масштабирование. В Microsoft Access существует три способа масштабирования графических объектов внутри присоединенной рамки объекта. Для этого предназначено свойство «Установка размеров» (рис. 4.18). Его легко найти на первой вкладке окна свойств с названием «Макет». Если в качестве значения этого свойства выбрать «Фрагмент», то фотография будет отображена в ее исходной пропорции. Если фото не помещается в рамку целиком, то оно урезается снизу и справа. 48
Фрагмент
Вписать в рамку
По размеру рамки
Рис. 4.18. Варианты свойства «Установка размеров»
Второй способ – «вписать в рамку». Фотография будет «втиснута» в очерченное ранее пространство. Масштаб по высоте и ширине фотографии будет установлен отдельно, чтобы заполнить рамку полностью. Третий способ – «по размеру рамки». Масштаб фотографии будет увеличен или уменьшен по ширине и по высоте так, чтобы фото целиком поместилось в рамку, и при этом его исходная пропорция сохранилась бы. Наша первая форма создана. Позже мы разместим в ней еще один элемент – кнопку «Квартиры» для вызова другой формы (Flats), а сейчас попробуем добавить запись в таблицу Building, соответствующую еще одному зданию с помощью нашей формы. Сделайте активным окно базы данных Real Estate. В окне объектов выберите вкладку «Формы». Запустите форму на выполнение, сделав двойной щелчок мышью по ее названию (Building). Появится информа-
49
ция о первом здании (см. рис. 4.1). Найдите на линейке записей пиктограмму «Добавление новой записи». Теперь можно заносить информацию об очередном здании. Займемся его фотографией. Сделайте щелчок правой кнопкой мыши по месту, где она должна располагаться в форме, и в появившемся меню выберите пункт «Добавить объект». Появится диалоговое окно «Вставка объекта».
Рис.4.19. Вставка объекта
В разделе «Тип объекта» необходимо указать: «Точечный рисунок», так как все наши фотографии отсканированы в формате BMP, а в разделе «Происхождение» – выбрать пункт «Создать из файла». После этого с помощью диалогового окна «Обзор» укажите файл, в котором хранится фотография здания, и нажмите кнопку «ОК». Не устанавливайте флажок «Связь». Мы не будем редактировать эту фотографию с помощью какого-либо графического редактора. Связь таблицы с файлом и автоматическое обновление изображения нас не интересуют. 4.2. Создание сложной формы Наша первая форма Building дает возможность работать с таблицей зданий. С ее помощью мы можем комфортно добавлять, удалять и корректировать информацию, относящуюся к какому-либо зданию. Настала пора добиться такой же комфортности при работе с квартирами, расположенными в здании, и с проживающими в них собственниками. В принципе вы могли бы создать еще три формы для раздельного отображения информации по квартирам, лицевым счетам и по проживающим в этих квартирах собственникам, но ввиду небольшого количества полей, содержащихся в таблицах Flat, Owners и Account, есть смысл разместить всю эту информацию в одной сложной форме. Дадим ей имя Flats (квартиры).
50
Первая проблема, которую необходимо решить на пути к цели, заключается в следующем. В нашей форме должна отображаться информация не обо всех квартирах в городе, а только о тех, которые расположены в выбранном для просмотра здании. Поэтому форма Flats будет связана не с таблицей Flat, а с запросом Flats, в который мы поместим данные о квартирах, находящихся в одном конкретном здании, и лицевых счетах ответственных квартиросъемщиков. Порядок его создания следующий. 1. В окне базы данных Real Estate выберите значок «Запросы». Он находится в списке «Объекты». Нажмите кнопку «Создать» на панели инструментов окна базы данных. Появится окно «Новый запрос» (рис. 4.20). 2. Выберите пункт «Конструктор» и нажмите кнопку «ОК». 3. Появится список таблиц баРис. 4.20. Создание нового запроса зы данных. Выберите в нем сначала таблицу Flat и нажмите кнопку «Добавить», а затем таблицу Account. Появится окно «Запрос на выборку». 4. Расположите последовательно все поля из таблиц Flat и Account в запросе, как это показано на рис. 4.21. Не пропустите ни одного, иначе Вас ждут неприятности при занесении новых записей по квартирам. Поле Account (номер лицевого счета), связывающее эти таблицы, заносится только один раз.
Рис. 4.21. Окно конструктора запросов 51
5. Определите условия отбора записей из таблиц Flat и Account в запрос (рис. 4.22). Он должен содержать данные только по одному конкретному зданию.
Рис. 4.22. Определение условий отбора записей из исходных таблиц и сортировка
Условия отбора записей по полям Street и House: [Forms]![Building]![Street] и [Forms]![Building]![House] можно перевести так. В запрос должны попасть только те квартиры, которые находятся в здании с номером улицы, отображенном в форме Building в объекте Street (адрес) и с номером дома, отображенном в форме Building в объекте House (номер дома). Для полной ясности посмотрите на рис. 4.2. 6. Установите порядок сортировки записей, попавших в запрос. Лучше всего, если квартиры в нашей форме будут отображаться в порядке возрастания номеров. Это поле Flat. 7. Сохраните созданный запрос под именем Flats. Текст запроса на языке SQL, сгенерированный конструктором запросов, выглядит так. SELECT flat.STREET, flat.HOUSE, flat.FLAT, flat.STOREY, flat.ROOMS, flat.SQUAREFLAT, flat.DWELL, flat.BRANCH, flat.BALCONY, flat.HEIGHT, account.ACCOUNT, account.FAMILY, account.NAME, account.SECOND FROM account INNER JOIN flat ON account.ACCOUNT = flat.ACCOUNT WHERE (((flat.STREET)=[Forms]![Building]![Street]) AND ((flat.HOUSE)=[Forms]![Building]![House])) ORDER BY flat.FLAT;
Обратите внимание на сложность текста запроса и на то, с какой легкостью мы сформировали его с помощью конструктора запросов, не зная ни одной конструкции и ни одного служебного слова языка SQL. Пользователю Access вовсе необязательно знать этот язык. Вторая проблема, которая может привести в замешательство начинающего разработчика, возникнет при занесении данных по новой квартире. Дело в том, что в нашей второй форме Flats не отображаются данные адреса, и если компьютеру не указать адрес квартиры, то в таблицу Flat будет добавлена запись с техническими характеристиками квартиры и с пустым адресом. Понятно, что для конечного пользователя
52
такая квартира будет навсегда потеряна, так как не будет отображаться в форме при повторном запуске на выполнение. Чтобы избежать этой ошибки необходимо добавить в событие «До вставки» формы Flats процедуру, написанную на языке Visual Basic для приложений (VBA). Если вы хотите написать хорошее приложение на Access, то знание основ VBA Вам просто необходимо. Private Sub Form_BeforeInsert(Cancel As Integer) Me!STREET = [Forms]![Building]![STREET] Me!HOUSE = [Forms]![Building]![HOUSE] End Sub
Первую и последнюю строчку этой процедуры Access сгенерирует сам. Вторая и третья строчки – на совести разработчика. Для ссылки на активную форму используется ключевое слово Me (рис. 4.23). После имени формы добавляют название элемента, разделив их восклицательным знаком. Теперь квартира, вновь заносимая в базу, получит адрес (Street+House) и будет появляться в форме в нужном месте и в нужное время.
Рис. 4.23. Текст процедуры обработки события «До вставки»
Третья проблема – создание подчиненной формы. Подчиненная форма – это форма, находящаяся внутри другой формы. Первичная форма (в нашем случае Flats) называется главной. Подчиненные формы очень удобны для вывода информации из таблиц или запросов, свя53
занных отношением один ко многим. Одна квартира – несколько проживающих. При использовании формы с подчиненной формой для ввода новых записей, текущая запись в главной форме сохраняется при входе в подчиненную форму. Это гарантирует, что записи из таблицы или запроса на стороне «многие» будут иметь связанную запись в таблице или запросе на стороне «один». Access автоматически сохраняет каждую запись, добавляемую в подчиненную форму, и никакие специальные приемы типа обработки события «До вставки» не требуются. Начнем с конечного результата. На рис. 4.24 показаны две формы. Building (информация по зданию) и Flats (данные по квартире). Форма Flats содержит подчиненную форму Owners (члены семьи квартиросъемщика).
Рис. 4.24. Основные формы программного комплекса Real Estate
Порядок создания подчиненной формы следующий. 1. Откройте первичную форму Flats в режиме конструктора. 2. Убедитесь, что на панели элементов кнопка с подсказкой «Мастера» нажата. Если нет – «утопите» ее щелчком левой кнопки мыши. Нам понадобится работа построителя подчиненных форм. 54
3. Нажмите на панели элементов кнопку «Подчиненная форма». Поместите указатель мыши над тем местом первичной формы, где вы планируете разместить левый верхний угол подчиненной формы. Указатель мыши превратится в значок подчиненной формы с крестиком в левом верхнем углу. 4. Нажмите левую кнопку мыши и, удерживая ее в нажатом состоянии, переместите курсор по диагонали так, чтобы получилась рамка требуемого размера. Отпустите левую кнопку мыши. Автоматически запустится построитель подчиненной формы. 5. Первый шаг работы мастера подчиненных форм – определение данных, которые надо включить в подчиненную форму. «Утопите» кнопку «Имеющиеся таблицы и запросы» и щелкните по кнопке «Далее». Появится окно для выбора таблиц и полей. Выберите все поля из таблицы Owners (рис. 4.25).
Рис. 4.25. Первый шаг работы мастера подчиненных форм
6. Второй шаг – определение полей связи между главной и подчиненной формами. Основа главной формы Flats – одноименный запрос, в который попали данные из двух таблиц: Flat и Account. Подчиненная форма основана на данных из таблицы Owners. Никогда ранее мы не устанавливали отношений между запросом Flats и таблицей Owners, поэтому все, что может предложить мастер подчиненных форм на этом шаге, нам не подходит. Сделайте щелчок по кнопке «Самостоятельное определение». Ключевая связка выглядит так: Street+House+Flat (4.26). 7. Шаг три – выбор имени для подчиненной формы. Под этим именем она появится в списке форм базы данных Real Estate. Мы уже условились, что назовем ее Owners. Введите это имя и щелкните по кнопке «Готово». 55
Рис. 4.26. Определение полей связи между главной и подчиненной формами
Закройте первичную форму Flats. Дальнейшая работа будет происходить с формой Owners. Откройте ее в режиме конструктора. То, что сгенерировал мастер подчиненных форм, необходимо подвергнуть некоторому улучшению. Посмотрите сами (рис. 4.27).
Рис. 4.27. Подчиненная форма, созданная при помощи мастера
В заголовки колонок вынесены названия полей таблицы Owners. Конечному пользователю они ни о чем не говорят. Наличие ключевых полей Street, House и Flat в подчиненной форме вносит настоящую путаницу. Кнопки перехода по записям подчиненной формы в данном случае просто мешают работе. Не пытайтесь изменить шрифт заголовков колонок. Форма сгенерирована в режиме таблицы, у вас просто ничего не получится. Для начала сделаем подчиненную форму ленточной. В окне свойств этой формы выберем вкладку «Макет», найдем свойство «Режим по 56
умолчанию» и изменим его значение на «Ленточная форма». Удалим заголовок формы и ключевые поля Street, House и Flat. Для удаления элемента сделайте по нему щелчок левой кнопкой мыши и нажмите клавишу . Уберем совсем кнопки перехода по записям. Для этого на вкладке «Макет» в качестве значения свойства «Кнопки перехода» поставьте «Нет». Немного отформатируем объекты формы. Для этого поместите указатель мыши в любую точку на границе выделенного элемента, отличную от маркеров изменения размеров. Нажмите левую кнопку мыши и, не отпуская ее, «перетащите» элемент на новое место. Более точно «выставить» элемент управления на форме можно при помощи клавиш клавиатуры с изображением стрелок при нажатой клавише , а поточнее изменить размеры элемента можно при помощи клавиш клавиатуры с изображением стрелок при нажатой клавише <Shift>. После проделанных манипуляций получим Рис. 4.28. Требование параметра форму, изображенную на рис. 4.24. 4.3. Добавление кнопки в форму для вызова другой формы В предыдущем разделе нами была создана сложная форма Flats для отображения информации о квартирах, расположенных в здании. Если вы полностью следовали моим советам и выполнили эту работу на компьютере, то вместо картинки, изображенной на рис. 4.27, после запуска формы на выполнение получили требование ввести какой-то параметр (см. рис. 4.28). В этом нет ничего удивительного. Запускать на выполнение форму Flats (квартиры) имеет смысл только из формы Building (здание), так как два параметра адреса – улицу и номер дома – сформированный нами запрос по квартирам берет именно из этой формы. Добавим кнопку с названием «Квартиры» в форму Building. 1. Откройте форму Building в режиме конструктора. с подсказкой «Мас2. Убедитесь, что на панели элементов кнопка тера» нажата. Если нет – «утопите» ее щелчком левой кнопки мыши. 3. Сделайте щелчок левой кнопкой мыши по пиктограмме на панели элементов «Кнопка». 4. Поместите указатель мыши над тем местом формы Building, где вы планируете разместить левый верхний угол кнопки. Указатель мыши превратится в значок кнопки с крестиком в левом верхнем углу. 5. Нажмите левую кнопку мыши и, удерживая ее в нажатом состоянии, переместите курсор по диагонали так, чтобы получилась рамка 57
требуемого размера. Отпустите левую кнопку мыши. Автоматически запустится построитель кнопки. Появится диалоговое окно, показанное на рис. 4.29. Выберите категорию и действия так, как показано на этом рисунке, и нажмите кнопку «Далее>».
Рис. 4.29. Первый шаг работы мастера кнопок
6. На втором шаге работы мастера кнопок необходимо выбрать форму, которая будет запущена на выполнение после щелчка мышью по кнопке. Это форма – Flats (рис. 4.30).
Рис. 4.30. Второй шаг работы мастера кнопок
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
Признаюсь, что более «навороченного на пустом месте» текста процедуры мне раньше видеть никогда не приходилось. Замените его на : Private Sub Кнопка190_Click() DoCmd.OpenForm «flats» End Sub
Единственное отличие в работе этих процедур заключается в том, что в случае возникновения ошибки при работе формы Flats об этом в первой процедуре сообщит Microsoft Access 2002, а во второй – Visual Basic for Application 6.3. В обоих случаях будет выведен один и тот же текст, причем VBA укажет еще и номер ошибки.
59
Итак, кнопка для вызова формы Flats из формы Building создана. Основная часть нашего программного комплекса готова к работе. Давайте в очередной раз подумаем о конечном пользователе. Попробуйте полностью от начала до конца заполнить карточку здания. Уверен, вы будете не очень довольны тем, что после заполнения очередного поля и нажатия клавиши <Enter> курсор перепрыгивает вовсе не на следующее поле, а совсем в другой угол формы, и вам приходится прибегать к помощи мыши, чтобы вернуть его в нужное место. Исправим сложившееся положение. Запустите форму Building в режиме конструктора. В главном окне Microsoft Access выберите пункт меню «Вид», а в открывшемся подменю – строчку «Последовательность перехода». Откроется диалоговое окно, в котором отображен список всех объектов, имеющихся в форме (рис. 4.31). Причем отображены они в той последовательности, в какой попали в форму (рис. 4.31). Последней находится наша кнопка с именем «Кнопка190». У нас есть возможность «перетащить» любой объект в любое место окна. Выделите его щелчком левой кнопки мыши и творите!
Рис. 4.31. Изменение последовательности перехода
Вполне очевидно, что наилучший порядок перехода фокуса между элементами формы – естественный. Если все элементы формы расположены один под другим, то нажмите кнопку «Авто» и статус-кво будет восстановлен. После внесения изменений не закрывайте окно щелчком левой кнопкой мыши по крестику, расположенному в правом верхнем углу окна, так как в этом случае вся ваша работа пойдет насмарку. Для сохранения сделанных изменений обязательно нажмите кнопку «ОК». 60
4.4. Первые результаты Мы создали две формы, которые позволяют добавлять и корректировать данные по описаниям зданий, квартир, и проживающих в них, но не предусмотрели возможность удаления и поиска информации. Поспешу вас обрадовать – эти функции реализованы в Microsoft Access его создателями. Ни одна другая СУБД не имеет их в своем арсенале. Если эта реализация устраивает разработчика программного комплекса, то больше ничего делать не требуется. Пользуйтесь готовым! Для удаления описания определяемого здания сделайте так, чтобы оно было отображено в форме Building. В главном меню Microsoft Access выберите пункт «Правка», а в появившемся подменю – строку «Удалить запись». Если при формировании связей между таблицами вы указали режим «Каскадное удаление связанных записей», то вместе со зданием будут удалены все квартиры и проживающие в них, если нет – то Access выдаст сообщение о невозможности удаления этого здания, но только при наличии в нем квартир и проживающих. Возможности поиска, предоставляемые Microsoft Access, необычайно широки. Рассмотрим их на конкретном примере. Пример: требуется найти все здания, расположенные не в центральном районе, 1963 г. постройки с износом до 30 %. Площадь земельного участка должна быть до 2500 м2. Здания должны находиться в краевой собственности и иметь лифт. Решение: запустите на выполнение форму Building. В главном меню (рис. 4.32) Microsoft Access выберите пункт «Записи». В появившемся подменю выберите пункт «Фильтр». Не делайте щелчка мышью, а просто поместите на него указатель. Откроется еще одно подменю (рис. 4.33).
Рис. 4.32. Главное окно Microsoft Access
Выберите строку «Изменить фильтр». Появится окно «Building: фильтр». В этом окне мы можем задать условие, которому должно отвечать значение любого поля, находящегося в форме.
61
Рис. 4.33. Окно установки фильтра по зданиям
Обратите внимание на профессионализм авторов Microsoft Access. В список, из которого Вы выбираете значение поля, занесены только те, которые встречаются в базе данных. Например, если в базе нет зданий 1909 года постройки, то среди предложенных вариантов выбора этот год отсутствует. Для формирования очень сложных условий внизу окна имеется вкладка «Или». Сделайте по ней щелчок левой кнопкой мыши, если в этом есть необходимость, и задайте еще группу условий. Таких групп условий может быть сколько угодно, но помните, что устанавливать фильтр можно только при числе записей в фильтруемых таблицах до нескольких тысяч из-за значительного замедления работы компьютера, особенно при работе в сети. После ввода всех нужных условий выберите в подменю «Записи» пункт «Применить фильтр» (см. рис. 4.32). Снова появится форма Building, но отображаться в ней будут только два здания, удовлетворяющим условиям нашего примера, из 195, имеющихся в базе Real Estate (рис. 4.34). Не забудьте снять фильтр, когда поставленная задача будет решена. Для этого в подменю записи сделайте щелчок мышью по пункту «Удалить фильтр». И еще об одной приятной неожиданности, доставленной нам разработчиками Microsoft Access – проверке орфографии, причем на довольно высоком уровне. Этим также не могут похвастаться другие СУБД. На рис. 4.1 в поле «Примечания» занесен текст, содержащий слово с орфографической ошибкой. Интересно, а вы ее заметили? Поручим компьютеру найти эту ошибку. Поместите указатель мыши в самое начало поля, нажмите левую кнопку, и не отпуская ее, переместите указатель в самый 62
конец поля «Примечания». Отпустите кнопку. В главном меню Microsoft Access выберите пункт «Сервис», а в нем строку – «Орфография».
Рис. 4.34. В фильтр попало описание двух зданий из 195, имеющихся в базе данных
Появится диалоговое окно. Дальше – смотрите сами. Видно, кто виноват и что делать!
Рис. 4.35. Орфографическая ошибка при заполнении поля примечания
63
4.5. Создание главной кнопочной формы Последней создаваемой формой всегда является главная кнопочная форма (рис. 4.36), предоставляющая пользователю прямой доступ к приложению. Имеет смысл в параметрах запуска Microsoft Access сделать ссылку на эту форму.
Рис. 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. СОЗДАНИЕ ОТЧЕТОВ Основная сфера применения форм – обеспечение возможности просмотра отдельных или небольших групп связанных записей. Отчеты же представляют собой наилучшее средство отображения информации из базы данных в виде печатного документа. Разработка отчета очень похожа на разработку формы. Используется та же панель элементов, тот же список полей и окно свойств. В этом разделе мы построим относительно несложный отчет, пройдя шаг за шагом всю цепочку его создания. «Заставим» наш программный комплекс выдавать на печать всю информацию, которая имеется в базе данных по отдельно взятой квартире: адрес, технические характеристики, ответственного квартиросъемщика, номер лицевого счета и список проживающих. Отчет будет запускаться из формы Flats (квартиры) и носить имя Document. 5.1. Построение базового запроса При создании запроса нам понадобится информация из запроса Flats и таблиц Street и Owners. Напомню, что запрос Flats содержит данные по техническим характеристикам всех квартир, находящихся в отдельном конкретном здании, которое отображается в форме Building. Назовем базовый запрос так же, как и отчет, который будет построен на его основе – Document. 65
1. В окне базы данных выберите значок «Запросы». Он находится в списке «Объекты». Нажмите кнопку «Создать» на панели инструментов окна базы данных. Появится окно «Новый запрос». Выберите пункт «Конструктор» и нажмите кнопку «ОК». 2. Появится список таблиц и запросов базы данных. Перейдите на третью вкладку «Таблицы и запросы». Выберите запрос Flats и нажмите кнопку «Добавить». Таким же образом включите в запрос таблицы Street и Owners. Верхняя часть окна конструктора примет вид (рис. 5.1).
Рис. 5.1. Верхняя часть окна конструктора запросов после добавления таблиц
3. Параметры объединения таблицы Street и запроса Flats Access установил сам. Объединить Flats и Owners предстоит нам. 4. Поместите указатель мыши над полем Street запроса Flats. Нажмите левую кнопку мыши и, не отпуская ее, «перетащите» появившийся значок поля на поле Street таблицы Owners. Проделайте аналогичную операцию с полями House и Flat этого же запроса и таблицы (рис. 5.2).
Рис. 5.2. Конечный вид окна конструктора запросов
5. Расположите последовательно все поля, которые хотите включить в запрос Document из таблиц Street, Owners и запроса Flats, в первую строчку нижней части окна конструктора запросов. 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. Разработка отчета в режиме конструктора Сделайте активным окно базы данных. Выберите вкладку «Отчеты». 5.2.1. Создание заготовки отчета Так как на данный момент мы не создали еще ни одного отчета, то вы увидите в окне списка отчетов только два приглашения: «Создание отчета в режиме конструктора» и «Создание отчета с помощью мастера» (см. рис. 5.4). Проигнорируйте оба этих приглашения и сделайте щелчок левой кнопкой мыши по пиктограмме «Создать». Появится диалоговое окно «Новый отчет» (рис. 5.3). Выберите пункт «Конструктор» в верхнем окне и запрос Document в поле с раскрывающимся списком. При завершении этого этапа нажмите кнопку «ОК». Заготовка отчета содержит три раздела: верхний и нижний Рис. 5.3. Создание нового отчета 67
колонтитулы, между которыми находится область данных. Вы можете изменить размер любого раздела. Ширина всех разделов должна быть одинаковой. Линейки с сантиметровыми делениями по верхнему и левому краям отчета помогают расположить данные на странице. Если линейки отсутствуют, то для их появления на экране выберите в главном меню Microsoft Access пункт «Вид», а в открывшемся подменю строку – «Линейка». Верхний и нижний колонтитулы будут напечатаны соответственно вверху и внизу каждой страницы. Их можно убрать совсем с помощью пунктов меню «Вид» и «Колонтитулы». Вы можете создать заголовок, который будет напечатан только в начале отчета на первой странице. Для этого используйте пункт меню «Вид» и строку «Заголовок/примечание отчета».
Рис. 5.4. Конструктор отчетов
5.2.2. Добавление элементов в отчет Microsoft Access Для создания отчета, показанного на рис. 5.5, выполните следующие действия. 1. Разместите надпись в самом верху заголовка отчета и введите в нее текст «Справка». Выделите надпись и установите шрифт Arial размером 10 пунктов. Подчеркните текст и сделайте его выделенным. Выберите пункт «Формат» в главном окне Access, а затем «Размер» и строчку «По размеру данных». Размер элемента управления будет настроен в соответствии с назначенным шрифтом. Выполните аналогичные действия по размещению второй строки заголовка отчета «Данные по квартире, расположенной по адресу». 68
2. «Перетащите» поля Name, Sign, House и Flat из списка полей в заголовок отчета. Выполните форматирование. Для этого выберите нужные элементы управления, щелкая по ним левой кнопкой мыши при нажатой клавише <Shift>. Откройте пункт «Формат» главного окна и пункт «Выровнять» открывшегося подменю. В появившемся окне вам будет предложено несколько способов форматирования.
Рис. 5.5. Окончательный вид отчета Document в конструкторе отчетов
3. «Перетащите» поля Number, Family, Name, Second, Born и Status в область данных. Удалите подписи, которые к ним сгенерирует Access, и выполните форматирование. Закончив работу, не щелкайте по кнопке «Предварительный просмотр». В автономном виде этот отчет не запустится по изложенным ранее причинам. Добавьте кнопку «Документ» в форму Flats и запускайте отчет из этой формы. Текст процедуры VBA, сгенерированный мастером кнопок, для запуска этого отчета имеет вид Private Sub Кнопка40_Click() On Error GoTo Err_Кнопка40_Click Dim stDocName As String stDocName = «Document» DoCmd.OpenReport stDocName, acPreview Exit_Кнопка40_Click: Exit Sub Err_Кнопка40_Click: MsgBox Err.Description Resume Exit_Кнопка40_Click End Sub
69
Имя кнопки – «Кнопка 40». Имя отчета – «Document». Отчет запускается в режиме предварительного просмотра – acPreview. В случае возникновения ошибки при выполнении отчета, о нем сообщит Microsoft Access, а не VBA – MsgBox Err.Description. 5.2.3. Вывод отчета Microsoft Access на печать При предварительном просмотре отчета в режиме целой страницы Microsoft Access выводит его так, как сделал бы принтер. По умолчанию стандартные поля составляют один дюйм со всех сторон. У нас имеется возможность изменить параметры печати отчета. Для этого: 1. Откройте отчет в режиме конструктора. 2. Выберите в главном меню Microsoft Access пункт «Файл», а в открывшемся подменю – строку «Параметры страницы». 3. Откроется диалоговое окно (рис. 5.6). Для того, чтобы свести к минимуму расход бумаги при печати рабочих отчетов, установите флажок «Печатать только данные». Верхний и нижний колонтитулы, а также заголовок отчета и примечание отчета печататься не будут. 4. Задайте в окне «Параметры страницы» поля страницы, выРис. 5.6 Окно «Параметры страницы» водимой на принтер. Для того чтобы распечатать отчет, находясь в режиме предварительного просмотра (рис. 5.7), сделайте щелчок левой кнопкой мыши по пиктограмме , находящейся на панели инструментов главного окна Access. Компьютер незамедлительно напечатает отчет, используя текущие установки принтера. Если вы хотите изменить текущие установки принтера или выбрать другой принтер, например сетевой, то выберите пункт «Файл» главРис. 5.7. Вид отчета в режиме предварительного просмотра 70
ного окна Microsoft Access, а в нем строку «Печать». На экране появится стандартное окно «Печать» вашей операционной системы. Можете распечатать отчет целиком или только необходимые страницы. Также имеется возможность указать количество экземпляров отчета и отправить отчет в файл для последующей распечатки. Справка, полученная в результате работы Microsoft Access, представляет собой официальный документ. Инспектору остается только поставить на нем подпись и печать. Однако в таком виде адрес здания в ней всегда будет начинаться с признака, написанного с большой буквы (Улица, Переулок, Проспект и т.д.), а это не совсем то, что нам нужно! Ведь в качестве признака может фигурировать слово, стоящее в адресе на втором месте и начинаться с маленькой буквы (шоссе, проезд, бульвар и т.д.). Об этом уже шла речь в табл. 2.1. и все необходимые атрибуты для правильной записи адреса нами уже предусмотрены. Вернемся к нашему отчету, и внесем в него необходимые изменения (рис. 5.8).
Рис. 5.8. Работа с адресом здания в справке
Удалим поля и надписи (street.NAME, дом, HOUSE, кв., FLAT). Для этого надо сделать щелчок мышью по объекту и нажать на клавиатуре 71
клавишу Delete. Поле SIGN переименуем в ADDRESS, увеличив его в размерах и отцентрировав. Выделите поле мышью, и клавишами клавиатуры с изображением стрелок при нажатой клавише <Shift> добейтесь требуемых результатов. В окне свойств напротив надписи “Имя” поставьте ADDRESS. В конструкторе отчета в поле ADDRESS появится надпись “Свободный”. В окне свойств напротив надписи “Выравнивание текста” в раскрывающемся поле со списком найдем значение “по центру”. Сделаем поле ADDRESS вычисляемым, включив в состав выражения необходимые поля и надписи в требуемом порядке. Для этого в окне запустим посвойств найдем надпись “Данные” и щелчком по кнопке строитель выражений (рис. 5.9).
Рис. 5.9. Начало работы с построителем выражений
Приведем общие сведения о построителе выражений. Окно построителя выражений состоит из трех разделов, располагающихся сверху вниз. Поле выражения. В верхней части окна построителя расположено поле, в котором создается выражение. Ниже находится раздел, предназначенный для создания элементов выражения и их последующей вставки в поле выражения. Допускается непосредственный ввод части выражения в поле выражения. Кнопки операторов. В средней части окна построителя находятся кнопки с часто используемыми операторами. При нажатии на одну из этих кнопок построитель вставит соответствующий оператор в текущую позицию поля выражения. Чтобы вывести полный список операторов, выберите папку Операторы в нижнем левом поле и нужный тип в сред-
72
нем поле. В правом поле будут выведены все операторы выбранного типа. Элементы выражения. В нижней части окна построителя находятся три поля. В левом поле выводятся папки, содержащие таблицы, запросы, формы, объекты базы данных, встроенные и определенные пользователем функции, константы, операторы и общие выражения. В среднем поле задаются определенные элементы или типы элементов для папки, заданной в левом поле. Например, если выбрать в левом поле Встроенные функции, то в среднем поле появится список всех типов функций Microsoft Access. В правом поле выводится список значений (если они существуют) для элементов, заданных в левом и среднем полях. Например, если выбрать в левом поле Встроенные функции и тип функции в среднем, то в правом поле будет выведен список всех встроенных функций выбранного типа. Примечание. При вставке идентификатора в выражение построитель вставляет только те его части, которые требуются в текущем контексте. Например, при запуске построителя выражений из окна свойств формы «Building» и вставке идентификатора для свойства Вывод на экран (Visible) будет вставлено только имя свойства Visible. При использовании данного выражения вне контекста формы необходимо включать полный идентификатор: Forms![Building].Visible Выберите мышью кнопку и сделайте по ней щелчок. Выражение, создаваемое при помощи построителя, как правило, начинается со знака присваивания. Далее используем встроенную функцию: IIF(expr; truepart; falsepart), которая в зависимости от значения логического выражения “expr” назначит в нашем случае значением поля ADDRESS либо первую цепочку (название + признак + дом + квартира), либо вторую (признак + название + дом + квартира). Критерием выбора цепочки адреса является поле таблицы улиц FIRST (табл.2.1). Хочу обратить Ваше внимание на то, что в таблицах Microsoft Access логическое поле имеет тип “числовой”, значению True соответствует число –1 (минус один), а значению False соответствует число 0 (ноль). В таблицах же Microsoft SQL Server логическое поле имеет тип Bit (True – один, False – ноль). Чтобы избежать проблем при переводе приложения Microsoft Access на платформу SQL Server, советую Вам не привязываться к конкретным значениям полей таблиц, а использовать константы True и False, которые построитель выражений Microsoft Access 73
сразу же переведет на русский язык (Истина и Ложь), если Вы работаете с русскоязычной версией Microsoft Access XP (рис. 5.10).
Рис. 5.10. Выражение для вычисляемого поля готово
Для окончательного построения выражения нам потребуется текстовая функция Trim(stringexpr), убирающая концевые пробелы, и функция преобразования Str(number), преобразующая число в символы. Позволю себе привести законченный вид выражения для вычисляемого поля ADDRESS. =IIF([First]=Истина; Trim([street.Name]+' '+[Sign]+', дом '+(Trim([House]))+', кв.'+Trim(Str([Flat]))); Trim([Sign]+' '+[street.Name])+', дом '+(Trim([House]))+', кв.'+Trim(Str([Flat])))
На рис. 5.11 показана работа сконструированного нами выражения
Рис. 5.11. Запись адреса по правилам русского языка
Обратите внимание на правила записи выражений. Имена полей должны быть заключены в квадратные скобки, а текстовые константы в апострофы или кавычки. Параметры функций - в круглые скобки. Если параметров несколько, то они отделяются друг от друга точкой с запя74
той. В выражении общее число открытых круглых скобок обязательно должно быть равно числу закрытых. Чтобы работать с Microsoft Access более эффективно, необходимо научиться создавать простые выражения с использованием функций и операций. Выражения применяются, как правило, для проверки условий или для арифметических вычислений. Выражение создается с помощью комбинации идентификаторов, операторов и значений, обеспечивающей получение необходимого результата. Выражения можно создавать самостоятельно или с помощью построителя выражений. 5.2.4. Операторы Microsoft Access для построения выражений На этот раз рассмотрим процесс создания выражения без помощи построителя. Введите комбинацию идентификаторов, операторов и значений в элемент управления, в котором требуется получить результат. Например, следующее выражение увеличивает значение элемента управления Cost (стоимость здания) формы Building на 20 процентов: = [Forms]![Building]![Cost] * 1,2 Примечания. Оператор ! указывает, что следующий за ним элемент является элементом, определяемым пользователем (элементом семейства). Перед выражениями, определяющими вычисляемые элементы управления, всегда следует помещать знак присваивания (=). Некоторые выражения дают логические результаты Истина или Ложь. Арифметические операторы выполняют сложение, вычитание, умножение и деление (табл. 5.1). Таблица 5.1. Арифметические операторы Оператор
Описание
Пример
+
Складывает два операнда Вычитает один операнд из другого Меняет знак операнда Перемножает два операнда Делит один операнд на другой Делит целый операнд на другой нацело Возвращает остаток от целочисленного деления Возводит операнд в степень
[Dwell]+[Branch]
- (унарный) * / \ Mod
^
[SquareFlat]-[Balcony] -345 [Cost]*[Wear] [Cost]/[Square] [Year]\2 [Cost] Mod 12 [Line]^2
Операторы сравнения сравнивают значения двух операндов и возвращают логические значения (Истина или Ложь), соответствующие результату сравнения (табл. 5.2). 75
Таблица 5.2. Операторы сравнения Оператор
Описание
Пример
Результат
> >= < <= <>
Больше Больше или равно Меньше Меньше или равно Не равно
5678>3000 234>=2341 1000<1001 6789<=6789 567<>567
Истина Ложь Истина Истина Ложь
Логические операторы используются для объединения результатов двух или более сравнений в одно (табл. 5.3). Таблица 5.3. Логические операторы Оператор And Or Not
Описание
Примеры
Результат
Логическое и (Конъюнкция) Логическое или (Дизъюнкция)
Истина And Ложь Истина And Истина Ложь Or Ложь Истина Or Ложь Not Ложь Not Истина
Ложь Истина Ложь Истина Истина Ложь
Логическое отрицание
5.2.5. Стандартные функции для Microsoft Access и VBA Функции, применяемые в выражениях, возвращают значения. В Microsoft Access и VBA имеется более 150 различных функций. Приведем особенно часто используемые из них. Более подробные сведения Вы можете получить из справочной системы Microsoft Access 2002 (на русском языке) и справочника Access VBA (к сожалению – на английском в версии 10.3409.3501). Математических функций Access (табл. 5.4) вполне достаточно для большинства инженерных приложений. Таблица 5.4. Математические функции №
Функция
1
Abs()
2
Atn()
3
Cos()
76
Описание функции Возвращает абсолютную величину числа Возвращает арктангенс числа в радианах Возвращает косинус угла, в радианах
Пример
Значение
Abs(-345.6)
345.6
Atn(1)
0.7853982
Cos(1)
0.5403023
№
Функция
Описание функции
Пример
Значение
4
Exp()
5
Int()
Exp(1) Int(-15.2) Int(13.6)
2.7182818 -16 13
6
Log()
Возвращает значение экспоненты Округляет число до ближайшего минимального целого (см. примеры) Возвращает натуральный логарифм числа
Log(10)
2.302585
7
Rnd()
8
Sgn()
9
Sin()
10
Sqr()
Возвращает случайное число в диапазоне от 0 до 1
Sgn(-10.1) Sgn(0) Sgn(10.1)
0.2895625 (произвольное) -1 0 1
Sin(1)
0.8414710
Sqr(2)
1.4142136
Rnd()
Возвращает 1 для положительного числа, 0 для нулевого, -1 для отрицательного числа Возвращает синус угла, выраженного в радианах Возвращает квадратный корень
Другие, полезные для начинающего разработчика функции, приведены в таблице 5.5. Таблица 5.5. Другие функции №
Функция
1
Date()
2
Day()
3
Month()
4
Now()
5
Time()
6
Year()
7
Chr()
8
Lcase()
9
Ucase()
10
Mid()
11 12
Rtrim() Ltrim()
13
Trim()
14 15
Str() Val()
Описание функции Возвращает текущую системную дату Возвращает день из значения даты Возвращает месяц из значения даты Возвращает дату и время из системных часов компьютера Возвращает время из системных часов компьютера Возвращает год из значения даты Возвращает как текст знак, соответствующий коду ANSI Переводит текст в нижний регистр Переводит текст в верхний регистр Возвращает подстроку из строки. Необходимо указать с какого символа и сколько символов. Удаляет пробелы после текста Удаляет пробелы перед текстом Удаляет пробелы до текста и после него Преобразует число в текст Преобразует текст в число
Пример
Значение
Date()
12.03.2004
Day(Date())
12
Month(Date))
3
Now()
12.03.2004 11:42:28
Time()
11:45:40
Year(Date())
Lcase("aSD")
2004 % (процент) asd
Lcase("aSD")
ASD
Mid("abcdef",2,3)
bcd
Rtrim(“abcd ”) Ltrim(“ abcd”)
abcd abcd
Trim(“ abcd
abcd
Chr(37)
“)
Str(1234.56) Val(“1234.56”)
1234.56 1234.56
77
6. ДОПОЛНИТЕЛЬНЫЕ ВОЗМОЖНОСТИ Microsoft Access 2002 – это уже шестая версия продукта, впервые появившегося в 1992 году. По данным компании Microsoft, за период до 2002 года в мире продано 80 миллионов копий Access всех версий, что дает основание считать эту СУБД самой популярной системой управления базами данных для персональных компьютеров. Этой популярностью Access полностью обязан своим разработчикам, которые наряду с прекрасным исполнением (абсолютно вся информация хранится в одном файле), простотой освоения, эффективностью работы и эффектным доступом к данным из других источников, предоставили пользователю богатейшие дополнительные возможности, делающие работу с Microsoft Access еще более эффективной и комфортной. Вот некоторые из них. 6.1. Сжатие базы данных Вы удалили форму или таблицу из базы данных Microsoft Access. Обратите внимание, размер файла этой базы данных остался прежним! При удалении записи из таблицы место, которое она занимала в базе, также автоматически не освобождается и не используется для хранения новой записи. Более того, после таких удалений база данных хранится в дезорганизованном виде, хотя и остается полностью работоспособной. Чтобы уменьшить размер файла базы данных и увеличить ее быстродействие, воспользуйтесь служебной программой. Средства сжатия и восстановления в Access 2002 усовершенствованы и теперь интегрированы в единый процесс, что делает их более защищенными и эффективными. Для запуска служебной программы выберите в главном меню Microsoft Access пункт «Сервис», а в открывшемся подменю – пункт «Служебные программы». В открывшемся подменю выберите пункт – «Сжать и восстановить базу данных». После окончания процесса сжатия активизируется окно базы данных. Сжатая база данных хранится под тем же именем, что и перед сжатием. 6.2. Преобразование базы данных к предыдущей версии Эта функция появилась впервые только в Microsoft Access 2000. Более ранние версии не позволяли выполнять такие преобразования, а разработчикам настоятельно рекомендовалось иметь в своем распоряжении несколько версий этого продукта и вести разработку на той, которая есть у заказчика. Процесс преобразования файла базы данных Microsoft Access 2002 к виду Microsoft Access 2000 предельно прост. Выберите в главном меню Microsoft Access пункт «Сервис», а в открывшемся подменю – пункт «Служебные программы». В них пункт – «Преобразовать базу данных». В самом начале процесса преобразования Access выведет диалоговое окно, в котором надо указать название 78
файла базы данных, и папку, в которую будет помещена приведенная к формату Access 2000 база. 6.3. Анализ быстродействия базы данных Для оптимизации быстродействия базы данных Microsoft Access 2002 применяется специальная служебная программа – анализатор быстродействия. 1. Откройте базу данных. 2. Выберите в главном меню пункт «Сервис» команду «Анализ» и подкоманду «Быстродействие». Появится диалоговое окно (рис. 6.1).
Рис. 6.1. Окно для анализа быстродействия базы данных
3. Выберите вкладку, соответствующую типу объекта базы данных. Анализатор быстродействия выдает три типа рекомендаций по оптимизации производительности: советы, предложения и мысли. При выделении элемента в списке Результаты анализа, сведения о предлагаемом решении выводятся в области Примечания, расположенной под списком. Операции оптимизации, как правило, подразумевают определенные компромиссы, которые следует иметь в виду, приступая к оптимизации. Для получения дополнительных сведений о рекомендации, выберите ее в списке и просмотрите информацию в области Примечания. Microsoft Access 2002 может автоматически выполнять рекомендации типа «совет» и «предложение». Рекомендации типа «мысль» выполняются вручную. 6.4. Сохранение базы данных в виде MDE-файла Если база данных содержит программы Microsoft Visual Basic, то при сохранении ее в виде MDE-файла будут скомпилированы все модули, удалены все изменяемые исходные программы, а конечная база данных будет сжата. Программы Visual Basic будут по-прежнему выполняться, 79
но их нельзя будет просматривать или изменять, благодаря чему уменьшится размер базы данных. Кроме того, будет оптимизировано использование памяти, что повысит быстродействие. Сохранение базы данных как MDE-файла делает невозможным выполнение следующих действий. • Просмотр, изменение или создание форм, отчетов или модулей в режиме конструктора. • Добавление, удаление или изменение ссылок на библиотеки объектов или базы данных. • Изменение программы с помощью свойств или методов Microsoft Access или модели объектов VBA (MDE-файл не содержит текстов исходных программ). • Импорт и экспорт форм, отчетов или модулей. Однако таблицы, запросы, страницы доступа к данным и макросы можно импортировать и экспортировать в базы данных, не являющиеся MDE-файлами. Любые таблицы, запросы, страницы доступа к данным или макросы в базах данных, являющихся MDE-файлами, могут быть импортированы в другую базу данных Access, но формы, отчеты или модули не импортируются. Внимание! Обязательно сохраните копию исходной базы данных Access. В базе данных Access, сохраненной как MDE-файл, нельзя изменять структуру форм, отчетов или модулей. Чтобы изменить структуру этих объектов, следует сделать это в исходной базе данных, а затем снова сохранить ее как MDE-файл. При сохранении в виде MDE-файла базы данных, содержащей таблицы, возникают сложности согласования различных версий данных в случае последующего изменения структуры форм, отчетов или модулей. Внимание! В будущих версиях Microsoft Access (Access 2003 еще работает с базой формата 2002) открывать, преобразовывать или выполнять программы в MDE-файлах Access 2002 будет невозможно. Единственным способом преобразования MDE-файла Microsoft Access 2002 в формат будущих версий будет открытие исходной базы данных Access, в которой был создан MDE-файл, ее преобразование и последующее сохранение преобразованной базы данных Access в виде MDE-файла. 6.5. Анализ данных в Microsoft Excel Еще одна дополнительная возможность, предоставленная нам разработчиками Microsoft Access. Практически любой объект этой СУБД можно передать в Excel и там проанализировать. В этом случае можно использовать всю мощь электронных таблиц от богатейшего набора стандартных функций до построения прекрасных диаграмм. Более всего это средство подходит для работы с запросами.
80
1. Откройте окно базы данных Real Estate. 2. Выделите объект, который следует передать в Excel. Пусть это будет запрос Area, в котором содержатся данные по зданиям Кировского района (рис. 6.2).
Рис. 6.2. Запрос по зданиям Кировского района
3. В главном окне Access выберите пункт «Сервис». 4. В открывшемся подменю выберите пункт «Связи с Office». 5. В открывшемся окне выберите команду «Анализ в MS Excel». 6. Автоматически запустится Microsoft Excel, в котором в виде таблицы будут отображены данные по выбранному объекту (рис. 6.3).
Рис. 6.3. Запрос Area, переданный в Microsoft Excel 2002
81
6.6. Повышение быстродействия Microsoft Access Соблюдение следующих правил поможет повысить производительность Microsoft Access. • При работе с базами данных, которые не применяются другими пользователями, устанавливайте Microsoft Access и все свои базы данных на собственном жестком диске, а не на сетевом сервере. • Чтобы быть единственным пользователем базы данных, откройте ее в монопольном режиме. Для этого в диалоговом окне Открытие файла базы данных нажмите стрелку рядом с кнопкой Открыть и выберите в списке вариант Монопольно. • Чтобы освободить память, закройте неиспользуемые приложения. • Увеличьте оперативную память компьютера. При работе в системе Microsoft Windows 95 или более поздней рекомендуется 24 Мбайт памяти –16 Мбайт плюс дополнительные 8 Мбайт памяти для Microsoft Access. При работе в системе Windows NT версии 4.0 или более поздней рекомендуется 40 Мбайт памяти –32 Мбайт плюс дополнительные 8 Мбайт для Microsoft Access. • Регулярно удаляйте ненужные файлы, выполняйте сжатие базы данных, а после этого проводите дефрагментацию диска с помощью служебной программы дефрагментации. Для запуска этой программы нажмите кнопку Пуск в Windows, последовательно выберите пункты Программы, Стандартные, Служебные и выполните команду Дефрагментация диска. • Настройте параметры виртуальной памяти вашего компьютера. Если имеется на вашей машине еще один диск, более быстрый, то выделите место под виртуальную память на нем. Для изменения параметров виртуальной памяти Windows дважды щелкните значок Система на панели управления, выберите вкладку Быстродействие и нажмите кнопку Виртуальная память. • Замените рисунок или фоновый узор, выбранный для рабочего стола Windows, на однородный экран. • При использовании заставки как энергосберегающей функции монитора используйте пустой экран или не используйте заставку вообще. • Не используйте программы сжатия диска или переместите базы данных на несжатый диск. Если с Вашим программным обеспечением работает несколько компьютеров, соединенных в локальную вычислительную сеть, то большинство вышеизложенных рекомендаций не даст желаемого результата. Настало время перехода на платформу клиент-сервер. Если это решение принято – следующие главы помогут Вам в этом.
82
7. ПЕРЕВОД ПРИЛОЖЕНИЯ НА ПЛАТФОРМУ КЛИЕНТ-СЕРВЕР 7.1. Выбор редакции SQL Server SQL Server 2000 выпущен фирмой Microsoft в нескольких вариантах редакциях. Все они отличаются масштабами и предназначены для решения определенного круга задач. Одни редакции предназначены для работы под управлением определенных операционных систем. Другие должны быть установлены на многопроцессорных серверах. Третьи предназначены только для разработчиков приложений. Всего редакций – семь. В любом случае Вашей организации необходимо приобрести два варианта SQL Server – для разработки и тестирования (Developer Edition) и для эксплуатации в информационной системе небольшого предприятия (Standard Edition). Покупка только одной редакции (Standard Edition) значительно осложнит модернизацию и тестирование запущенного в эксплуатацию приложения, хотя на этапе первоначальной разработки можно обойтись и одним приобретением. Однако следует помнить, что SQL Server Standard Edition не работает под управлением операционной системы Windows 2000 Professional, и в этом случае Вам придется вести разработку и модернизацию на главном сервере предприятия с операционной системой Windows 2000 Server, что крайне нежелательно, или задействовать для этих целей два компьютера: сервер и рабочую станцию. 7.2. Генерация SQL Server 2000 Developer Edition Инсталляционный комплект поставляется на отдельном компактдиске. Установите его в дисковод CD-ROM. Генерация начнется автоматически (рис. 7.1).
Рис. 7.1. Начало установки SQL Server 2000 Developer Edition 83
Если автоматического запуска не произошло, то мастер установки (Installation Wizard) можно запустить с помощью файла setupsql.exe, который находится в папке X86\SETUP. Первое окно мастера установки (рис. 7.2) является приветствием и приглашает к началу установки.
Рис. 7.2. Запуск мастера установки SQL Server 2000 Developer Edition
Теперь необходимо определиться с сервером (рис. 7.3) для Installation Wizard.
Рис. 7.3. Выбор компьютера для установки
Нам предстоит установка версии SQL Server для разработчика. Она как правило устанавливается на Ваш личный компьютер, поэтому выбираем пункт Local Computer. Неяркая надпись в центре окна – MASTER – имя этого компьютера. Оно выбрано мной случайно при установке операционной системы Microsoft Windows 2000 professional и не имеет ниче84
го общего с одноименной системной базой SQL Server. Изменить имя компьютера в данном окне нельзя. При выборе пункта Remote Computer будет выполнена удаленная установка, а поле в центре окна станет доступным. Используя кнопку Browse, выберите имя удаленного компьютера, на который и будет выполнена установка SQL Server. Переключатель Virtual Server в нашем случае недоступен, так как мастер установки мы запустили на обычном компьютере, а виртуальный сервер можно установить только на кластерную систему, включающую до четырех 32-процессорных серверов. Третье окно мастера (рис. 7.4) служит для выбора режима установки.
Рис. 7.4. Выбор режима установки
Мы создаем на локальном компьютере новую инсталляцию SQL Server, поэтому переключатель необходимо установить в положение Create a new instance of SQL Server, or install Client Tools. После нажатия кнопки Next появится окно User Information (рис. 7.5).
Рис. 7.5. Занесение имени пользователя, выполняющего установку
85
Оно предназначено для ввода сведений о владельце SQL Server и содержит информацию о пользователе, выполнившем установку и об организации, купившей данный программный продукт. Следующий этап установки – лицензионное соглашение (рис. 7.6), содержащее условия эксплуатации и ответственность пользователя в случае их нарушения.
Рис. 7.6. Окно Software License Agreement мастера установки
Рис. 7.7. Окно Installation Definition мастера установки
Выбор компонентов для установки необходимо сделать в окне Installation Definition (рис. 7.7). Первый пункт Client Tools Only позволяет мастеру установить только средства администрирования: Enterprise Man86
ager, Performance Monitor, Query Analyzer и электронную документацию Book Online. Сам SQL Server не устанавливается. Выбор второго пункта Server and Client Tools предписывает мастеру установки помимо инструментов администрирования и электронной документации выполнить установку непосредственно SQL Server. Это означает, что на компьютере появятся службы MSSQLServer, SQLServerAgent, MS DTC и Microsoft Search. Третий пункт Connectivity Only позволяет установить только сетевые библиотеки. В результате у Вас появится возможность устанавливать с Вашего компьютера соединение с сервером SQL Server. Любой из первых двух режимов включает в себя и этот третий. Мы устанавливаем новую копию SQL Server, поэтому установите переключатель в положение Server and Client Tools. После нажатия кнопки Next появится очередное окно мастера установки (рис. 7.8), которое используется для указания имени устанавливаемой копии SQL Server.
Рис. 7.8. Ввод имени устанавливаемой копии SQL Server
На одном компьютере можно установить несколько копий MS SQL Server, причем каждый сервер будет работать независимо от других. Первый экземпляр может не иметь имени. В этом случае поставьте флажок в поле Default. Остальные копии должны быть именованными. Обратите внимание на то, что если на Вашем компьютере уже установлена копия по умолчанию, поле Default будет недоступно, а поле Instance name - наоборот. После выбора имени устанавливаемой копии или назначения его по умолчанию мастер установки предложит Вам определиться с типом установки, а также назначить папки для файлов самого сервера и файлов баз данных (рис. 7.9). В верхней части окна Вы найдете три переключателя. В большинстве случаев вполне достаточно выбрать Typical. Это обычная установка, при которой все устанавливаемые компоненты на87
значены корпорацией Microsoft. Предлагаю Вам самим принять участие в настройке параметров конфигурации и выбрать переключатель Custom. В нижней части окна отображен размер требуемого и свободного пространства на жестких дисках, выбранных для установки SQL Server. Внимательно оцените эти цифры и сделайте правильный вывод о продолжении установки программного продукта.
Рис. 7.9. Окно Setup Type мастера установки
В данном случае размер свободного места на жестком диске почти на два порядка превышает требуемый. Переходим к выбору устанавливаемых компонентов (рис. 7.10). Обратите внимание на то, что размер требуемого дискового пространства на рисунках 7.9 и 7.10 (до и после дополнительного выбора компонентов) несколько отличается.
Рис. 7.10. Окно Select Components мастера установки
88
Мне пришлось добавить некоторые из отсутствующих компонентов в стандартной (Typical) установке. Переходим к окну с учетными записями служб (рис. 7.11). С его помощью после установки можно будет управлять параметрами запуска служб MSSQLServer и SQLServerAgent.
Рис. 7.11. Окно Service Account мастера установки
Это окно появится только при выполнении установки SQL Server на компьютер с операционной системой семейств Windows NT/2000/XP. На рисунке 7.11 отмечены параметры, предлагаемые мастером установки по умолчанию. Положение переключателя, расположенного в верхней части окна, Use the same account for each service. Auto start SQL Server Service (использовать одну учетную запись для всех служб и запускать службы автоматически при старте SQL Server) означает запуск служб MSSQLServer и SQLServerAgent под одной и той же учетной записью. Второе положение переключателя Customize the setting for each service (выборочная настройка параметров каждой службы) делает доступной группу переключателей Services (службы). Набор свойств каждой службы отображается в области Service Setting (настройка службы). При выборе первого пункта Use the Local System account выбранная служба будет запускаться под локальной учетной записью системы. Второй пункт Use the Domain User account обязывает выполнить запуск соответствующей службы под учетной записью локального пользователя. При выборе этого пункта становятся доступными дополнительные поля, с помощью которых и указывается учетная запись. Вы – разработчик, следовательно и администратор своего компьютера, поэтому Username – Администратор, а Domain – Master (сетевое имя Вашего компьютера). Поле Auto Start Service будет доступным только при раздельной конфигурации служб MSSQLServer и SQLServerAgent. Флaжок в этом поле предписывает выполнить автоматический запуск каждой службы при загрузке операционной системы. 89
Нажмите на кнопку Next, и перед Вами появится очередное окно мастера установки SQL Server (рис. 7.12).
Рис. 7.12. Окно Authentication Mode мастера установки
В верхней части окна находится переключатель, с помощью которого выбирается режим работы подсистемы аутентификации. Первое положение переключателя Windows Authentication mode позволит пользователю получить доступ к SQL Server только средствами операционной системы. При втором положении Mixed Mode сервер будет работать в смешанном режиме аутентификации. Будут использованы как средства Windows, так и средства самого SQL Server. В этом случае необходимо ввести пароль учетной записи sa (администратора SQL Server). Следующее окно мастера установки (рис. 7.13) дает возможность выбрать сопоставление, которое будет использоваться для SQL Server. Поставьте флажок в поле Case sensitive. Строчные и прописные буквы будут считаться разными. Остальные параметры не трогайте.
Рис. 7.13. Окно Collation Settings мастера установки 90
На этот раз настала очередь конфигурирования сетевых библиотек (рис. 7.14). Как видно из рисунка часть библиотек недоступна. Это объясняется тем, что в операционной системе не установлены сетевые протоколы, использующие эти библиотеки для передачи данных.
Рис. 7.14. Окно Network Libraries мастера установки
Если Вы будете вести отладку своего приложения на одном компьютере, установив на нем Microsoft Access (клиент) и Microsoft SQL Server Developer Edition (сервер), то оставьте данные этого окна без изменения. Указанных библиотек вполне достаточно для отладки Вашего приложения. Если в дальнейшей работе понадобятся дополнительные библиотеки, то их можно установить позднее, используя для этого утилиту сетевого конфигурирования сервера – Network Utility (рис. 7.15). Вызвать утилиту можно из главного меню операционной системы, выбрав пункты Пуск – Программы – Microsoft SQL Server – Server Network Utility, или запустить на выполнение файл svrnetcn.exe из папки TOOLS\BIN установочной папки SQL Server.
Рис. 7.15. Окно утилиты SQL Server Network Utility 91
Предварительная часть установки закончена. Окно (рис. 7.16) сообщает, что после нажатия кнопки Next начнется процесс установки сервера, который займет несколько минут. Будет выполнено копирование файлов, регистрация служб, установка выбранных компонентов и конфигурирование сервера.
Рис. 7.16. Окно Start Copying Files мастера установки
Если Вы поняли, что какой-либо из указанных ранее параметров Вам не подходит, нажмите кнопку Back и внесите необходимые изменения. Вернуться можно к любому окну, начиная с рисунка 7.3. После нажатия кнопки Next внести изменения будет невозможно. Последнее окно (рис. 7.17) извещает об успешной установке SQL Server на Ваш компьютер. Нажмите кнопку Finish и выполните перезагрузку операционной системы. В главном меню появятся дополнительные пункты, а в правой части панели задач – значок запущенного Microsoft SQL Server.
Рис. 7.17. Окно Setup Complete мастера установки
92
7.3. Преобразование базы данных Access в базу SQL Server Ваша база данных после запуска в постоянную эксплуатацию значительно выросла в объеме и занимает около 80 Mбайт, с ней работает полтора десятка пользователей. Замедление работы Вашего приложения Microsoft Access очень заметно, так как все его объекты, включая таблицы, индексные файлы, формы, запросы, отчеты, макросы и модули хранятся в одном файле, который расположен на сервере. Значительно выросла нагрузка и на сетевое оборудование. Настала очередь следующего шага в развитии Вашего приложения. Это переход на платформу клиент-сервер с целью оптимизации производительности, масштабируемости, безопасности, надежности, способности к восстановлению и доступности базы данных и приложения. Microsoft SQL Server с самого начала разрабатывался в архитектуре клиент-сервер, где данные и индексы расположены на одном компьютере, доступ к которому осуществляется через сеть с многих клиентских компьютеров. Таким образом, обработка данных выполняется там, где она выполняется лучше всего – на сервере, что значительно снижает нагрузку на сеть. После выполнения запросов результаты отправляются на клиентский компьютер. Возможности SQL Server очень велики. Ваше предприятие теперь на многие годы может забыть о нехватке вычислительной мощности своей локальной вычислительной сети. Хочу предложить Вашему вниманию самых простой способ перевода базы данных Access в базу данных SQL Server с использованием мастера Access. Мастер преобразования в формат SQL Server, входящий в поставку Microsoft Access 2002, способен преобразовать базу данных Access 2002 в новую или существующую базу данных Microsoft SQL Server только версии 2000 и ниже. Если у Вас на компьютере установлен Access 2000, то при помощи этого мастера возможна конвертация только в формат SQL Server 7.0. Это связано с тем, что линейка продуктов Microsoft Office, в которую входит Access, всегда опережает другие разработки корпорации Microsoft. Перед преобразованием базы данных Access в формат SQL Server рекомендуется выполнить следующие действия. 1. Создайте резервную копию базы данных, несмотря на то, что мастер не удаляет из базы данных Access данные или объекты. 2. Убедитесь в наличии достаточного места на диске, где будет храниться преобразованная база данных SQL Server. Мастер работает быстрее, когда на диске много свободного пространства. 3. Создайте уникальные индексы. Для переноса в SQL Server таблица должна иметь уникальный индекс (первичный ключ), т.е. находиться во второй нормальной форме. Если этого индекса 93
не существует, то успешно работающее приложение с базой данных Аccess при работе с базой SQL Server даст сбой. Данные в такой таблице не удастся обновить. Посмотрите внимательно на рисунок 2.1. Таблица Owners не имеет первичного ключа. Ни одно поле этой таблицы не выделено жирным шрифтом. Исправим ошибку, добавив составной первичный ключ street+ house+ flat+ number. Откройте таблицу Owners в режиме конструктора. Для этого в окне базы данных Real Estate выделите таблицу Owners и щелкните мышью по кнопке «Конструктор» на панели инструментов окна базы данных. Она расположена рядом с пиктограммой . Выделите поле Street, нажав на кнопку выделения поля в левой части бланка структуры таблицы . Строчка, относящаяся к этому полю, будет выделена черным цветом. Нажмите клавишу и, удерживая ее, щелкните последовательно кнопки выделения напротив полей House, Flat и Number. Черных строчек станет четыре (рис. 7.18).
Рис. 7.18. Исправление ошибки
Сделайте щелчок мышью по пиктограмме создания ключевого поля на панели инструментов главного окна Access 2002. Стилизованное изображение ключа появится напротив всех четырех выбранных полей. Имейте в виду: ключиков четыре, а первичный ключ таблицы – один – составной. Давайте посмотрим, что получилось с индексированием нашей таблицы. Сделайте щелчок по пиктограмме индексов. Откроется окно «Индексы: owners». Смотрите. Комментарии излишни! Перед запуском мастера преобразования в формат SQL Server не забудьте присвоить себе необходимые разрешения на доступ к базе Microsoft Access. Также необходимо иметь соответствующие разрешения на доступ к базе Microsoft SQL Server. Для построения новой базы данных необходимо разрешение Create Database, а также разрешение Se94
lect на доступ к системным таблицам в главной базе данных. Лучше всего для этих целей знать пароль системного администратора sa. Обратите внимание на то, что для работы мастера не требуется использование ODBC для подключения к Microsoft SQL Server. Его очередь может наступить позже, когда переведенная в SQL Server база данных по Вашему желанию начнет работать с другим клиентом (например, Visual FoxPro или Delphi). Напомню, что ODBC (Open Database Connectivity, соединение по открытым базам) – это такая технология, которая позволяет приложениям обмениваться данными, несмотря на различия в применяемых системах управления базами данных. Если Вы останетесь на позициях Access-SQL Server, то ODBC совсем не понадобится.
Рис. 7.19. Исходные данные для запуска мастера преобразования
Рис. 7.20.Запуск мастера преобразования в формат SQL Server 95
Все условия, необходимые для запуска мастера преобразования выполнены. Запустим сам процесс. MS SQL Server должен быть в состоянии Running. В окне Microsoft Access должна быть открыта база Real Estate, содержащая в нашем случае семь таблиц (рис. 7.19). Остальные действия легко понять из рисунка 7.20. На первом шаге (рис. 7.21) мастер предлагает воспользоваться существующей базой данных SQL Server или создать новую. После установки SQL Server мы не создавали никаких баз данных на этом сервере, поэтому выбираем второй пункт в этом окне.
Рис. 7.21.Первое окно мастера преобразования в формат SQL Server
Рис. 7.22. Второе окно мастера преобразования в формат SQL Server
Второе окно (рис. 7.22) предназначено для сбора сведений об SQL Server, порядке соединения с ним и выбора названия базы данных, которая будет создана на нем. Microsoft SQL Server 2000 Developer Edition установлен на персональном компьютере, имеющем имя Master, менять его не следует. Если же Ваш компьютер включен в локальную сеть, в которой имеются другие серверы, и перед Вами стоит задача выполнить 96
перенос базы Microsoft Access на другой SQL Server – найдите его имя, раскрыв при помощи мыши поле со списком, расположенное в верхней части окна. Для входа на наш SQL Server можно воспользоваться учетной записью его администратора sa, что и показано на рисунке 7.22, а можно использовать доверительные отношения и попасть на SQL Server под именем администратора операционной системы Вашего компьютера. Для этого поставьте флажок в поле Доверительное соединение. В этом случае поля Код входа и Пароль станут недоступными. Этот вход мы обеспечили себе при генерации SQL Server. Отсылаю Вас к рисунку 7.11, на котором показано окно Service Account мастера установки сервера. Имя новой базы данных мастер преобразования сформирует сам, добавив окончание SQL к имени базы данных Microsoft Access – real estate. Сформированное имя (real estateSQL) Вы можете заменить другим.
Рис. 7.23. Третье окно мастера преобразования в формат SQL Server
На третьем шаге (рис. 7.23) нам предлагается выбрать таблицы базы данных Microsoft Access, которые будут помещены в базу данных real estateSQL на сервере. В данном случае необходимо выбрать все таблицы. Для этого сделайте щелчок мышью по кнопке . Все таблицы появятся в правой части окна, а кнопка Далее станет доступной. Переходим к четвертому шагу мастера преобразования (рис. 7.24). Реляционная база данных включает в себя не только таблицы, которые могут содержать условия проверки корректности данных. В ней хранятся индексы, связи между таблицами, триггеры, сохраненные процедуры и т.д. На очередном шаге нам предстоит определиться с объектами, которые следует конвертировать в базу SQL Server. Поставьте флажки в полях индексы, правила проверки на значения, значения по умолчанию и связи таблиц. Отметьте кнопку DRI. А поле создать только структуру таблицы и не преобразовывать данные оставьте пустым. Добавлять поля штампа времени в таблицы также не следует. Для этого выберите в поле со списком значение нет, никогда. 97
Несколько слов об использовании кнопки DRI (Declarative Referential Integrity— декларативная целостность данных) Если при выполнении преобразования в формат SQL Server 2000 выбран параметр DRI для предварительного преобразования таблиц, декларативная целостность данных предотвращает замену ранее преобразованных таблиц. В случае необходимости можно сбросить (удалить) целую преобразованную базу данных SQL Server с помощью SQL Server Enterprise Manager и снова преобразовать базу данных Access. Если требуется повторно преобразовать только некоторые таблицы, необходимо сначала сбросить эти таблицы и все другие таблицы, с которыми они связаны, начиная с таблицы на стороне «многие» в отношении «один - ко многим» (таблица, на первичный ключ которой нет ссылок из другой таблицы), а затем повторно преобразовать весь набор таблиц. Мастер преобразования в формат SQL Server может установить отношения только между связанными таблицами, преобразованными в одно и то же время, но не может установить отношения между этими таблицами и таблицами, уже существовавшими на сервере.
Рис. 7.24. Четвертое окно мастера преобразования в формат SQL Server
Одно из самых сложных – пятое окно (рис.7.25). Сразу нельзя догадаться о намерениях мастера в каждом из трех выбранных вариантах, хотя на первый взгляд все интуитивно понятно. Окно предназначено для выбора способа преобразования в формат SQL Server. Перечислим их в том порядке, в котором они представлены в окне. 1. Создать новую клиентскую базу данных Access для серверной базы данных SQL Server, что позволит создать приложение типа клиент-сервер. 2. Преобразовать все объекты базы данных Access для работы с базой данных SQL Server, что также позволит создать приложение типа клиент-сервер. 98
3.
Преобразовать только данные из формата базы данных Access в формат базы данных SQL Server. Клиентскую часть в этом случае придется писать заново, возможно, используя другие более серьезные программные средства, хотя можно оставить и Access. Не забывайте известную истину о том, что скупой платит дважды. На мой взгляд, это самый правильный выбор для дальнейшего развития приложения, которое переросло само себя. Да и пользователь, выросший на этом приложении, наверняка потребует его коренной переделки.
Рис. 7.25. Пятое окно мастера преобразования в формат SQL Server
Рассмотрим все способы преобразования более подробно. 7.3.1 Создание нового приложения клиент-сервер При выборе параметра создать новое приложение Access “клиент-сервер” мастер преобразования в формат SQL Server создает новый проект Microsoft Access (рис. 7.26). Выводит приглашение указать его имя (по умолчанию используется имя текущей базы данных Access), добавляет суффикс «CS», а затем сохраняет его в той же папке, где расположена существующая база данных Access. Проект Microsoft Access соединяется с базой данных Microsoft SQL Server с помощью архитектуры компонентов OLE DB. Проект не содержит никаких данных или объектов определения данных: таблиц, представлений, триггеров, сохраненных процедур и т.д. Эти объекты сохраняются в базе данных на SQL сервере. Проект включает в себя только формы, отчеты, макросы, модули и страницы доступа к данным. Объекты базы данных из формата базы данных Access в формат проекта Access преобразуются по следующим правилам.
99
Рис. 7.26. Понятие проекта Microsoft Assess
Запросы. Мастер преобразования в формат SQL Server изменяет запросы, преобразуя их в представления или сохраненные процедуры, и преобразуя синтаксис языка SQL для Access в синтаксис языка SQL для SQL Server. Запросы на выборку преобразуются в представления. Запросы с сортировкой преобразуются в комбинацию представлений и сохраненных процедур, что делает возможным вложение и сортировку (представления могут быть вложенными, но не могут содержать предложения ORDER BY; сохраненные процедуры могут содержать предложения ORDER BY, но не могут быть вложенными). Запросы с параметрами, запросы, зависящие от запросов с параметров, а также запросы на изменение преобразуются в сохраненные процедуры. Может потребоваться преобразование вручную запросов, которые не преобразуются мастером (например, запросы со слишком низким уровнем вложения). Запросы к серверу SQL, управляющие запросы и запросы на объединение не преобразуются. Формы, отчеты и элементы управления. Мастер преобразования в формат SQL Server изменяет свойства Источник записей, Данные и Источник строк путем изменения имен таблиц, запросов, инструкций SQL или полей на эквивалентные имена таблиц, представлений, сохраненных процедур или полей SQL Server. Страницы доступа к данным. Мастер преобразования в формат SQL Server изменяет подключение OLE DB и сведения о присоединении данных из элемента управления источников данных Microsoft Office для работы с новой базой данных SQL Server, а также копирует файл HTML страницы в то же расположение, что и у проекта Access, добавляя к имени файла HTML суффикс «_CS». Новые страницы в проекте Access сохраняют исходные имена, так что гиперссылки между страницами SQL Server продолжают работать. Макросы и модули. В эти объекты базы данных мастер преобразования в формат SQL Server не вносит никаких изменений. После преоб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).
Рис. 7.27. Шестое окно мастера преобразования в формат SQL Server
Рис. 7.28. Индикатор преобразования в формат SQL Server
Несмотря на то, что разработчики Microsoft Access старались настолько, насколько это возможно, наследовать в проектах Access поведение объектов MDB – файлов, это им не очень-то удалось.
Рис. 7.29. Одна из ошибок преобразования в формат SQL Server 104
Очередное окно мастера преобразования (рис. 7.29) сообщает об ошибках, возникших в процессе конвертации, а полное описание этого процесса Microsoft Access помещает в специальный отчет (рис. 7.30).
Рис. 7.30. Отчет о преобразовании в формат SQL Server
В нашем случае отчет содержит полтора десятка страниц, которые полностью описывают процесс конвертации и дают исчерпывающую информацию о неудачных попытках преобразования. Отчет содержится в файле real estate.snp и без проблем открывается в любое время при помощи самого Microsoft Access. Разработка приложений клиент-сервер с применением Access и SQL Server поначалу может показаться делом достаточно простым. Переход к этой архитектуре, по мнению тех пользователей, которые уже немного поработали с Access, должен просто означать перемещение всех таблиц на сервер и изменение связей. Но это далеко не так! Системы клиент-сервер имеют абсолютно другую архитектуру, нежели приложения на базе Microsoft Jet, поэтому перед началом перевода уже готового Вашего приложения на платформу клиент-сервер попробуйте понять все
105
эти отличия и продумать, что нужно изменить в MDB-приложении, стараясь предугадать последствия конвертации. В доказательство вышесказанного запустим преобразованное приложение на выполнение (рис. 7.31).
Рис. 7.31. Первая неудача выполненного преобразования
Запрос flats по квартирам в здании не был преобразован мастером Microsoft Access в сохраненную процедуру SQL сервера. Поэтому вместо информации по квартирам (рис. 4.24) мы получили сообщение об ошибке. Но не все так плохо для первого раза! Форма Building работает, и работает в составе клиентской части. Посмотрите на линейку Access. В ее составе две новые кнопки: последняя и предпоследняя. Последняя кнопка предназначена для ограничения максимального числа записей, которые будут переданы на рабочую станцию (рис. 7.32).
Рис. 7.32 Ограничение числа записей
Щелчок по предпоследней кнопке позволит прервать пересылку выбранных записей с сервера на рабочую станцию. Во время пересылки
106
эта кнопка светится красным цветом. После завершения операции - становится недоступной. Оставим на некоторое время первый способ конвертации. Вернемся к рисунку 7.25 и рассмотрим вторую возможность перевода действующего приложения на платформу клиент-сервер, а доведение клиентской части real estateCS.adp и базы данный SQL Server real estateSQL до рабочего состояния выполним в следующей главе. 7.3.2 Связь Access-приложения с базой данных SQL Server Сразу хочу отметить, что в этом случае мастер преобразования создаст базу данных SQL Server и свяжет ее таблицы с текущей базой Access, которая будет изменена. Этот вариант уступает первому по скорости работы и дает несколько большую нагрузку на сетевые коммуникации, так как запросы Microsoft Access не превращаются в сохраненные процедуры и представления Microsoft SQL сервера, что ведет к лишним затратам времени на пересылку и конвертацию запросов к серверу во время работы приложения с диалекта Access SQL (Structured Query Language) на вариант языка запросов SQL Server, который получил название Transact-SQL. Однако при использовании этого варианта можно отметить и определенные преимущества. Доводка MDB-файла до рабочего состояния в этом случае минимальна, а рассматриваемая нами база real estate вообще не требует никакого вмешательства со стороны разработчика. После выбора пункта связать таблицы SQL Server с существующим приложением (рис. 7.25) на экране дисплея появится очередное окно (рис. 7.33).
Рис. 7.33. Данные для преобразования по второму варианту собраны
Щелкните по кнопке Готово. Через некоторое время появится индикатор преобразования в формат Microsoft SQL Server (рис. 7.28). Когда шкала прогресса будет заполнена на 100 процентов, Вы увидите отчет о работе мастера (рис. 7.30). Как и в первом случае, отчет содержится в файле real estate.snp и без проблем открывается в любое время при помощи самого Microsoft Access. Конвертация закончена. Откроем преобразованный файл real tstate.mdb (рис. 7.34). 107
Рис. 7.34. Таблицы базы данных после преобразования
Настала очередь удалить из базы Access локальные таблицы и выполнить процедуру сжатия базы данных. После этих преобразований база real estate примет вид (рис. 7.35).
Рис. 7.35. Окончательный вид базы данных
7.3.3 Создание базы SQL Server без изменения приложения Это третий случай преобразования. Мастер создаст базу данных SQL Server, но не станет создавать проект Microsoft Access или модернизировать существующее приложение. Для работы с этим методом выберите пункт не изменять приложение (рис. 7.25). Следует заметить, что в этом случае нам понадобится установка драйвера ODBC. В операционной системе рабочей станции должны иметься драйвер ODBC для SQL Server и администратор Microsoft ODBC. В поставку Microsoft Access 2002 входит драйвер ODBC для Microsoft SQL Server. Новые версии ODBC появляются вместе с каждой новой версией операционной системы или любого продукта Microsoft для баз данных, поэтому приведенные здесь рисунки могут слегка отличаться при работе на Вашем компьютере. Запустим администратор Microsoft ODBC. Его легко найти через системное меню. Пуск Настройка Панель управления Администри108
рование Источники данных (ODBC). Откроется окно администратора ODBC (рис. 7.36).
Рис. 7.36. Окно ODBC Data Source Administrator
Нажатие кнопки Add позволит выбрать драйвер ODBC к SQL Server, среди имеющихся в системе (рис. 7.37).
Рис. 7.37. Окно выбора драйвера ODBC
Если несколько приложений подключаются к одной базе данных, то лучше всего использовать один системный DSN (Data Source Name или имя источника данных), который сохраняет информацию в системном реестре и всегда доступен. К тому же в случае перемещения или изменения параметров базы данных Вам необходимо обновить только одно подключение. Выберите драйвер SQL Server (рис. 7.37) и сделайте щелчок по кнопке Готово. 109
Появится первое окно диалога мастера создания DSN для Microsoft SQL Server (рис. 7.38).
Рис. 7.38. Окно Create a New Data Source to SQL Server
В этом окне нужно заполнить три поля. 1. Name. Имя источника данных, которое будет отображаться в окне диалога при подключении к нему пользовательского приложения. 2. Description. Описание источника данных, которое через некоторое время напомнит Вам о том, для чего это подключение было создано. 3. Server. Сетевое имя компьютера, на котором установлен SQL Server. Щелкните по кнопке Далее, чтобы перейти во второе окно диалога (рис. 7.39).
Рис. 7.39. Второе окно мастера создания DSN
Второе окно посвящено настройке параметров, относящихся к аутентификации пользователя, который будет работать при помощи созданного соединения с базой SQL Server. Установите переключатель With Windows NT authentication using network login ID, если SQL Server на110
строен для работы с пользователем, вошедшим в сеть. Если SQL Server использует свою встроенную систему защиты – установите переключатель With SQL Server authentication using a login ID and password entered by the user. Разобраться с этими параметрами Вам поможет рисунок 7.12 мастера установки самого SQL Server. В следующем окне (рис. 7.40) следует ввести название базы данных, с которой будет установлено соединение. Для этого предназначено поле со списком в верхней части окна. Остальные параметры не потребуют изменений.
Рис. 7.40. Третье окно мастера создания DSN
Щелкните по кнопке Далее, и на экране появится следующее окно мастера (рис. 7.41).
Рис. 7.41. Четвертое окно мастера создания DSN
Измените язык системных сообщений на Russian. Остальные параметры можно оставить по умолчанию. После щелчка по кнопке Готово администратор Microsoft ODBC откроет окно, содержащее исчерпывающую информацию об установленном соединении (рис. 7.42). 111
Рис. 7.42. Тестирование соединения с SQL Server
На последнем шаге работы мастер выводит начальное окно, в котором присутствует созданный системный DSN (рис. 7.43).
Рис. 7.43. Завершение работы администратора Microsoft ODBC
В последние годы (2001-2004) в мире клиентских систем для баз данных многое изменилось. Самым важным новшеством стало широкое применение технологии OLE DB – самого предпочтительного на сегодняшний день метода доступа к данным. Сейчас OLE DB поддерживается подавляющим большинством производителей реляционных баз данных в качестве стандартного метода доступа. Microsoft Access 2002 по умолчанию использует ADO OLE DB как свой внутренний способ досту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. Заранее хочу Вас успокоить переделки потребуются незначительные. 8. ВНЕСЕНИЕ ИЗМЕНЕНИЙ В ПРОЕКТ MICROSOFT ACCESS В разделе 7.3.1 нами была предпринята попытка создания нового приложения клиент-сервер на базе приложения Microsoft Access. Мастер преобразования фактически разделил это приложение на две части. Первая часть – база данных real estateSQL со всеми сопутствующими объектами попала в SQL Server, а вторая, интерфейсная часть, была создана заново и размещена в файле проекта Access real estateCS.adp. Для связи этих двух частей Microsoft Access 2002 по умолчанию использует ADO OLE DB как свой внутренний способ доступа к данным. 8.1. Преимущества работы с мастером преобразования Вам вряд ли удастся успешно перенести свое приложение на платформу клиент-сервер, если Вы не будете знать особенности этого процесса. Все самые важные из них будут рассмотрены в процессе доработки программного продукта Real Estate, над которым уже потрудился 113
мастер преобразования. В процессе изучения этой главы у разработчика может возникнуть вполне резонный вопрос: ”Так стоит ли пользоваться мастером преобразования, если он не справляется со своей работой на все сто?”. Не сомневайтесь – стоит! Он прекрасно выполняет перенос данных и конвертирует в новое приложение до 90% объектов, так что основной объем работы за нас будет сделан. Но без некоторой доработки все-таки не обойтись. 8.2. Перенесенные объекты и оставшиеся проблемы Мастер не особенно силен в преобразовании запросов. Нам необходимо внимательно просмотреть отчет о его работе (рис. 7.30) и выяснить, все ли запросы он перенес в новую базу данных. Неудачно сгенерированные конструкции необходимо вручную довести до рабочего состояния, создав сохраненные процедуры и представления (в терминологии SQL Server - хранимые процедуры и виды). Некоторые составляющие базы данных Access вообще не могут быть перенесены в новый проект. Это некоторые условия на значения полей и записей. Мастер выполняет попытку преобразования из синтаксиса JET в синтаксис SQL Server, но если она заканчивается неудачно, то такое свойство не переносится вообще. Также на SQL Server не будут перенесены перекрестные запросы, запросы на выполнение с параметрами, запросы на выполнение, основанные на базе других запросов и все запросы, базирующиеся на запросе, который не удалось перенести. 8.2.1. Запуск Enterprise Manager MS SQL Server Запустим на выполнение Enterprise Manager (рис. 8.1).
Рис. 8.1. Системное меню
Пуск Программы Microsoft SQL Server Enterprise Manager. 114
Если SQL Server запущен, то на экране появится окно (рис.8.2).
Рис. 8.2. Окно SQL Server Enterprise Manager
Enterprise Manager – один из основных инструментов администрирования Microsoft SQL Server, предназначенный для управления сервером базы данных, оптимизации запросов, разрешения возникающих проблем и т.д. Enterprise Manager реализован в виде подгружаемого модуля Microsoft Management Console и позволяет отобразить все объекты SQL Server в виде иерархического дерева. Вам конечно же, хочется увидеть структуру базы данных real estateSQL. Для этого необходимо запустить построитель диаграммы базы данных. Процедура запуска показана на (рис. 8.3).
Рис. 8.3. Запуск мастера построения диаграмм баз данных
Находясь в окне SQL Server Enterprise Manager, выберите интересующую нас базу данных real estateSQL и сделайте щелчок по пикто115
грамме Diagrams, которая находится в правой части окна (рис.8.2). В строке меню Enterprise Manager выберите пункт Действие, а в открывшемся списке пункт New Database Diagram (рис. 8.3). 8.2.2. Работа с мастером построения схемы данных Появится первое окно мастера (рис. 8.4). Оно носит чисто информационный характер и не требует введения никаких параметров.
Рис. 8.4. Первое окно мастера построения диаграмм баз данных
Щелчок по кнопке Далее приведет нас к следующему окну (рис.8.5). В нем разработчику необходимо выбрать таблицы, которые будут включены в схему данных, а также указать, следует ли показывать в схеме данных связи между таблицами. Обратите внимание на то, что база данных real estateSQL кроме таблиц, перенесенных из Microsoft Access, содержит еще и системные таблицы SQL сервера.
Рис. 8.5. Второе окно мастера построения диаграмм баз данных
Все эти таблицы отображены в левом окне. Перенесите в правое окно только Ваши, используя для этого кнопку Add. Обязательно поставьте флажок в поле Add related tables automatically, иначе от полученной 116
мастером схемы данных будет мало толку. Щелчок по кнопке Далее приведет нас к очередному информационному окну (рис. 8.6).
Рис. 8.6. Третье окно мастера построения диаграмм баз данных
Это последнее окно мастера. Щелчок по кнопке Готово запускает процесс построения, результаты которого Вас не разочаруют (рис. 8.7).
Рис. 8.7. Схема данных базы real estateSQL
В базе данных Access было три запроса. Попробуем убедиться в том, что все они успешно преобразованы в хранимые процедуры и виды SQL Server. Для этого вернемся к рисунку 8.2 и сделаем щелчок по значку Stored Procedures. Нас ждет разочарование. На месте двух хранимых процедур с параметрами нет ничего. Об ошибках преобразования запроса Document нам уже сообщило окно, изображенное на рисунке 7.29. А о причинах отсутствия хранимой процедуры Flats можно подробно узнать из отчета о преобразовании в формат SQL Server (рис. 7.30). 117
Заглянем в раздел Views окна SQL Server Enterprise Manager (рис. 8.2). 8.2.3. Успешное преобразование запроса Access в вид MS SQL Первая серьезная удача (рис. 8.8). Запрос Microsoft Access с именем Area конвертирован в представление (вид) Area.
Рис. 8.8. Успешная конвертация запроса Area
Рассмотрим полученный текст на Transact-SQL целиком: CREATE VIEW dbo.Area AS SELECT dbo.street.NAME, dbo.street.SIGN, dbo.building.HOUSE, dbo.distict.AREA, dbo.building.LAND, dbo.building.YEAR, dbo.building.WEAR, dbo.wall.WALL, dbo.building.SQUARE FROM dbo.wall INNER JOIN dbo.distict INNER JOIN dbo.street INNER JOIN dbo.building ON dbo.street.STREET = dbo.building.STREET ON dbo.distict.DISTRICT = dbo.building.DISTRICT ON dbo.wall.MATERIAL = dbo.building.MATERIAL WHERE (dbo.distict.AREA = 'Кировский')
А вот текст запроса Microsoft Access: SELECT street.NAME, street.SIGN, building.HOUSE, distict.AREA, building.LAND, building.YEAR, building.WEAR, wall.WALL, building.SQUARE FROM wall INNER JOIN (distict INNER JOIN (street INNER JOIN building ON street.STREET = building.STREET) ON distict.DISTRICT = building.DISTRICT) ON wall.MATERIAL = building.MATERIAL WHERE (((distict.AREA)="Кировский"));
Отличие диалекта Access SQL от Transact-SQL по конструкциям данного примера незначительно, именно поэтому мастер преобразования легко справился с поставленной задачей. Новое для Вас – аббревиату118
ра DBO (Data Base Owner). Под ней скрывается специальный пользователь, обладающий максимальными правами в этой базе данных. 8.3. Исправление ошибок мастера преобразования Попробуем разобраться с ошибкой, показанной на рисунке 7.31. Microsoft Access сообщает: ”Не существует источник записей flats, указанный в форме”. Мастеру преобразования не удалось справиться с написанием хранимой процедуры с двумя параметрами. Выполним эту работу сами! 8.3.1. Создание хранимой процедуры с параметрами Сделаем щелчок правой кнопкой мыши по значку Stored Procedures (рис. 8.2). В появившемся меню выберем пункт New Stored Procedure. Появится окно (рис. 8.9).
Рис. 8.9. Окно создания новой хранимой процедуры
В поле Text разместим написанную на Transact-SQL процедуру с параметрами: CREATE PROCEDURE dbo.Flats(@StreetSql SmallInt, @HouseSql nVarChar (10)) AS SELECT TOP 100 PERCENT dbo.flat.STREET, dbo.flat.HOUSE, dbo.flat.FLAT, dbo.flat.STOREY, dbo.flat.ROOMS, dbo.flat.SQUAREFLAT, dbo.flat.DWELL, dbo.flat.BRANCH, dbo.flat.BALCONY, dbo.flat.HEIGHT, dbo.flat.ACCOUNT, dbo.account.FAMILY, dbo.account.NAME, dbo.account.SECOND, dbo.account.PASPORT FROM dbo.account INNER JOIN dbo.flat ON dbo.account.ACCOUNT = dbo.flat.ACCOUNT WHERE (dbo.flat.STREET = @StreetSql) AND (dbo.flat.HOUSE = @HouseSql) ORDER BY dbo.flat.FLAT GO
Как Вы помните, на основании запроса flats основана форма Flats, в которой отображаются все квартиры, расположенные в здании. Для указания адреса этого здания нам понадобятся два параметра @StreetSql
119
(номер улицы) и @HouseSql (номер дома). Механизм передачи значений этим параметрам реализован довольно просто. Запустим файл real estateCS.adp и откроем в конструкторе форму Flats (рис. 8.10). Щелчком правой кнопки мыши откроем также окно свойств этой формы. Вид этого окна в проекте Access (файл real estateCS.adp) несколько отличается от вида в базе данных Access (файл real estate.mdb).
Рис. 8.10. Окно свойств формы в проекте Access
В поле Входные параметры поставьте строку: @StreetSql SmallInt=[Forms]![Building]![Street], @HouseSql nVarChar(10)=[Forms]![Building]![House]
Запустите форму Building, а из нее форму Flats. На экране появится список квартир в здании. Удача? Нет! Корректировать данные эта форма не дает! Правила обновления данных форм в проекте Access отличаются от правил обновления Microsoft SQL Server. Ведь ядро базы данных совсем иное. В форме, основанной на хранимой процедуре с параметрами, создающей объединение из двух таблиц, могут быть обновлены только поля из одной из них, причем при условии, что она указана в свойстве формы Однозначная таблица (рис. 8.10). В нашем случае таблиц действительно две. Это flats и account. 8.3.2. Обновление данных в форме с двумя таблицами Положение сложное, но из него есть два выхода: - переделать интерфейс проекта Access. Разбить форму Flats на три формы. Так чтобы каждая из них работала только с одной таблицей и вызывалась одна из другой. Квартира Проживающие Лицевой счет. 120
- вернуться к исходному файлу real estate.mdb и изменить структуру базы данных. Соединить таблицы flat и account в одну. На работе исходного приложения это никак не отразится. Уничтожить базу данных real estateSQL SQL сервера при помощи SQL Server Enterprise Manager и снова запустить мастер преобразования в формат SQL Server. Вернемся к исходному файлу real estate.mdb и пойдем по второму пути. На мой взгляд, он приведет к конечному результату значительно быстрее. Перенесем все поля из таблицы account в таблицу flat, открыв ее в конструкторе таблиц (рис. 8.11).
Рис. 8.11. Модифицированная таблица квартир
Рис. 8.12. Схема данных Access после корректировки 121
Схема исходной базы Microsoft Access после слияния таблиц несколько изменится (рис. 8.12). Снова запустим мастер преобразования в формат SQL Server. Не закрывая проект Microsoft Access, откроем в конструкторе нашу таблицу flat. Перед Вами совсем другая картинка (рис. 8.13). Другой тип данных, указана длина поля, а также имеется возможность контролировать заполнение значений. Не забывайте, что это таблица SQL сервера, связанная с проектом Access.
Рис. 8.13. Вид таблицы квартир в проекте Access
Изменится и вид диаграммы базы real estateSQL SQL сервера (рис. 8.14). Исчезла таблица account и ее связь с таблицей flat.
Рис. 8.14. Окно диаграммы real estateSQL после корректировки
122
В этом случае не следует забывать про то, что пользователь может занести в базу данных две квартиры с одинаковым номером лицевого счета. Следует лишить его этой возможности. Средств для этого у Вас достаточно, только правильно воспользуйтесь ими. Один из вариантов будет рассмотрен в главе 8.4. Но и это еще не все. Необходимо внести изменения в хранимую процедуру Flats (рис.8.9). Мастер по-прежнему не в силах правильно преобразовать запрос. Таблица теперь одна, следовательно, текст процедуры будет попроще: CREATE PROCEDURE dbo.Flats(@StreetSql SmallInt, @HouseSql nVarChar (10)) AS SELECT TOP 100 PERCENT dbo.flat.STREET, dbo.flat.HOUSE, dbo.flat.FLAT, dbo.flat.STOREY, dbo.flat.ROOMS, dbo.flat.SQUAREFLAT, dbo.flat.DWELL, dbo.flat.BRANCH, dbo.flat.BALCONY, dbo.flat.HEIGHT, dbo.flat.ACCOUNT, dbo.flat.FAMILY, dbo.flat.NAME, dbo.flat.SECOND, dbo.flat.PASPORT FROM dbo.flat WHERE (dbo.flat.STREET = @StreetSql) AND (dbo.flat.HOUSE = @HouseSql) ORDER BY dbo.flat.FLAT GO
Корректировку можно выполнить в окне Stored Procedure, которое открывается в SQL Server Enterprise Manager (рис. 8.2). Но, на мой взгляд, конструктор запросов проекта Microsoft Access лучше подходит для этого (рис. 8.15), поскольку разработчик может фактически и не владеть знаниями по Transact-SQL.
Рис. 8.15. Окно конструктора запросов из проекта Microsoft Access
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. Список таблиц этой базы данных откроется в правой части окна.
Рис. 8.16. Запуск SQL Server Enterprise Manager
Сделаем щелчок правой кнопкой мыши по имени таблицы flat. На экране появится меню, содержащее несколько пунктов. Нам необходимо выбрать Design Table (конструктор таблицы). Следующее окно (рис. 8.17) позволит нам добавить в нее поля Family, Name, Second и Pasport из таблицы account, указав тип данных и их длину. Описание полей заносится на вкладку Columns в раздел Description. Таблицу account отныне можно удалить. Сделайте щелчок по ее имени (рис. 8.16) правой кнопкой мыши, и в появившемся меню выберите пункт Удалить. Перед удалением таблицы account перенесите все
124
данные из нее в таблицу flat, разумеется, если они там есть. Найдите способы переноса данных самостоятельно.
Рис. 8.17. Таблица flat в конструкторе SQL Enterprise Manager
Рис. 8.18. Таблица flat в конструкторе Microsoft Access 125
Добавить поля в таблицу flat можно и в проекте Access (рис. 8.18). Открывать окно конструктора таблиц в Access Вы уже умеете. Для модификации таблицы можно выбрать любой из этих двух способов. 8.3.3. Создание хранимой процедуры средствами Access Настала очередь разобраться с ошибкой, из-за которой в режиме клиент-сервер не формируется документ. Содержание этой ошибки показано на рисунке 7.29. Она возникла в результате того, что мастер преобразования вообще не конвертирует в SQL Server запросы с параметрами, к тому же в состав запроса включен еще и подзапрос. В данном случае нам необходимо написать хранимую процедуру с тремя параметрами, а после этого исправить еще и отчет Access. Его название – Document. Правильно работающая хранимая процедура будет иметь вид (рис 8.19).
Рис. 8.19. Хранимая процедура Document CREATE PROCEDURE dbo.Document(@StreetSql smallint, @HouseSql nvarchar(10), @FlatSql smallint) AS SELECT dbo.street.NAME AS NameST, dbo.street.SIGN, dbo.flat.HOUSE, dbo.flat.FLAT, dbo.flat.STOREY, dbo.flat.ROOMS, dbo.flat.SQUAREFLAT, dbo.flat.DWELL, dbo.flat.BRANCH, dbo.flat.BALCONY, dbo.flat.HEIGHT, dbo.flat.ACCOUNT, dbo.flat.FAMILY, dbo.flat.NAME AS Expr1, dbo.flat.SECOND, dbo.owners.NUMBER, dbo.owners.FAMILY AS Expr2, dbo.owners.NAME AS Expr3, dbo.owners.SECOND AS Expr4, dbo.owners.BORN, dbo.owners.STATUS, dbo.street.STREET, dbo.street.FIRST FROM dbo.street INNER JOIN dbo.flat ON dbo.street.STREET = dbo.flat.STREET INNER JOIN dbo.owners ON dbo.flat.STREET = dbo.owners.STREET AND dbo.flat.HOUSE = dbo.owners.HOUSE AND dbo.flat.FLAT = dbo.owners.FLAT WHERE (dbo.flat.STREET = @StreetSql) AND (dbo.flat.HOUSE = @HouseSql) AND (dbo.flat.FLAT = @FlatSql) ORDER BY dbo.owners.NUMBER GO 126
Вы, наверное, решили, что текст этой процедуры написан в текстовом редакторе разработчиком, хорошо владеющем Transact-SQL. Ошибаетесь! Без конструктора запросов Microsoft Access не обошлось (рис. 8.20).
Рис. 8.20. Конструирование хранимой процедуры Document
При создании хранимой процедуры Document нам понадобится информация из таблиц street, flat и owners. В MDB-приложении вместо таблицы flat использовался запрос flats, который содержал данные по техническим характеристикам всех квартир, расположенных в здании. В данном случае следует обойтись без запроса flats. В окне проекта real estateCS выберите значок Запросы. Он находится в списке Объекты. Нажмите кнопку Создать на панели инструментов этого окна. Появится окно «Новый запрос» (рис. 8.21). Выберите в нем пункт «Конструктор сохраненной процедуры» и нажмите кнопку Ok. На экране появится окно, в котором нам предстоит сконструировать текст сохраненной процедуры Document (рис. 8.22). Список таблиц базы 127
real estateSQL уже заботливо приготовлен конструктором. Выберем три наших таблицы. Они появятся в верхней части окна вместе со связями. Закройте окно «Добавление таблицы».
Рис. 8.21. Запуск конструктора сохраненной процедуры
Рис. 8.22. Выбор таблиц для сохраненной процедуры 128
Отметьте флажками те поля в таблицах street, flat и owners, которые должные попасть в текст сохраненной процедуры. Они сразу будут отображены в таблице, расположенной в нижней части окна (рис. 8.22). Для полей STREET, HOUSE и FLAT в столбец «Критерий» занесите параметры будущей процедуры =@StreetSql, =@HouseSql и =@FlatSql. Сделайте щелчок по пиктограмме основного окна Microsoft Access. Появится третья часть окна конструктора с текстом сохраненной процедуры (рис. 8.20). Некоторые поля в выбранных таблицах имеют одинаковые названия, поэтому конструктор использует понятие псевдоним (Expr1, Expr2, Expr3 и т.д.). Если у поля есть псевдоним, то именно его следует использовать в форме или отчете проекта Microsoft Access, а это означает, что переделка отчета Document неизбежна. Откроем его в конструкторе отчетов (рис. 8.23).
Рис. 8.23. Вид отчета Document в конструкторе после внесения исправлений
В первую очередь в поле Входные параметры поставим строку: @StreetSql SmallInt=[Forms]![Building]![Street], @HouseSql nVarChar(10)=[Forms]![Building]![House], @FlatSql SmallInt=[Forms]![Flats]![Flat]
Названия всех полей, имеющих псевдонимы, заменим псевдонимами: Expr1, Expr2, Expr3, Expr4. 129
Запустим отчет Start Building Flats Документ (рис 8.24).
Рис. 8.24. Вид отчета Document после внесения исправлений
Обратите внимание на то, что вычисляемое поле Address выдает неправильную информацию. Вместо названия проспекта мы видим название отчета. Для устранения этой ошибки вернемся к запросу (рис. 8.20) и дадим псевдоним полю Name. Пусть это будет имя NameST. Остается исправить выражение для вычисляемого поля Address (рис. 8.25).
Рис. 8.25. Работа с вычисляемым полем Address
Свойство Данные для вычисляемого поля Address должно иметь вид: =IIF([First]=Истина;Trim([NameSt]+' '+[Sign]+', дом '+(Trim([House]))+', кв.'+ Trim(Str([Flat])));Trim([Sign]+' '+[NameSt])+', дом '+(Trim([House]))+', кв.'+ Trim(Str([Flat])))
До модификации эта строка была такой: =IIF([First]=Истина;Trim([street.Name]+' '+[Sign]+', дом '+(Trim([House]))+', кв.'+ Trim(Str([Flat])));Trim([Sign]+' '+[street.Name])+', дом '+(Trim([House]))+', кв.'+ Trim(Str([Flat])))
Модификация выражения минимальна! Заменим street.Name на NameST. Это связано с тем, что в выбранных таблицах для сохраненной процедуры есть несколько полей с названием Name. Исключим всякую путаницу и полностью перейдем на псевдонимы. Отчет готов!
130
Осталось разобраться с последней ошибкой, возникающей при изменении адреса здания (рис 8.26). Пусть нам необходимо заменить адрес здания с “Проспект 60 Лет Октября” на “Улица Авроры”. Проект Microsoft Access выдаст одну за другой две ошибки. Дело вот в чем. Для преобразования связей между таблицами и целостности данных мы использовали DRI - Declarative Referential Integrity (рис. 7.24). На мой взгляд это более легкий путь, чем использование триггеров, так как хотя бы при одном неудачном преобразовании триггера, нам пришлось значительно углубиться в изучение Transact-SQL, что для начинающего разработчика в общем-то нежелательно. Теперь же несколько щелчков мышью исправят все дело. DRI действует так же, как целостность данных Access, однако не обладает возможностями каскадного обновления и удаления. Это как раз и явилось причиной ошибки преобразования.
Рис. 8.26. Ошибка, возникающая при изменении адреса здания
Рис. 8.27. Очередная корректировка схемы данных MS SQL Server 131
Выведем на экран диаграмму базы данных real estateSQL Microsoft SQL Server (рис. 8.27). О том как это сделать – рассказано в главе 8.2. Нам необходимо внести изменения в связи между таблицами: Street – Building, Biulding – Flat и Flat – Owners. Начнем со связи между Building и Flat. Сделайте по ней щелчок правой кнопкой мыши. Появится меню, в котором надо выбрать пункт Properties (рис. 8.28). Перед Вами окно свойств связей. Откроем вкладку Relationships. Эта вкладка окна свойств содержит набор свойств связей между таблицами в базе данных. Имя таблицы flat, выделенной на схеме базы данных. Если на схеме выделено несколько таблиц, отображается имя первой таблицы. Выделенная связь (Selected relationship) начинается со значка. Значок бесконечности указывает, что таблица участвует в связи как адресующая таблица. (Адресующая таблица имеет ограничение внешнего ключа.) New - нажмите эту кнопку, если нужно создать новую связь для выделенной Рис.8.28. Окно Properties. таблицы базы данных. Delete – нажмите эту кнопку, чтобы удалить выделенную связь из базы данных. Пользователь имеет возможность переименовать связь, вводя в это поле новое имя. Таблица первичного ключа (Primary key table) содержит имена столбцов, которые составляют первичный ключ. Таблица внешнего ключа (Foreign key table) содержит имена столбцов, которые составляют внешний ключ. Check existing data on creation. Применение ограничения к данным, уже существующим в базе данных, при добавлении связи в таблицу внешнего ключа. В нашем случае флажок в это поле ставить не следует. Мы не добавляем связей между таблицами.
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.
Рис. 8.29. Отключение вывода на экран системных объектов
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 №
Функция
1
Abs()
2
Acos()
3
Asin()
4
Atan()
5
Atn2()
6
Ceiling()
7 8
Cos() Cot()
9
Degrees()
10
Exp()
11
Floor()
12
IsNumeric
13
Log()
14
Log10()
15 16
Pi() Power()
17
Radians()
134
Описание функции
Пример
Возвращает абсолютную величину Abs(-345.6) числа Возвращает угол в радианах, косинус Acos(0.5) которого равен указанному значению Возвращает угол в радианах, синус коAsin(0.5) торого равен указанному значению Возвращает угол в радианах, тангенс Atan(1) которого равен указанному значению Возвращает угол в радианах, тангенс которого равен частному от деления первого аргумента на второй, с учетом Atn2(3,3) квадранта, задаваемого двумя аргументами Возвращает ближайшее целое число, Ceiling(-15.2) большее или равное значению аргуCeiling (13.6) мента Возвращает косинус угла, в радианах Cos(1) Возвращает котангенс угла, в радианах Cot(1) Выполняет преобразование угла из Degrees(1.0) радиан в градусы Возвращает значение экспоненты Exp(1) Округляет число до ближайшего миниFloor(-15.2) мального целого (см. примеры) Floor(13.6) Проверяет, имеет ли указанное выражение числовой тип, если имеет, то IsNumeric(1.2) функция возвращает 1. В противном случае 0. Возвращает натуральный логарифм Log(10) числа Возвращает натуральный логарифм Log10(100) числа Возвращает значение π Pi() Возводит число в степень Power(3,3) Выполняет преобразование угла из Radians(90.0) градусов в радианы
Значение 345.6 1.0471976 0.5235988 0.7853982
0.7853982
-15 14 0.5403023 0.6420926 57.29578 2.7182818 -16 13 1
2.302585 2.0 3.1415926 27 1.5707963
№ 18
Функция
Описание функции
Rand()
Возвращает случайное число в диапазоне от 0 до 1
19
Sign()
20
Sin()
21 22 23
Sqrt() Square() Tan()
Пример
Sign(-10.1) Sign(0) Sign(10.1)
0.8529751 (произвольное) -1 0 1
Sin(1)
0.8414710
Sqrt(2) Square(1.2) Tan(1)
1.4142136 1.44 1.5574077
Rand()
Возвращает 1 для положительного числа, 0 для нулевого, -1 для отрицательного числа Возвращает синус угла, выраженного в радианах Возвращает квадратный корень Выполняет возведение в квадрат Возвращает тангенс угла, в радианах
Значение
Другие, полезные для начинающего разработчика функции, приведены в табл. 8.2 Таблица 8.2. Другие функции SQL Server 2000 №
Функция
1
GetDate()
2
Day()
3
Month()
4
Char()
5
Year()
6
Len()
7
Lower()
8
Upper()
9
Replicate()
10
Substring()
11 12
Rtrim() Ltrim()
13
Reverse()
14
Str()
Описание функции Возвращает текущую системную дату и время Возвращает день из значения даты Возвращает месяц из значения даты Возвращает как текст знак, соответствующий коду ASCII Возвращает год из значения даты Возвращает длину строки в символах Переводит текст в нижний регистр Переводит текст в верхний регистр Выполняет тиражирование строки указанное число раз Возвращает подстроку из строки. Необходимо указать с какого символа и сколько символов. Удаляет пробелы после текста Удаляет пробелы перед текстом Возвращает строку, символы которой записаны в обратном порядке Преобразует число в текст
Пример
Значение
GetDate()
12.03.2004 09:33:21.153
Day(GetDate())
12
Month(GetDate))
3
Char(37)
% (процент)
Year(GetDate())
2004
Len(‘Сервер’)
6
Lower(‘aSD’)
asd
Upper(‘aSD’)
ASD
Replicate(‘Ado’,2)
AdoAdo
Substring (‘abcdef’,2,3)
bcd
Rtrim(‘abcd ‘) Ltrim(‘ abcd’)
abcd abcd
Reverse(‘РОЗА’)
АЗОР
Str(1234.56)
1234.56
135
8.4. Замена англоязычных сообщений СУБД на русские В предыдущей главе после выполнения слияния таблиц flat и account встал вопрос о том, что пользователь отныне может занести две и более квартиры, имеющие один номер лицевого счета. Вашему вниманию предлагается один из способов решения этой проблемы. Он заключается в создании уникального индекса в таблице flat по полю Account и в перехвате системной ошибки Microsoft Access с переводом ее на русский язык. Запустите MS SQL Server Enterprise Manager и выполните действия, показанные на рис. 8.30.
Рис. 8.30. Механизм открытия вкладки управления индексами
На экране дисплея появится окно Manage Indexes (рис. 8.31). Таблица flat после работы мастера преобразования получила два индекса. Создадим третий по полю Account. Для этого сделаем щелчок по кнопке New.
Рис. 8.31. Окно управления индексами SQL Server Enterprise Manager 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).
Рис. 8.34. Перехват системного сообщения в форме Flats
Номер системной ошибки (рис. 8.33) можно найти в документации по Access или узнать его самому (это значение параметра DataErr). В данном случае номер ошибки - 2601. Результат работы процедуры показан на рис. 8.35. Смело можно утверждать, что наш пользователь теперь сразу же поймет, что он натворил. Номер ошибки удобно записать в виде константы. А сообщение на русском языке в виде переменной (StrMsg). Для других похожих процедур, в таком Рис. 8.35. Сообщение об ошибке случае, понадобится лишь небольшая переделка текста. Параметру Response можно присвоить одно из двух значений встроеннных констант VBA. Первое (acDataErrDisplay) позволит Microsoft Access продолжить работу в штатном режиме, сообщив о системной ошибке на английском 138
языке. Второе (acDataErrContinue) – отключает вывод системной ошибки, и как Вы видели, у разработчика появляется возможность предупредить пользователя на русском языке. После отказа от изменения номера лицевого счета появится еще одно системное сообщение (номер ошибки 2169), но его перехватывать нет необходимости. Оно и так вполне понятно (рис.8.36).
Рис. 8.36. Системное сообщение Microsoft Access на русском языке
Если у Вас нет под рукой документации по Access 2002 – воспользуйтесь для определения номера ошибки процедурой: Private Sub Form_Error(DataErr As Integer, Response As Integer) Dim StrMsg As String StrMsg = "Номер ошибки " & DataErr & Chr(13) & _ "Нажмите кнопку OK" & Chr(13) & _ "В следующем окне появится само сообщение" MsgBox StrMsg, vbOKOnly + vbInformation, "Обнаружена ошибка" Response = acDataErrDisplay End Sub
Ее надо поставить на время отладки формы вместо одноименной процедуры, приведенной на рис. 8.34. Результат работы этой процедуры имеет вид (рис. 8.37). Текст сообщения состоит из трех строк, хотя в качестве параметра в MsgBox была передана одна строка StrMsg. Все дело в «возврате каретки» Chr(13). Второй параметр для MsgBox определяет количество кнопок в окне. У нас используется одна (vbOKOnly), а может быть три. Разработчик может также выбрать Рис. 8.37. Номер ошибки определен тип значка, который появится в левом верхнем углу окна. Наш значок - vbInformation - Вы видите на рисунке. И, наконец, системные сообщения не отключены (Response = acDataErrDisplay). В следующем окне будет выведен системный текст.
139
8.5. Резервное копирование базы данных При эксплуатации на предприятии приложения клиент-сервер перед администратором стоит задача периодического создания резервных копий базы данных. Клиентская часть приложения претерпевает изменения только при модификации программы, а серверная часть может изменяться ежеминутно. Резервное копирование является такой же важной частью эксплуатации сервера баз данных, как и управление системой безопасности. Создавать резервные копии администратору базы данных следует по многим причинам. Основная – сбои в аппаратной части сервера. Например, выход из строя жесткого диска. Независимо от того, по какой причине были потеряны данные, резервное копирование поможет свести к минимуму потери предприятия и вернуть информационную систему в рабочее состояние. Резервная копия базы SQL Server представляет собой полный набор данных, хранившихся в этой базе в определенный момент времени. Обычно для хранения резервных копий используются носители, специально для этого предназначенные (LS, ZIP,Flash, жесткий диск другого компьютера и т.д.). Если сервер будет уничтожен физически, администратор всегда сможет восстановить базу данных из резервной копии на другом сервере. Кстати, по крайней мере, один раз Вам придется это сделать при переносе базы данных с компьютера разработчика на сетевой сервер при запуске приложения клиент-сервер в опытную эксплуатацию. Файл резервной копии базы данных является обычным файлом операционной системы. Его можно свободно копировать на другой диск или компьютер локальной вычислительной сети. При значительных размерах рекомендуется его архивация (ARJ, RAR, ZIP и т.п.). Обычный архиватор может уменьшить размер резервной копии в 9 - 11 раз.
Рис. 8.38. Назначение устройства резервного копирования
140
Лучше всего резервные копии хранить отдельно от сервера и иметь их несколько штук. В небольшом предприятии – по числу рабочих дней в неделю. Само же резервное копирование удобно выполнять после окончания рабочего дня. Назначим логические устройства для резервного копирования нашей базы данных real estateSQL (рис. 8.38). На SQL сервере MASTER (Windows NT) откроем папку Management и сделаем щелчок правой кнопкой мыши по пиктограмме Backup. Появится меню. Выберем в нем первый пункт – New Backup Device. Перед Вами очередное окно (рис. 8.39).
Рис. 8.39. Окно назначения нового логического устройства
Укажите имя логического устройства и имя файла, в который будет выгружена резервная копия базы данных. Для имени файла указывается полный путь и расширение .BAK, а основной части имени лучше всего оставить имя самой базы данных. Следующее окно (рис. 8.40) демонстрирует наличие трех логических устройств для выгрузки базы данных. Первое устройство представляет собой жесткий диск компьютера. Резервная копия будет помещена в папку по умолчанию: C:\Program Files\Microsoft SQL Server\MSSQL\BACKUP\real estateSQL.bak
Рис. 8.40. Логические устройства резервного копирования
141
Разобраться с остальными логическими устройствами для Вас не составит никакого труда. Они представляют собой внешние накопители. Второе – Flash Drive 512 Mb, а третье - Zip Disk 250 Mb. Для создания резервной копии базы real estateSQL используем возможности SQL Server Enterprise Manager (рис. 8.41). Databases Все задачи Backup Database. Появится окно параметров (рис. 8.42).
Рис. 8.41. Начало процесса создания резервной копии базы данных
Рис. 8.42. Параметры резервной копии базы данных
142
Рассмотрим элементы управления, имеющиеся в этом окне. Database. В раскрывающемся списке содержатся названия всех баз данных, имеющихся на сервере. По умолчанию выбрана база данных Master. Заменим ее на real estateSQL. Name. Это имя будет присвоено создаваемой резервной копии. При восстановлении администратор будет выбирать нужную копию именно по этому имени. Description. Содержит краткий комментарий к резервной копии. Информация носит вспомогательный характер. Backup. С помощью этого переключателя выбирается тип резервной копии. Будет создана полная или разностная копия базы данных. Остановимся на полной копии. Add. Выбор логического устройства для копии. Откроется дополнительное окно (рис. 8.43).
Рис. 8.43 Окно выбора логического устройства
Overwrite. Группа переключателей позволяет определить, будет ли созданная резервная копия при сохранении ее на логическое устройство резервного копирования записываться поверх имеющихся данных или добавляться в конец. Append to media – новые данные будут добавляться к имеющимся. Overwrite existing media – новые данные будут записаны поверх имеющихся. Выберите второй Рис. 8.44 Индикатор прогресса пункт – ошибок в отсутствии опыта наделаете меньше! Все параметры для создания резервной копии выбраны. Сделайте щелчок по кнопке Ok, и процесс выгрузки базы данных real estateSQL на логическое устройство Zip250 будет начат (рис. 8.44). 143
8.6. Перенос базы данных на рабочий сервер Наступил очередной этап в жизни Вашего приложения. Оно успешно работает на отдельном компьютере, но уже в режиме клиент-сервер. Осталось перенести его серверную часть на основной сервер предприятия HPLH3. Пусть это будет контроллер домена Department с операционной системой Microsoft Windows 2000 Server SP-4. Выполните на этом сервере генерацию Microsoft SQL Server 2000 Standard Edition. Этот процесс практически ничем не отличается от процесса генерации Developer Edition, описанного в главе 7.2, но на этом незначительном отличии мне хочется сделать акцент, касающийся выбора модели лицензирования Microsoft SQL Server, поскольку этот вопрос необходимо решить еще до приобретения SQL Server. Ваши грамотные действия помогут сэкономить вашей организации немалые средства. При генерации Microsoft SQL Server 2000 Standard Edition появится одно окно, которого нет в SQL Server 2000 Developer Edition (рис. 8.45). Корпорация Microsoft традиционно предлагает две модели лицензирования: на процессор сервера (Processor License for) и на клиентское подключение (Per Seat). Лицензирование на клиентское подключение требует, чтобы каждый клиент, подключающийся к серверу, имел собственную лицензию на подключение. Лицензирование на клиентское подключение более выгодно, если пользователи работают с несколькими серверами SQL Server 2000. ЛиценРис. 8.45. Выбор модели лицензирования зирование на процессор сервера представляет интерес при работе с одним SQL Server 2000. Считайте, выбирайте и докладывайте начальству! Но помните, что, если Вы при установке выбрали модель Processor License For, то некоторое время спустя Вы можете вполне легально перейти к модели лицензирования Per Seat for. Обратной дороги нет. Лицензирование на процессор сервера становится еще более экономичным, если пользователи работают с сервером не постоянно, а эпизодически. В этом случае в сети 144
может работать 200 пользователей, а количество одновременных соединений с сервером может не превышать 50. В этом случае достаточно приобрести лицензию на 50 подключений, а не на 200. Экономить, так экономить! Выгрузите со своего компьютера на логическое устройство Zip250 или любое другое базу данных real estateSQL. Создайте на основном сервере HPLH3 аналогичное логическое устройство и запустите процесс восстановления Вашей базы данных (рис. 8.46). Выбор требуемых параметров базы данных не представляет никаких сложностей (рис. 8.47).
Рис. 8.46 Перенос на основной сервер HPLH3 базы данных real estateSQL
Рис. 8.47 Выбор параметров восстановления базы данных
Если компьютер разработчика подключен к вычислительной сети предприятия, Вам необходимо только переопределить сведения о подключении для проекта Microsoft Access c помощью команды Подключе145
ние из меню Файл. На остальные же рабочие станции следует установить Microsoft Access 2002 и перенести на каждую файл проекта Real Estate CS 2002.adp, выполнив аналогичное подключение к MS SQL Server. Небольшая особенность подключения – проект Microsoft Access должен быть запущен (рис. 8.48).
Рис. 8.48 Начало работы проекта Microsoft Access
Закройте главную кнопочную форму проекта, нажав кнопку STOP, и оказавшись в главном меню Access при открытом проекте Real Estate CS 2002 (рис. 8.49), запустите окно подключения (рис. 8.50).
Рис. 8.49 Запуск окна подключения проекта MS Access к MS SQL Server
146
В поле Specify or enter a server name введите имя сервера, на который Вы установили MS SQL Server (HPLH3). Если рабочая станция «видит» сервер – раскройте в пункте 3 список баз данных и выберите в нем real estateSQL. Рекомендую протестировать соединение, нажав кнопку Test Connection. В завершение этой главы – небольшое теоретическое отступление. Microsoft Access 2002 предоставляет пользователю интерфейс программирования OLE DB, который можно с успехом использовать для доступа к базе данных Microsoft SQL Server 2000 по сеРис. 8.50 Окно подключения к MS SQL Server ти и через интернет. В архитектуре OLE DB приложения, получающие доступ к данным, называют потребителями данных, а программы, обеспечивающие внутренний доступ к данным, называют средствами доступа к базам данных. В окне (рис. 8.50) мы как раз и получили доступ к базе данных через средство доступа Microsoft OLE DB Provider для Microsoft SQL Server, которое устанавливается автоматически при установке Microsoft Office XP (2002). Также автоматически устанавливается OLE DB Provider для ODBC Drivers и OLE DB Provider для Oracle. 8.7. Система безопасности базы данных Когда все необходимые действия по разработке приложения клиентсервер закончены, можно запускать его в эксплуатацию. Сначала следует обеспечить пользователям доступ к базе данных real estateSQL. Руководство ждет от Вас грамотных действий. Плохо продуманная система безопасности не сможет предотвратить несанкционированный доступ к данным или их повреждение. В главе 7.2 мы сгенерировали MS SQL Server, работающий в смешанном режиме аутентификации. В этом случае помимо аутентификации средствами Windows NT пользователи могут прибегнуть к средствам 147
MS SQL Server. Это необходимо тогда, когда пользователь не имеет учетной записи в домене Windows NT. Мне больше нравится смешанный режим аутентификации и вот почему. В организации, как правило, имеются два администратора: системный администратор и администратор базы данных, а все пользователи имеют в домене учетную запись. Благодаря этому администратор базы данных может использовать уже готовые учетные записи. Пройдя систему защиты операционной системы, где присутствуют ограничения на длину пароля, время его действия и ограничено количество попыток входа, пользователь получает разрешение на доступ к серверу. Разрешение на доступ к серверу не дает автоматического доступа к базе данных и ее объектам. На этом этапе в работу вступает администратор базы данных, который назначает пользователям права доступа в соответствии с занимаемой должностью. 8.7.1. Работа системного администратора Пройдем этап занесения нового работника с базой real estateSQL от начала до конца. В первую очередь добавим учетную запись в домен Department (рис. 8.51). Пуск Настройка Панель управления.
Рис. 8.51 Запуск окна «Администрирование»
Выберем в появившемся окне пункт Администрирование. Появится окно с тем же названием (рис. 8.52).
Рис. 8.52 Окно «Администрирование» 148
Нас интересует второй пункт: Active Directory – пользователи и компьютеры, который приведет к очередному окну (рис. 8.53). В левой части этого окна нам предстоит выбрать пункт меню Users. После чего в правой части окна появится список пользователей и групп домена Department. Добавим новую учетную запись, сделав щелчок мышью по пиктограмме (рис. 8.54).
. Появится окно для занесения нового пользователя
Рис. 8.53 Окно «Active Directory – пользователи и компьютеры»
Обратите внимание: мы работаем с компьютером HPLH3, который является контроллером домена Department. Это означает, что локальные учетные записи на HPLH3 отсутствуют. Все записи, которые будут занесены нами, относятся только к домену. Если в окне (рис.8.54) не будут заполнены все поля, то кнопка «Далее» так и останется погашенной, а ее необхоРис. 8.54. Занесение нового пользователя димо обязательно нажать для ввода пароля пользователя. Следующее окно, которое появится после ввода пароля, носит чисто информативный характер и здесь не приведено. Новый пользователь домена Department создан. Обеспечьте ему доступ к требуемым папкам и «передайте» его администратору базы данных. 149
8.7.2. Работа администратора базы данных Администратор базы данных, запустив Enterprise Manager, должен вывести на экран список пользователей MS SQL Server (рис. 8.55).
Рис. 8.55 Пользователи Microsoft SQL Server (HPLH3)
Этот рисунок несколько опередил события. Пользователя DEPARTMENT\Гурвиц в списке пока еще не должно быть. Выполним необходимые действия по занесению этой учетной записи (рис. 8.56).
Рис. 8.56. Занесение новой учетной записи SQL Server DEPARTMENT\Гурвиц
Используйте для занесения новой учетной записи в поле Name кноп, нажатие которой раскроет весь список пользователей домена ку 150
Department (рис. 8.57). Выберите ту учетную запись домена, которая Вам нужна, и нажмите кнопку «Добавить». Теперь пользователь Гурвиц получил доступ к SQL Server HPLH3. С первой вкладкой рисунка 8.56 покончено. Настало время перейти ко второй вкладке: Server Roles. В SQL Server 2000 появился новый механизм – роли. Всего имеется две группы ролей: роли сервера и роли Рис. 8.57. Выбор нового пользователя из списка базы данных. Рассмотрим сначала роли сервера. Включив учетную запись в ту или иную роль сервера Вы можете предоставить ей некоторый набор прав по администрированию SQL Server (рис. 8.58).
Рис. 8.58 Роли Microsoft SQL Server 2000
Набор ролей сервера ограничен. Рассмотрим их в том порядке, в котором они приведены на рис. 8.58. Bulk Insert Administrators – члены роли могут вставлять данные, не имея непосредственного доступа к таблицам. Database Creators – члены этой роли могут создавать новые базы данных, удалять и переименовывать имеющиеся. Disk Administrators – члены роли предназначены для обеспечения совместимости с предыдущими версиями SQL-сервер.
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 – могут выполнять резервное копирование базы. Вернемся к нашему пользователю DEPARTMENT\Гурвиц. Мы не включили его ни в одну из ролей сервера и базы данных. Если он запустит проект Microsoft Access Real Estate CS 2002 на своей рабочей станции, то его ждет разочарование (рис. 8.60), так как его роль в базе данных real estateSQL – public (рис. 8.59) – чисто символическая.
Рис. 8.60 Недостаток полномочий для работы с базой real estateSQL
Исправим существующее положение, добавив полномочий вновь созданному, практически бесправному, пользователю базы данных real estateSQL Department\Гурвиц (рис. 8.61).
Рис. 8.61 Доступ к окну свойств пользователя базы real estateSQL
Раскроем компонент базы данных real estateSQL Users. Двойной щелчок мышью откроет в центре окна двух пользователей. Первый – администратор базы данных (он же dbo) нас не интересует. Он создал 153
ее и является ее полноправным владельцем. А второй должен работать с этой базой. Какие права он имеет в настоящий момент (рис. 8.62)?
Рис. 8.62 Права доступа к базе данных нового пользователя
Опять мне пришлось немного забежать вперед и расставить флажки в нужных местах. Последуйте моему примеру – и у Вас все получится! Не забудьте про кнопку «Columns». Права доступа можно расставить на уровне столбцов любой таблицы (рис. 8.63).
Рис. 8.63. Права доступа нового пользователя на уровне таблицы Building
154
8.8. Управление блокировками При одновременной работе в сети нескольких пользователей в нашем варианте им не требуется предпринимать никаких действий по управлению блокировками, так как исходя из особенностей поставщика SQLOLEDB, Вам, как разработчику достается практически лишь один вид блокировки – оптимистическая блокировка на уровне записи. При этом модернизировать проект Microsoft Access не требуется. Рассмотрим этот вид блокировки на примере. Допустим, что два пользователя решили отредактировать имя Ивановой Марины Петровны, проживающей на Проспекте 60 лет Октября 102, кв.1 (рис. 8.64).
Рис. 8.64. Данные до одновременной корректировки с двух компьютеров
Пользователь компьютера 23.11.56 исправил Марину на Мариану и сделал это несколько раньше, чем пользователь компьютера 14.02.83, успешно завершив корректировку (рис.8.65). Пользователь 14.02.83 исправил Марину Рис. 8.65. Результаты корректировки, на Марию (рис. 8.66) и также ревыполненной с компьютера 23.11.56 шил завершить корректировку. 155
Рис. 8.66. Результат корректировки с компьютера 14.02.84
Завершение корректировки окончилось появлением сообщения о конфликте в работе двух пользователей (рис.8.67). Очевидно, что самое разумное решение в этом случае - просмотреть результаты корректировки, которую выполнил первый пользователь (рис. 8.68) и принять правильное решение, записав в базу данных либо свои изменения, либо изменения, сделанные Рис. 8.67. Окно «Конфликт записи» коллегой. Внимание. Рисунки 8.64 и 8.65 видит пользователь компьютера 23.11.56. Рисунки 8.66, 8.67 и 8.68 появятся на дисплее комРис. 8.68. Содержимое буфера обмена с результапьютера 14.02.83. тами корректировки пользователя 23.11.56 156
Для просмотра исправлений, выполненных первым пользователем, нажмите кнопку (рис.8.67) «Копировать в буфер». Все исправления окажутся в буфере обмена Office. Для просмотра содержимого буфера (рис.8.69) выберите в главном меню Microsoft Access пункт «Правка», а в открывшемся всплывающем меню – пункт «Буфер обмена Office». Для удобства просмотра все эти объекты собраны в один рисунок.
Рис. 8.69. Просмотр содержимого буфера обмена Office
И снова немного теории. Вы уже наверняка знаете, что при оптимистической блокировке, записи блокируются только на время их обновления (доли секунды), а при пессимистической блокировке – на период от начала корректировки до завершения обновления (значительный период времени). Мы уже выяснили, что проект Microsoft Access автоматически поддерживает оптимистическую блокировку MS SQL Server через ADO. Это огромная помощь разработчику, так как никому из пользователей не будет отказано в доступе к записи, пока она кем-то редактируется. Однако оптимистическая блокировка позволяет нескольким пользователям одновременно редактировать одну и туже запись, при этом в базу попадают изменения, выполненные последним пользователем. В некоторых случаях без пессимистической блокировки не обойтись! Например, продажа билетов на поезда дальнего следования. Но здесь нас ждет разочарование. Похоже, что текущие версии Microsoft Access и Microsoft SQL Server не позволяют использовать в проекте Access этот вид блокировки. Потратив уйму времени, мне так и не удалось найти приемлемого решения. Слово за Вами! 157
9. ЗАДАНИЯ НА КУРСОВОЙ ПРОЕКТ (РАБОТУ) Курсовой проект выполняется в несколько этапов. На первом этапе Вам предлагается разобраться в предметной области базы данных, выяснить какая информация и для чего используется. После этого – преобразовать недостаточно структурированную информацию в таблицы Microsoft Access 2002 и спроектировать структуру данных. Здесь же должен быть разработан проект будущего прикладного программного обеспечения. Предлагаемая формулировка заданий на курсовое проектирование представляет собой в лучшем случае лишь ту информацию, которую Вы получили бы со слов заказчика, и ни в коей мере не претендует на полноту и завершенность. Конкретизация и уточнение поставленной задачи возлагается на разработчика (студента). Может оказаться, что обеспечение всех потребностей возможного пользователя не может быть достигнуто за время, выделенное для выполнения курсового проекта (работы). В этом случае необходимо согласовать с преподавателем часть функций, составляющих ядро реального приложения. Второй этап представляет собой разработку прикладного программного обеспечения, в результате которого должен получиться однопользовательский законченный программный продукт, пригодный для опытной эксплуатации пользователем без участия разработчика. Рекомендуется провести его апробацию силами потенциального пользователя или обратиться к преподавателю. Третий этап предстоит пройти студентам, обучающимся на компьютерных специальностях. Он заключается в генерации MS SQL Server 2000 Developer Edition и преобразовании базы данных Access 2002 в базу данных MS SQL Server. В процессе работы мастера выдается отчет, содержащий подробное описание всех созданных объектов и перечень ошибок, возникших в ходе процесса. Скорее всего, третий этап потребует модификации как клиентской, так и серверной частей приложения. Желающие могут установить драйвер ODBC, позволяющий подключить любой другой по своему выбору программный продукт к базе данных MS SQL Server, и заново написать на нем клиентскую часть приложения. Четвертый этап – перенос приложения на действующий сервер реальной локальной вычислительной сети - выполняется при наличии технических возможностей кафедры. Хочу выделить некоторые требования, подтверждающие квалификацию разработчика прикладного программного обеспечения. Программный комплекс не должен терять работоспособности при некорректных действиях пользователя. В интерфейсе должны использоваться только термины, понятные пользователю. Появление англоязычных сообщений СУБД недопустимо. Язык диалога должен категорически исключить компьютерный сленг. 158
Вариант 1. Разработать прикладное программное обеспечение деятельности депо по ремонту пассажирских вагонов. Депо выполняет несколько видов ремонта. Деповской ремонт – после пробега вагоном 450 тыс. км. или два года эксплуатации (что наступит раньше). TO-2 – подготовка вагона к зимним или летним условиям эксплуатации. ТО-3 – текущее обслуживание – после пробега 150 тыс. км. или один год эксплуатации. Текущий ремонт – круглосуточно, при котором ремонтируются вагоны всех дорог России. Основные причины поступления вагона в текущий ремонт: неисправность колесной пары, неисправность буксового узла и т.д. Каждый вагон имеет уникальный номер. Тип вагона также имеет значение при ремонте: купейный, СВ, плацкартный, почтовый, багажный. Каждый вагон приписан к дирекции по обслуживанию пассажиров (ДОП-1, ДОП-2, ДОП-3 и т.д.). Текущий ремонт выполняют ремонтные бригады в четыре смены. Для выполнения остальных ремонтов привлекается, как правило, одна бригада. За высокое качество ремонта члены бригады получают премию. Таблица 9.1 Набор данных к варианту 1 Поле Тип Размер Описание № 1 RegNumber Числовой 10 Регистрационный номер вагона 2 RegName Текстовый 60 Приписка вагона к дороге 3 RegChief Текстовый 20 Приписка вагона к дирекции 4 Type Текстовый 20 Тип вагона (купейный, СВ, и т.д.) 5 TypeYear Числовой 4 Год выпуска вагона 6 TypeRepair Текстовый 39 Тип ремонта 7 Picture Поле OLE Авто Фотография вагона 8 Money Денежный 15 Стоимость ремонта 9 Bonus Логический 1 Качество ремонта (отличное/по нормам) 10 BonusPercent Числовой 2 Премия в процентах (общая) 11 DateStart Дата/Время Авто Начало ремонта 12 DateStop Дата/Время Авто Окончание ремонта 13 Reason Текстовый 40 Причина поступления в ремонт 14 External Логический 1 Внешняя/Местная железная дорога 15 BankExternal Текстовый 60 Банк внешней железной дороги 16 InnExternal Числовой 10 ИНН внешней железной дороги 17 AddressExternal Текстовый 80 Юридический адрес внешней ж/дороги 18 FIOchief Текстовый 40 ФИО бригадира 19 Base Текстовый 15 Образование бригадира (ВУЗ) 20 FIOworker Текстовый 40 ФИО работника 21 BaseWorker Числовой 15 Образование работника (ВУЗ) 22 YearWorker Числовой 2 Стаж работы 23 SpecialWorker Текстовый 30 Основная специальность работника 24 BonusWorker Денежный 15 Премия в рублях работнику 25 Comment Поле Memo Авто Примечания (за что премия) 26 NumberBankKart Текстовый 60 Номер карты для перечисления З/П
159
Вариант 2. Разработать прикладное программное обеспечение деятельности ремонтно-эксплуатационного локомотивного депо. Депо выполняет несколько видов ремонта: текущий ремонт (ТР), средний ремонт (СР), Техническое обслуживание (ТО) и внеплановый ремонт. При внеплановом ремонте локомотив снимается с рейса и заменяется резервным, поэтому сроки внепланового ремонта должны быть минимальными, а сам ремонт проводится порой в четыре смены. Каждый локомотив имеет уникальный номер и приписан к определенному локомотивному депо. Технология ремонта зависит от типа локомотива (пассажирский или грузовой). Для выполнения первых трех видов ремонта привлекается, как правило, одна бригада. За высокое качество выполненных работ члены бригады получают дополнительное вознаграждение (квартальная премия, месячная премия, 13 и 14 зарплата). За переработку (сверхурочные) также выплачиваются дополнительные суммы. Таблица 9.2 Набор данных к варианту 2 № Поле Тип Размер Описание 1 RegNumber Числовой 10 Регистрационный номер локомотива 2 RegName Текстовый 60 Приписка локомотива к депо 3 Kind Текстовый 20 Марка локомотива (ВЛ-80с, ВЛ-80р и т.д.) 4 Type Текстовый 20 Тип локомотива (грузовой, пассажирский) 5 TypeYear Числовой 4 Год выпуска локомотива 6 TypeRepair Текстовый 39 Тип ремонта 7 Picture Поле OLE Авто Фотография локомотива 8 Money Денежный 15 Стоимость ремонта 9 Bonus Логический 1 Качество ремонта (отличное/по нормам) 10 BonusPercent Числовой 2 Премия в процентах (общая) 11 DateStart Дата/Время Авто Начало ремонта 12 DateStop Дата/Время Авто Окончание ремонта 13 Reason Текстовый 40 Причина поступления в ремонт 14 External Логический 1 Внешнее/Местное депо 15 BankExternal Текстовый 60 Банк внешнего депо 16 InnExternal Числовой 10 ИНН внешнего депо 17 AddressExternal Текстовый 80 Юридический адрес внешнего депо 18 FIOchief Текстовый 40 ФИО бригадира 19 Base Текстовый 15 Образование бригадира (ВУЗ) 20 FIOworker Текстовый 40 ФИО работника 21 BaseWorker Числовой 15 Образование работника (ВУЗ) 22 YearWorker Числовой 2 Стаж работы 23 SpecialWorker Текстовый 30 Основная специальность работника 24 BonusWorker Денежный 15 Премия в рублях работнику 25 Comment Поле Memo Авто Примечания (за что премия) 26 NumberBankKart Текстовый 60 Тип премии
160
Вариант 3. Разработать прикладное программное обеспечение деятельности судоходной компании «Балтика». Эта крупная компания занимается перевозками грузов между континентами. В ее собственности несколько десятков судов различного класса и грузоподъемности. К услугам этой компании обращаются тысячи клиентов из различных стран мира. На судне может находиться несколько партий грузов для различных грузополучателей из различных стран и городов. Одна партия груза может состоять из нескольких разновидностей грузов. У одной партии груза может быть только один отправитель и только один получатель. Судно следует по маршруту. Маршрут разрабатывается главным менеджером компании и проходит через несколько портов. В очередном порту назначения производится лишь частичная погрузка и выгрузка грузов, и судно следует дальше. Таблица 9.3 Набор данных к варианту 3 № Поле Тип Размер Описание 1 RegNumber Числовой 10 Регистрационный номер судна 2 Name Текстовый 60 Название судна 3 Skipper Текстовый 60 ФИО капитана судна 4 Type Текстовый 15 Тип судна (танкер, сухогруз) 5 Capacity Числовой 10 Грузоподъемность судна 6 Year Числовой 4 Год постройки судна 7 Picture Поле OLE Авто Фотография судна 8 Dockyard Текстовый 15 Порт приписки 9 CustomValue Числовой 10 Таможенный номер партии груза 10 DepartureDate Дата Авто Дата убытия груза 11 ArriveDate Дата Авто Дата прибытия груза 12 Origin Текстовый 20 Пункт отправления 13 Destination Текстовый 20 Пункт назначения 14 CustomClearance Логический 1 Необходимость таможенной декларации 15 Number Числовой 4 Номер груза в партии 16 Shipment Текстовый 30 Название груза 17 DeclareValue Числовой 8 Заявленная величина груза 18 Unit Текстовый 10 Единица измерения груза 19 InsureValue Числовой 8 Застрахованная величина груза 20 Sender Текстовый 30 Отправитель груза 21 INNsender Числовой 10 ИНН отправителя груза 22 BankSender Текстовый 60 Банк отправителя груза 23 AddressSender Текстовый 80 Юридический адрес отправителя груза 24 Consignee Текстовый 30 Получатель груза 25 INNconsignee Числовой 10 ИНН получателя груза 26 BankConsignee Текстовый 60 Банк получателя груза 27 AddressConsign Текстовый 80 Юридический адрес получателя груза 28 Comment Поле Memo Авто Примечания
161
Вариант 4. Разработать прикладное программное обеспечение деятельности учреждения юстиции. По существующему законодательству на это учреждение возложена обязанность регистрации прав юридических и физических лиц на недвижимое имущество (здания, квартиры, земельные участки). В этом задании вам необходимо разработать лишь часть программного комплекса, обеспечивающего регистрацию прав граждан на квартиры. Имейте в виду! В здании несколько квартир. В одной квартире – несколько собственников, причем в базе данных должна храниться история перехода квартиры от одних собственников к другим. Кадастровый номер здания однозначно определяет его среди других зданий города. Смело используйте его в качестве первичного ключа таблицы зданий. Таблица 9.4 Набор данных к варианту 4 № 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
162
Поле Kadastr Address District Land Year Material Base Comment Wear Flow Line Square Picture Flats Elevator Flat Storey Rooms SquareFlat Dwell Branch Balcony Height Record Document DateDoc FioHost Passport Part Born
Тип Текстовый Текстовый Текстовый Числовой Числовой Текстовый Текстовый Поле Memo Числовой Числовой Числовой Числовой Поле OLE Числовой Логический Числовой Числовой Числовой Числовой Числовой Числовой Числовой Числовой Числовой Текстовый Дата Текстовый Поле Memo Числовой Числовой
Размер 20 60 15 10 4 15 15 Авто 2 2 5 10 Авто 3 1 4 2 1 Авто Авто Авто Авто Авто 2 60 Авто 60 Авто Авто 4
Описание Кадастровый номер здания Адрес здания Район города Площадь земельного участка Год постройки здания Материал стен здания Материал фундамента Примечания Износ в процентах Число этажей в здании Расстояние от центра города Площадь нежилых помещений Фото здания Количество квартир в здании Наличие лифта Номер квартиры Номер этажа Количество комнат Общая площадь квартиры Жилая площадь квартиры Вспомогательная площадь квартиры Площадь балкона Высота квартиры Номер записи о праве собственности Документ на право собственности Дата документа о собственности Ф.И.О. собственника Данные его паспорта Принадлежащая ему доля, % Год рождения собственника
Вариант 5. Разработать прикладное программное обеспечение деятельности малого научно-внедренческого предприятия «Квадро». Это предприятие занимается прокладкой компьютерных сетей и разработкой программных комплексов для организаций нашего города. Численность работников в «Квадро» – примерно 80 человек. Одновременно находится в разработке до 30 проектов. Один разработчик может участвовать в нескольких проектах одновременно, но зарплата его от этого не зависит. Одна организация может заказать в «Квадро» несколько разработок. Стоимость каждого проекта оговаривается отдельно. При досрочном выполнении работы заказчик перечисляет научно-внедренческому предприятию определенный, заранее оговоренный процент премии. Таблица 9.5 Набор данных к варианту 5 № Поле Тип Размер Описание 1 EmployeeID Числовой 3 Идентификатор работника 2 EmployeeName Текстовый 60 ФИО работника 3 Address Текстовый 60 Домашний адрес 4 District Текстовый 15 Район города 5 Experience Числовой 2 Опыт работы по специальности 6 Year Числовой 4 Год рождения 7 Language Текстовый 15 Базовый язык программирования 8 Base Текстовый 15 Образование (вуз) 9 Comment Поле Memo Авто Примечания 10 Salary Денежный 15 Зарплата 11 Bonus Денежный 15 Премия 12 GrossSalary Денежный 15 Полная зарплата 13 Exempt Денежный 15 Льготы 14 Picture Поле OLE Авто Фото работника 15 ProjectID Числовой 3 Идентификатор проекта 16 ProjectName Текстовый 40 Название проекта 17 ProjectStart Дата Авто Дата начала проекта 18 ProjectStop Дата Авто Дата окончания проекта 19 Chief Текстовый 60 Руководитель проекта 20 Customer Текстовый 60 Заказчик проекта 21 Cost Числовой Авто Стоимость разработки 22 Phone Текстовый 10 Телефон заказчика 23 Bank Текстовый 60 Банк заказчика 24 Account Текстовый 20 Номер счета в банке 25 INN Текстовый 10 ИНН заказчика 26 AddressCust Текстовый 60 Адрес заказчика 27 FioWorker Текстовый 60 Ответственный от заказчика 28 PhoneWorker Текстовый 10 Телефон ответственного 29 BonusAll Числовой Авто Премия, %, при досрочном выполнении 30 EmployeeStart Дата Авто Начало участия работника в проекте 31 EmployeeStop Дата Авто Конец участия работника в проекте 163
Вариант 6. Разработать прикладное программное обеспечение деятельности ООО «Киновидеопрокат». Это предприятие фактически контролирует демонстрацию кинофильмов в кинотеатрах города. Отдел маркетинга, изучив ситуацию на рынке кинофильмов, принимает решение о покупке тех или иных кинолент. Отдел закупок претворяет эти решения в жизнь, причем лента может быть куплена как у производителя, так и у посредника. Отдел аренды киновидеопроката сдает закупленные фильмы кинотеатрам города в аренду. Так как всегда закупается только одна копия фильма, он не может демонстрироваться одновременно в нескольких кинотеатрах. У одного поставщика может быть куплено несколько фильмов. Также несколько лент может быть в аренде у одного кинотеатра одновременно. Таблица 9.6 Набор данных к варианту 6 № Поле 1 Provider 2 INN 3 Address 4 Bank 5 Account 6 Sign 7 Film 8 Script 9 Comment 10 Producer 11 Company 12 Year 13 Expense 14 Cost 15 Translate 16 Cinema 17 INNcinema 18 AddressCinema 19 Chief 20 Owner 21 BankCinema 22 Phone 23 District 24 AccountCinema 25 Capacity 26 DateStart 27 DateStop 28 PhoneWorker 29 Worker 30 Summa 31 Tax
164
Тип Текстовый Текстовый Текстовый Текстовый Текстовый Логический Текстовый Текстовый Поле Memo Текстовый Текстовый Числовой Денежный Денежный Логический Текстовый Текстовый Текстовый Текстовый Текстовый Текстовый Текстовый Текстовый Текстовый Числовой Дата Дата Текстовый Текстовый Денежный Денежный
Размер 40 10 60 60 20 1 20 60 Авто 60 40 4 15 15 1 20 10 60 60 60 60 10 15 20 4 Авто Авто 10 60 15 15
Описание Поставщик кинофильма ИНН поставщика кинофильма Юридический адрес поставщика Банк поставщика кинофильма Номер счета в банке Признак посредника Название кинофильма Автор сценария Краткое содержание фильма Режиссер-постановщик Компания-производитель Год выхода на экран Затраты на производство Стоимость приобретения Наличие дублирования Название кинотеатра ИНН кинотеатра Адрес кинотеатра Директор кинотеатра Владелец кинотеатра Банк кинотеатра Телефон кинотеатра Район города Номер счета кинотеатра в банке Число посадочных мест Дата начала демонстрации фильма Окончание демонстрации Телефон ответственного Ответственный от кинотеатра Сумма оплаты за аренду ленты Пени за несвоевременный возврат
Вариант 7. Разработать прикладное программное обеспечение деятельности предприятия LADA-сервис. Эта крупная компания занимается продажей автомобилей марки ВАЗ в нашем городе. Она имеет несколько филиалов в разных районах. Автомобиль может быть продан как со склада компании, так и на заказ с завода-изготовителя по предоплате. Покупатель может заказать модель, цвет, тюнинг и оговорить срок поставки заказанного автомобиля. Одновременно с новыми авто на площадках компании имеется большой выбор подержанных автомобилей, как отечественных, так и иностранных. Покупателем может быть как физическое лицо, так и организация. В первом случае – расчет наличными, во втором – через банк. Расчет производится в рублях. Таблица 9.7 Набор данных к варианту 7 № 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
Поле IDfilial Filial InnFilial Chief Capacity Address Phone Brand Model BodyID EngineID BodyModel Picture Volume Power Helm Drive DateStart Cost New Year Distance Type Client Sign Bank Account Comment Customer Price StartDate
Тип Размер Числовой 1 Текстовый 20 Текстовый 10 Текстовый 60 Числовой 3 Текстовый 60 Текстовый 10 Текстовый 15 Текстовый 15 Текстовый 20 Текстовый 20 Текстовый 20 Поле OLE Авто Числовой 5 Числовой 3 Логический 1 Логический 1 Дата Авто Денежный 15 Логический 1 Числовой 4 Числовой 6 Текстовый 15 Текстовый 60 Логический 1 Текстовый 60 Текстовый 20 Поле Memo Авто Текстовый 60 Денежный 15 Дата Авто
Описание Регистрационный номер филиала Название филиала предприятия ИНН филиала предприятия Руководитель филиала Число стояночных мест на площадке Адрес филиала предприятия Номер телефона филиала Марка автомобиля Модель автомобиля Номер кузова Номер двигателя Модель кузова Фотография автомобиля Объем двигателя Мощность двигателя, л.с. Руль (правый/левый) Привод на все колеса Дата появления в продаже Стоимость автомобиля Новый/подержанный Год выпуска автомобиля Пробег автомобиля, км Тип кузова автомобиля Покупатель автомобиля Признак покупателя (юр/физ. лицо) Банк покупателя Номер счета в банке Примечания Заказчик Стоимость заказанного автомобиля Дата заказа
165
Вариант 8. Разработать прикладное программное обеспечение торгово-посреднической фирмы «Столица». Бизнес этого предприятия предельно прост: «покупай дешевле – продавай дороже», или состыкуй продавца и покупателя и получи «комиссионные». Основной упор фирма делает на закупки продуктов питания в других регионах страны и за рубежом – там, где они производятся и стоят дешевле, чем в нашем регионе. Часть продукции может быть закуплена и у местных продавцов. В этом случае фирма получает прибыль за счет того, что крупные партии товара стоят дешевле, чем мелкие. Имейте в виду, что товар не может быть продан дешевле, чем он куплен. Таблица 9.8 Набор данных к варианту 8 № 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 166
Поле Seller InnSeller Country Chief Address Phone Manager PhonePlus Bank Account GoodsID Goods Picture Category DateStart Period Manufacturer Unit CostUnit Count Client InnClient Director PhoneDir AddressClient BankClient AccountClient Volume CostUnitVol DateVolume Comment
Тип Текстовый Текстовый Текстовый Числовой Числовой Текстовый Текстовый Текстовый Текстовый Текстовый Числовой Текстовый Поле OLE Текстовый Дата Числовой Текстовый Текстовый Денежный Числовой Текстовый Текстовый Текстовый Текстовый Текстовый Текстовый Текстовый Числовой Денежный Дата Поле Мемо
Размер 60 10 15 60 60 10 60 10 60 20 10 30 Авто 15 Авто 4 60 10 15 Авто 60 10 60 10 60 60 20 Авто 15 Авто Авто
Описание Фирма – продавец товара ИНН продавца Страна продавца Руководитель фирмы Юридический адрес фирмы Телефон руководителя Главный менеджер фирмы Телефон отдела продаж Банк продавца Номер счета в банке Штрих-код товара Название товара Фото товара Категория товара (кофе, печенье) Дата изготовления товара Срок хранения товара, дн. Изготовитель товара Единица измерения Цена за единицу Количество товара Покупатель товара ИНН покупателя Руководитель фирмы-покупателя Телефон директора Юридический адрес фирмы Банк покупателя Номер счета в банке Количество купленного товара Цена за единицу Дата покупки товара Примечания
Вариант 9. Разработать прикладное программное обеспечение деятельности отдела гарантийного ремонта товаров фирмы «Народная торговая компания». Это предприятие – лидер продаж кондиционеров, телевизоров и другой бытовой техники в городе. Хорошо известно, что техника часто выходит из строя, причем уже в период гарантийного срока, а в этом случае продавец товара должен бесплатно отремонтировать его. Ежедневно в отдел гарантийного ремонта обращаются несколько десятков человек, купивших технику в этой компании. Вы, скорее всего, также побывали в отделе гарантийного ремонта, что очень поможет Вам при разработке программного обеспечения. Таблица 9.9 Набор данных к варианту 9 № Поле Тип Размер 1 IDfilial Числовой 1 2 Filial Текстовый 20 3 InnFilial Текстовый 10 4 Chief Текстовый 60 5 Capacity Числовой 3 6 Address Текстовый 60 7 Phone Текстовый 10 8 GoodsID Текстовый 15 9 Goods Текстовый 40 10 Categoty Текстовый 20 11 Country Текстовый 20 12 Company Текстовый 40 13 Picture Поле OLE Авто 14 INNcompany Текстовый 10 15 AdddressComp Текстовый 60 16 DateStart Дата Авто 17 Period Числовой 4 18 DateBuy Дата Авто 19 Cost Денежный 15 20 Fax Текстовый 12 21 PhoneCompany Текстовый 12 22 Email Текстовый 20 23 Web Текстовый 20 24 CostRepair Денежный 15 25 CustomerID Числовой 5 26 Customer Текстовый 60 27 AddressCust Текстовый 60 28 Comment Поле Memo Авто 29 Sign Логический 1 30 Guarantee Числовой 5 31 StartDate Дата Авто 32 StopDate Дата Авто
Описание Регистрационный номер филиала Название филиала предприятия ИНН филиала предприятия Руководитель филиала Количество работающих на ремонте Адрес филиала предприятия Номер телефона филиала Штрих-код товара Название товара или прибора Категория (утюг, миксер) Страна–производитель Изготовитель Фотография товара или прибора ИНН изготовителя Адрес изготовителя Дата изготовления товара Гарантийный период Дата покупки Стоимость товара Номер факса компании Телефон компании Адрес электронной почты компании Адрес WEB-страницы Стоимость ремонта Идентификатор покупателя Покупатель Адрес покупателя Примечания (что было сделано) Признак покупателя (юр/физ. лицо) Оставшийся гарантийный срок Дата приемки в ремонт Дата получения 167
Вариант 10. Разработать прикладное программное обеспечение деятельности отдела учета личного состава батальона железнодорожных войск. Это фактически отдел кадров воинской части. Батальон расквартирован на отдельной территории. В батальоне несколько рот, в каждой роте несколько взводов, каждый взвод состоит из трех отделений. В мирное время батальон занимается изучением техники и поддержанием ее в рабочем состоянии. Часть технических ресурсов “законсервирована”. Поддержание такой техники в отличном состоянии также входит в обязанности личного состава батальона. В настоящее время существует три вида службы: срочная, сверхсрочная и по контракту. Каждый офицер части имеет удостоверение личности, которое заменяет паспорт, а военнослужащий срочной службы – военный билет. Таблица 9.10 Набор данных к варианту 10 Поле Тип Размер № 1 Number Текстовый 15 2 Battalion Текстовый 30 3 Commander Текстовый 50 4 Rank Текстовый 20 5 ViceCommander Текстовый 50 6 Rank2 Текстовый 20 7 Photo Поле OLE Авто 8 Commander2 Текстовый 50 9 Rank3 Текстовый 20 10 Passport Текстовый 20 11 CompanyID Числовой 1 12 CompanyName Текстовый 20 13 Photo2 Поле OLE Авто 14 PlatoonID Числовой 1 15 Commander3 Текстовый 50 16 Rank4 Текстовый 20 17 Photo3 Поле OLE Авто 18 PlatoonName Текстовый 20 19 DepartmentID Числовой 1 20 Soldier Текстовый 50 21 Post Текстовый 20 22 Rank5 Текстовый 20 23 Дата Авто Start 24 Stop Дата Авто 25 Kind Логический 1 26 Address Текстовый 60 27 Phone Текстовый 15 28 Comment Поле Memo Авто 29 Birth Числовой 4
168
Описание Номер воинской части Название батальона ФИО командира батальона Воинское звание командира ФИО зам. командира батальона Воинское звание зам. командира Фото командира батальона ФИО командира роты Звание командира роты Удостоверение личности Номер роты Название роты Фото командира роты Номер взвода ФИО командира взвода Звание командира взвода Фото командира взвода Название взвода Номер отделения ФИО военнослужащего Должность (командир/солдат) Звание военнослужащего Начало службы Конец службы Вид службы (срочная или контрактная) Адрес проживания Домашний телефон Примечание Год рождения
Вариант 11. Разработать прикладное программное обеспечение деятельности отдела учета домовладений. «Бюро технической инвентаризации». В состав домовладения входят земельный участок и несколько строений. Их называют литерами: жилой дом, летняя кухня, гараж, колодец, забор и т.д. Для жилого дома составляется экспликация, в которой указываются данные по каждому помещению. Экспликация может быть составлена и для других крупных строений. В ее состав входит: номер квартиры, номер помещения на плане, этаж, назначение помещения, площадь, высота и т.п. Для вспомогательных литер (забор, тротуар, колодец) экспликация не заполняется. Таблица 9.11 Набор данных к варианту 11 № 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
Поле Number Block Address District Inventory Land Actual BuildUp Yard Green Garden Bad Picture Light WaterPipe Heating Comment Letter Contents Type MySelf Year SquareAll Inhabited Wear Wall Cost Storeys NumberSign Prescribe SquareRoom HighRoom Storey
Тип Размер Описание Числовой 5 Уникальный номер домовладения Текстовый 20 Номер квартала Текстовый 60 Адрес домовладения Текстовый 15 Район города Дата Авто Дата инвентаризации домовладения Числовой Авто Площадь земельного участка Числовой Авто Фактическая площадь участка Числовой Авто Площадь застройки Числовой Авто Площадь двора Числовой Авто Площадь озеленения Числовой Авто Площадь огорода Числовой Авто Неудобья Поле OLE Авто Фотография домовладения Логический 1 Освещение Логический 1 Водопровод Логический 1 Отопление Поле Memo Авто Примечания Числовой 2 Номер сооружения (литеры) Текстовый 20 Назначение сооружения Числовой 1 Тип литеры (осн./вспомогательная) Логический 1 Возведено самовольно Числовой 4 Год постройки Числовой 4 Общая площадь литеры Числовой 4 Жилая площадь Числовой 2 Износ в процентах Текстовый 15 Материал стен Денежный 15 Инвентаризационная стоимость литеры Числовой Авто Этажность Числовой 2 Номер помещения в экспликации Текстовый 20 Назначение помещения Числовой Авто Площадь помещения Числовой Авто Высота помещения Числовой Авто Этаж, на кот. расположено помещение
169
Вариант 12. Разработать прикладное программное обеспечение деятельности отдела кадров университета. В отделе кадров университета находятся данные всех сотрудников: от преподавателя до ректора, и их трудовой деятельности. Наряду с такими данными, как специальность сотрудника и занимаемая должность, обязательно учитываются сведения об ученой степени сотрудника (кандидат наук, доктор) и ученом звании (доцент, профессор). Также в отделе кадров хранится информация о трудовой деятельности сотрудника: о предыдущих местах работы, сроке работы и предприятии. Отдел кадров занимается подготовкой трудовых договоров с преподавателями после избрания их по конкурсу на очередной срок. Также в его ведении находятся сведения о наложении взысканий на сотрудников и их поощрениях. Взыскания в трудовую книжку не заносятся, а хранятся в электронном виде. Таблица 9.12 Набор данных к варианту 12 № 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
170
Поле PersonID Name Department Institute Birth Place Address Phone Education Year Speciality Picture DegreeYes Degree Rank Post Comment Passport PassportDate Region WorkBegin WorkEnd Work WorkPlace WorkAddress WorkPhone Reason Penalty Rewards
Тип Размер Описание Числовой 5 Регистрационный номер сотрудника Текстовый 40 ФИО сотрудника Текстовый 40 Название кафедры, на которой работает Текстовый 40 Название института (департамента) Дата Авто Дата рождения сотрудника Текстовый 20 Место рождения Текстовый 60 Домашний адрес сотрудника Текстовый 15 Домашний телефон сотрудника Текстовый 40 Оконченный ВУЗ Числовой 4 Год окончания ВУЗа Текстовый 30 Специальность сотрудника Поле OLE Авто Фотография сотрудника Логический 1 Ученая степень (есть/нет) Числовой 1 Ученая степень сотрудника Числовой 1 Ученое звание сотрудника Текстовый 20 Занимаемая должность Поле Memo Авто Примечания Текстовый 20 Номер паспорта Дата Авто Дата выдачи паспорта Текстовый 40 Кем выдан паспорт Дата Авто Дата начала трудовой деятельности Дата Авто Дата окончания трудовой деятельности Текстовый 20 В качестве кого работал Текстовый 20 Название предприятия Текстовый 60 Адрес предприятия Текстовый 15 Телефон предприятия Текстовый 30 Причина увольнения Поле Memo Авто Сведения о взысканиях Поле Memo Авто Сведения о награждениях
Вариант 13. Разработать прикладное программное обеспечение деятельности биржи труда. На биржу труда обращаются люди, не сумевшие самостоятельно устроиться на работу, но все ещё желающие найти работу по специальности. Организации предоставляют бирже список свободных вакансий. Каждый обратившийся ставится на учет. В день обращения ему предлагается список вакансий. Если свободных вакансий нет или они не устраивают ищущего работу, то ему будет предложено подождать пока подходящее свободное место работы не появится. Зарегистрированный на бирже получает пособие по безработице до тех пор, пока не будет трудоустроен. После этого его данные переносятся в архив, и выплата ему пособия прекращается. Таблица 9.13 Набор данных к варианту 13 № 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
Поле JoblessID LastName FirstName Patronymic Age Passport PassportDate Region Address Phone Picture StudyPlace StudyAddress StudyType Registrar RegDate Payment Experience Comment ArchivesDate Archivist JobID JobType JobName JobGiver Place Mobile District Money More
Тип Размер Описание Числовой 5 Регистрационный номер безработного Текстовый 20 Фамилия безработного Текстовый 20 Имя безработного Текстовый 20 Отчество безработного Числовой 2 Возраст безработного Текстовый 20 Номер паспорта Дата Авто Дата выдачи паспорта Текстовый 40 Кем выдан паспорт Текстовый 60 Адрес безработного Текстовый 15 Телефон безработного Поле OLE Авто Фотография безработного Текстовый 60 Название оконченного ВУЗа Текстовый 60 Адрес оконченного учебного заведения Текстовый 15 Тип образования (высшее и т.д.) Текстовый 15 Фамилия регистрирующего Дата Авто Дата постановки на учет Денежный 15 Величина пособия Логический 1 Опыт работы по специальности (да/нет) Поле Memo Авто Примечания Дата Авто Дата перевода в архив Текстовый 15 Фамилия удалившего в архив Числовой 1 Номер вакансии Текстовый 20 Тип вакансии (техническая, экономич.) Текстовый 20 Название вакансии Текстовый 20 Работодатель Текстовый 60 Адрес работодателя Текстовый 15 Телефон работодателя Текстовый 15 Район, в котором предлагается работа Денежный 15 Примерный размер зарплаты Поле Memo Авто Особые требования к работнику
171
Вариант 14. Разработать прикладное программное обеспечение деятельности отдела учета квартир «Бюро технической инвентаризации». В нашем городе имеется 6000 зданий, в которых расположено 199000 квартир. Помещений в этих квартирах – 1 500 000 шт. Понятно, что эта задача не для Microsoft Access 2002. Но, тем не менее, попробуйте реализовать ее, предусмотрев перевод базы данных на платформу Microsoft SQL Server 2000. Кадастровый номер здания является уникальным. Используйте его в качестве простого первичного ключа таблицы зданий. Можете работать и с составным первичным ключом (адресом здания), но в данном случае – это не лучший вариант. Таблица 9.14 Набор данных к варианту 14 № 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 23 25 26 27 28 29 30 31 32 172
Поле Kadastr Address District Land Year Material Base Comment Wear Flow Line Square Picture Flats Elevator Flat Storey Rooms Level SquareFlat Dwell Branch Balcony Height Record SquareRoom Size Name Decoration HeightRoom Socket Sections
Тип Текстовый Текстовый Текстовый Числовой Числовой Текстовый Текстовый Поле Memo Числовой Числовой Числовой Числовой Поле OLE Числовой Логический Числовой Числовой Числовой Логический Числовой Числовой Числовой Числовой Числовой Числовой Числовой Текстовый Текстовый Текстовый Числовой Числовой Числовой
Размер 20 60 15 10 4 15 15 Авто 2 2 5 10 Авто 1 4 2 1 1 Авто Авто Авто Авто Авто 2 Авто 40 30 60 Авто 2 2
Описание Кадастровый номер здания Адрес здания Район города Площадь земельного участка Год постройки здания Материал стен здания Материал фундамента Примечания Износ в процентах Количество этажей в здании Расстояние от центра города Площадь квартир Фото здания Количество квартир в здании Наличие лифта Номер квартиры Номер этажа Количество комнат Квартира в двух уровнях Общая площадь квартиры Жилая площадь квартиры Вспомогательная площадь квартиры Площадь балкона Высота квартиры Номер помещения в квартире Площадь помещения Размеры помещения в плане Назначение (кухня, ниша … Отделка (паркет, обои …) Высота помещения Число розеток в помещении Число элементов в батарее отопления
Вариант 15. Разработать прикладное программное обеспечение деятельности аптечного склада. Аптечный склад занимается оптовой продажей лекарств больницам и аптекам города. В его ассортименте – тысячи наименований лекарств, а также различных аптечных принадлежностей (градусники, шприцы, бинты и т. д.) Возможна продажа лишь тех лекарств, которые одобрены Минздравом РФ, то есть имеют регистрационный номер Минздрава РФ. Поступающие лекарства сопровождаются документами – приходными накладными ведомостями. Покупатель получает счет-фактуру на выбранный товар, оплачивает сумму, указанную в ней, и после оплаты получает выходную накладную ведомость, по которой получает выбранный товар. Таблица 9.15 Набор данных к варианту 15 № 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
Поле GoodsID Name International Begin End Yes RF Producer Instructions Batch Seller Address Phone INN Sign Date Price GoodsInvoice ClientID Company Address Phone CountNumber DateStart Sum Cash Worker Invoice INNClient Seller
Тип Размер Описание Числовой 10 Регистрационный номер товара в базе Текстовый 40 Название товара Текстовый 40 Международное название лекарства Дата Авто Дата производства Дата Авто Годен до Логический 1 Одобрено Минздравом РФ (да/нет) Текстовый 20 Регистрационный номер Минздрава РФ Текстовый 60 Данные о производителе Поле Memo Авто Инструкция к лекарству Текстовый 20 Вид упаковки Текстовый 20 Название поставщика Текстовый 60 Адрес поставщика Текстовый 15 Телефон поставщика Текстовый 10 ИНН поставщика Логический 1 Признак посредника Дата Авто Дата поступления на склад Денежный 10 Цена товара Числовой 4 Номер приходной накладной ведомости Числовой 5 Номер покупателя Текстовый 25 Название покупателя Текстовый 60 Адрес покупателя Текстовый 15 Телефон покупателя Числовой 4 Номер счет-фактуры Дата Авто Дата выписки счет-фактуры Денежный 15 Сумма к уплате Логический 1 Оплата наличными (да/нет) Текстовый 60 Выдавший счет-фактуру Числовой 4 Номер выходной накладной Текстовый 10 ИНН покупателя Текстовый 15 Фамилия продавца
173
Вариант 16. Разработать прикладное программное обеспечение деятельности отдела учета нежилых помещений Бюро технической инвентаризации. В 2000 г. в нашем городе была проведена сплошная инвентаризация, в ходе которой было выявлено 16000 нежилых помещений. Это магазины (встроенные, пристроенные и отдельно стоящие), офисы, учреждения, мастерские и т.д. Помещение может состоять из отдельных частей (кабинет, проходная, коридор). Составных частей помещений выявлено 265 000 шт. В одном здании может быть несколько помещений, а помещение может состоять из нескольких частей. Любое здание имеет уникальный кадастровый номер, однозначно определяющий его положение в городе. Таблица 9.16 Набор данных к варианту 16 №
Поле
Тип
Размер
Описание
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
Kadastr Address District Land Year Material Base Comment Wear Flow Line Square Picture Hall Elevator HallNum Storey Rooms Level SquareHall Branch Balcony Height Record SquarePart Size NamePart Decoration HeightPart Socket Sections
Текстовый Текстовый Текстовый Числовой Числовой Текстовый Текстовый Поле Memo Числовой Числовой Числовой Числовой Поле OLE Числовой Логический Числовой Числовой Числовой Логический Числовой Числовой Числовой Числовой Числовой Числовой Текстовый Текстовый Текстовый Числовой Числовой Числовой
20 60 15 10 4 15 15 Авто 2 2 5 10 Авто 3 1 4 2 1 1 Авто Авто Авто Авто 2 Авто 40 30 60 Авто 2 2
Кадастровый номер здания Адрес здания Район города Площадь земельного участка Год постройки здания Материал стен здания Материал фундамента Примечания Износ в процентах Количество этажей в здании Расстояние от центра города Площадь нежилых помещений Фото здания Количество помещений в здании Наличие лифта Номер помещения Номер этажа Количество составных частей Помещение в двух уровнях Общая площадь помещения Вспомогательная площадь помещения Площадь балкона Высота помещения Номер составной части помещения Площадь составной части Размеры сост. части в плане Назначение (кабинет, ниша ...) Отделка (паркет, обои …) Высота составной части Число розеток в помещении Число элементов в батарее отопления
174
Вариант 17. Разработать прикладное программное обеспечение деятельности отдела учета налогообложения физических лиц городской налоговой инспекции. По существующему законодательству любой гражданин России, заработавший более 50000 рублей в год и имеющий доходы помимо основного места работы, должен представить в налоговую инспекцию декларацию о полученных доходах. Налоговый инспектор должен проверить ее, занести в базу данных и выписать платежное извещение на уплату подоходного налога с доходов физического лица. Так как действующая шкала налогообложения – прогрессивная (с большей суммы уплачивается больший налог), то лица, заполнившие декларацию, должны доплатить в бюджет некоторую сумму. С 2002 года порядок несколько изменился. Шкала налогообложения – линейная (13 процентов со всей заработанной суммы за год), но лицам, затратившим средства на обучение, покупку лекарств и т.д., из бюджета должна быть возвращена некоторая сумма, рассчитываемая по специальной методике. Таблица 9.17 Набор данных к варианту 17 № 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
Поле INN LastName FirstName Patronymic Document Serial Number Date Region Born Picture DateTax NumberTax Address District DistrictTax TaxNumber Enterprise InnEnterprise AddressWorks Chief Phone SumAll SumTax SumPension ExemptType Exempt Comment
Тип Размер Текстовый 13 Текстовый 20 Текстовый 20 Текстовый 20 Текстовый 80 Текстовый 10 Текстовый 20 Дата Авто Текстовый 30 Дата Авто Поле OLE Авто Дата Авто Текстовый 12 Текстовый 80 Текстовый 20 Текстовый 20 Текстовый 4 Текстовый 40 Текстовый 10 Текстовый 30 Текстовый 60 Текстовый 10 Денежный 15 Денежный 15 Денежный 15 Текстовый 60 Денежный 15 Поле Memo Авто
Описание Идентификационный номер Фамилия налогоплательщика Имя налогоплательщика Отчество налогоплательщика Документ, удостоверяющий личность Серия документа Номер документа Дата выдачи Кем выдан документ Дата рождения Фотография налогоплательщика Дата заполнения декларации Номер декларации Адрес налогоплательщика Район города, где проживает Инспекция, где стоит на учете Номер налоговой инспекции Организация, выплатившая сумму ИНН организации Адрес организации ФИО главного бухгалтера Телефон для связи Полученная в организации сумма Величина подоходного налога Отчисления в пенсионный фонд Название льготы Сумма льготы Примечания 175
Вариант 18. Разработать прикладное программное обеспечение деятельности телеателье «Спектр». Эта организация занимается послегарантийным ремонтом теле-, радиоаппаратуры отечественного и импортного производства. Клиенты этого телеателье – жители и организации нашего города и близлежащих сел. Расчет с физическими лицами ведется наличными, а с организациями – через банк. Выдача отремонтированной техники производится после полной оплаты выполненного ремонта. Отремонтированное изделие получает гарантию. Если в течение гарантийного срока произойдет поломка изделия, то повторный ремонт выполняется за счет телеателье. Если брак допустил мастер, то часть суммы удерживается из его зарплаты. Клиент, обратившийся к услугам ателье несколько раз с ремонтом разной аппаратуры, получает дисконтную карту, дающую право на скидку при ремонте очередного изделия. Таблица 9.18 Набор данных к варианту 18 № 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
176
Поле Тип Размер CustomerID Числовой 4 CustomerType Логический 1 CustomerFio Текстовый 60 CustomerName Текстовый 60 CustomerInn Текстовый 13 Chief Текстовый 40 Phone Текстовый 10 Address Текстовый 60 Bank Текстовый 60 District Текстовый 15 Discont Текстовый 5 MasterID Числовой 2 MasterFio Текстовый 60 Experience Числовой 2 Defect Числовой 2 RepairAll Числовой 4 TypeID Числовой 5 Type Текстовый 15 Country Текстовый 15 Company Текстовый 40 Picture Поле OLE Авто Age Числовой 2 DateStart Дата Авто DateStop Дата Авто Summa Денежный 15 Period Числовой 2 Guarantee Логический 1 Comment Поле Memo Авто
Описание Идентификатор заказчика Тип заказчика (физ./юр. лицо) ФИО заказчика (для физ. лица) Название заказчика (для юр. лица) ИНН заказчика (для юр. лица) Руководитель (для юр. лица) Телефон заказчика Адрес заказчика Банк заказчика (для юр. лица) Район заказчика Номер дисконтной карты Идентификатор мастера ФИО мастера Опыт работы по специальности Число некачественных ремонтов Число отремонтированных изделий Идентификатор заказа Тип изделия (телевизор, радио и т.д) Страна - производитель Фирма - изготовитель Фотография изделия Возраст изделия в годах Дата приема в ремонт Дата выдачи из ремонта Стоимость ремонта Срок гарантии Гарантийный ремонт (да/нет) Примечания
Вариант 19. Разработать прикладное программное обеспечение деятельности отдела заселения муниципальных общежитий администрации города. В ведении администрации города находится несколько десятков общежитий. Раньше они принадлежали предприятиям города, а теперь, после банкротства предприятий, все эти общежития переданы муниципальным властям. В последние годы бесплатные квартиры гражданам города практически не предоставляются, а количество малоимущих жителей, нуждающихся в жилье, растет. Хоть как-то улучшить жилищные условия этой категории граждан позволяет наличие муниципальных общежитий. Получить четкую картину их заселения позволит данное программное обеспечение. База данных отдела содержит информацию об общежитиях, комнатах общежитий и проживающих. Таблица 9.19 Набор данных к варианту 19 № 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
Поле Hostel Address District Picture Owner Rooms Beds RoomID Square Comment RoomBeds Type Storey Lodger Name Passport PassportDate Region Work Children DocumentID Document Begin Giver DocComment Payment Settlement End Reason
Тип Размер Числовой 5 Текстовый 60 Текстовый 15 Поле OLE Авто Текстовый 20 Числовой 4 Числовой 5 Числовой 4 Числовой 10 Поле Memo Авто Числовой 2 Числовой 1 Числовой 2 Числовой 5 Текстовый 40 Текстовый 20 Дата Авто Текстовый 40 Текстовый 20 Логический 1 Числовой 5 Текстовый 20 Дата Авто Текстовый 20 Поле Memo Авто Денежный Авто Дата Авто Дата Авто Поле Memo Авто
Описание Номер общежития Адрес общежития Район города, в котором расположено Фотография общежития Балансодержатель Комнат в общежитии Количество койко-мест в общежитии Номер комнаты Площадь комнаты Примечания Количество койко-мест в комнате Тип комнаты (одноместная и т.д.) Номер этажа Регистрационный номер жильца ФИО жильца Номер паспорта Дата выдачи паспорта Кем выдан паспорт Место работы или учебы С детьми (да/нет) Номер документа на заселение Название документа на заселение Начало действия документа Кем выдан документ на заселение Комментарий Плата за проживание в месяц Дата заселения в общежитие Дата выселения из общежития Причина выселения
177
Вариант 20. Разработать прикладное программное обеспечение деятельности Государственной автомобильной инспекции по безопасности дорожного движения города. База данных ГИБДД содержит сведения обо всех транспортных средствах города и их владельцах. В нее заносятся сведения о технических осмотрах транспортных средств и об угонах. Описание угнанного автомобиля не удаляется из базы данных. Истории переходов транспортных средств от одних владельцев к другим не накапливаются. Сведения об автомобилях, снятых с учета, навсегда удаляются из базы данных. Таблица 9.20 Набор данных к варианту 20 № 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
178
Поле OwnerID OwnerType OwnerFio OwnerName OwnerInn Chief Phone Address District Number Brand Model BodyID EngineID BodyModel Color Volume Comment Power Helm Drive Year TypeBody DrivingAway DateAway DateReturn DateSee Inspector YearTax YearNumber Work Distance Okey Reason
Тип Размер Описание Числовой 6 Идентификатор владельца Логический 1 Тип владельца (физ./юр. лицо) Текстовый 60 ФИО владельца (для физ. лица) Текстовый 60 Название организации Текстовый 10 ИНН организации Текстовый 60 Руководитель организации Текстовый 10 Телефон Текстовый 60 Адрес владельца автомобиля Текстовый 15 Район города Текстовый 10 Государственный знак автомобиля Текстовый 15 Марка автомобиля Текстовый 15 Модель автомобиля Текстовый 20 Номер кузова Текстовый 20 Номер двигателя Текстовый 20 Модель кузова Текстовый 20 Цвет автомобиля Числовой 5 Объем двигателя Поле Memo Авто Примечания Числовой 3 Мощность двигателя в л.с. Логический 1 Руль (правый/левый) Логический 1 Привод на все колеса Числовой 4 Год выпуска автомобиля Текстовый 15 Тип кузова автомобиля (седан, купе) Логический 1 Находится в угоне Дата Авто Дата угона Дата Авто Дата возврата владельцу Дата Авто Дата технического осмотра Текстовый 60 ФИО инспектора, проводившего осмотр Денежный 15 Годовой налог на автомобиль Денежный 15 Оплата за знак технического осмотра Денежный 15 Оплата за технический осмотр Числовой 5 Пробег на дату осмотра Логический 1 Технический осмотр пройден Поле Memo Авто Причины, по которым осмотр не пройден
Вариант 21. Разработать прикладное программное обеспечение для ведения реестра имущества университетского городка. В состав имущества входит несколько зданий. В зданиях располагаются аудитории, кафедры, лаборатории, вычислительные центры, деканаты и т.д. Любое помещение университета относится к какому-либо подразделению. Все движимое имущество, находящееся в помещении, состоит на балансе материально ответственного лица. Каждая аудитория закреплена за определенной кафедрой университета, так же в ведении кафедр находятся и лаборатории. По истечении определенного времени имущество, находящееся в помещениях, списывается. Архив списанного имущества не ведется. Таблица 9.21 Набор данных к варианту 21 № Поле Тип Размер Описание 1 Kadastr Числовой 2 Регистрационный номер здания 2 BuildingName Текстовый 20 Название здания (корпуса) университета 3 Land Числовой Авто Площадь земельного участка 4 Address Текстовый 60 Адрес здания 5 Year Числовой 4 Год постройки 6 Material Текстовый 15 Материал стен здания 7 Wear Числовой 2 Износ в процентах 8 Flow Числовой 2 Число этажей в здании 9 Picture Поле OLE Авто Фотография здания 10 Comment Поле Memo Авто Дополнительные сведения по зданию 11 HallID Текстовый 5 Номер аудитории 12 Square Числовой Авто Площадь аудитории 13 Windows Числовой 1 Количество окон 14 Heating Числовой 3 Число элементов в батареях отопления 15 Target Текстовый 15 Назначение (лекционная, кафедра ...) 16 Department Текстовый 15 Принадлежность к кафедре (подразд.) 17 Chief Текстовый 30 Материально ответст. за аудиторию 18 DepartmentID Числовой 3 Идентификатор кафедры 19 DepartmentName Текстовый 15 Название кафедры 20 Boss Текстовый 40 Заведующий кафедрой 21 Phone Текстовый 10 Телефон кафедры 22 OfficeDean Текстовый 30 Принадлежность кафедры к деканату 23 ChiefID Числовой 3 Идентификатор материально отв-го 24 AddressChief Текстовый 60 Дом. адрес материально ответственного 25 Experience Числовой 4 Год его начала работы в университете 26 UnitID Числовой 3 Идентификатор единицы имущества 27 UnitName Текстовый 30 Название единицы имущества 28 DateStart Дата Авто Дата постановки на учет 29 Cost Денежный 15 Стоимость единицы имущества 30 CostYear Числовой 4 Год переоценки 31 CostAfter Денежный 15 Стоимость после переоценки 32 Period Числовой 4 Срок службы единицы имущества
179
Вариант 22. Разработать прикладное программное обеспечение деятельности туристической компании «Вояж». Эта компания формирует туристические группы для заграничных поездок и обеспечивает им полную поддержку на маршруте. Количество туристов в группе заранее известно и ограничено. Маршрут группы может пролегать через несколько городов страны назначения. Экскурсии в несколько стран одновременно не проводятся. При обращении в «Вояж» группы из нескольких человек компания предоставляет скидку, которая зависит от количества туристов в группе. Вместе с группой следует представитель компании, который несет полную ответственность за качество услуг, предоставляемых компанией. При возникновении каких-либо неудобств на маршруте, возникших по вине компании, турист получает назад заранее оговоренную в контракте сумму. Таблица 9.22 Набор данных к варианту 22 №
Поле
Тип
Размер
Описание
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
ClientID LastName FirstName Patronymic Document Serial Number Date Region Born Picture Pasport RouteID RouteName Country Period Worker Cost Exempt Return DateStart Town Count Hotel StartDate StopDate Type Comment
Числовой Текстовый Текстовый Текстовый Текстовый Текстовый Текстовый Дата Текстовый Дата Поле OLE Логический Числовой Текстовый Текстовый Числовой Текстовый Денежный Денежный Денежный Дата Текстовый Числовой Текстовый Дата Дата Числовой Поле Memo
5 20 20 20 80 10 20 Авто 30 Авто Авто 1 3 30 20 2 20 15 15 15 Авто 15 2 15 Авто Авто 1 Авто
Идентификатор клиента Фамилия клиента Имя клиента Отчество клиента Документ, удостоверяющий личность Серия документа Номер документа Дата выдачи Кем выдан документ Дата рождения Фотография клиента Наличие заграничного паспорта Идентификатор маршрута Название маршрута Название страны Срок пребывания Представитель на маршруте Стоимость путевки Скидка Неустойка Дата вылета Пункт маршрута Срок пребывания в пункте маршрута Название гостиницы Дата прибытия в пункт маршрута Дата убытия Класс гостиницы (***,****) Экскурсионная программа
180
Вариант 23. Разработать прикладное программное обеспечение деятельности регистратуры ведомственной поликлиники «Эскулап». Работники регистратуры организуют запись пациентов на прием к врачам поликлиники. Так как поликлиника ведомственная, медицинское обслуживание работников предприятия – бесплатное (за счет средств предприятия). «Посторонние» пациенты также могут воспользоваться услугами поликлиники, полностью оплатив затраты на лечение. Определение стоимости лечения и выдача платежных документов для таких больных входит в круг обязанностей работников регистратуры. Врач ведет прием всегда в одном кабинете. Приемные дни занесены в расписание работы поликлиники. На каждого пациента в регистратуре заводится карточка. В начале приема карточки больных, записавшихся на прием, доставляются работником регистратуры в кабинет врача. Таблица 9.23 Набор данных к варианту 23 № 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
Поле DoctorID LastName FirstName Patronymic Room University Type Experience Phone Born Picture Fio Number Address District PolicyNumber Year Sign Department TreatyID DateStart TimeStart Cost ExemptID ExemptType Exempt Summa Comment
Тип Размер Числовой 2 Текстовый 20 Текстовый 20 Текстовый 20 Числовой 3 Текстовый 40 Текстовый 20 Числовой 2 Текстовый 10 Числовой 4 Поле OLE Авто Текстовый 60 Текстовый 10 Текстовый 80 Текстовый 20 Текстовый 20 Числовой 4 Логический 1 Текстовый 40 Числовой 10 Дата Авто Текстовый 10 Денежный 15 Числовой 2 Текстовый 60 Денежный 15 Денежный 15 Поле Memo Авто
Описание Идентификационный номер врача Фамилия врача Имя врача Отчество врача Номер кабинета Образование (университет) Специализация (терапевт, лор...) Стаж работы Номер рабочего телефона Год рождения Фотография врача ФИО пациента Номер карточки пациента Адрес пациента Район города, где проживает Номер страхового полиса Год рождения пациента Работник предприятия (да/нет) Отдел, в котором работает Идент. номер записи на прием Дата приема Время приема Стоимость приема Идентификатор льготы Название льготы (инвалид, ветеран) Сумма льготы К оплате Примечания (результаты приема)
181
Вариант 24. Разработать прикладное программное обеспечение деятельности рекламного агентства «Rapid». В собственности этого агентства находится примерно около сотни рекламных щитов, расположенных по всему городу. Установка их согласована с администрацией города, и все необходимые формальности выполнены. На этих щитах может быть размещена реклама по заказу любой организации города. Срок размещения, стоимость аренды щита и стоимость изготовления самой рекламы – договорные. Одна организация может арендовать несколько рекламных щитов. Один щит не сдается в аренду нескольким арендаторам, так как является неделимой рекламной единицей. Договор размещения рекламы может быть продлен по взаимной договоренности сторон. Таблица 9.24 Набор данных к варианту 24 № 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
182
Поле RegNumber Address District Orientation Square Size CustomerID Status Customer AddressCust Chief Phone Bank Account Tax Worker PhoneWorker TreatyID DateStart StopDate SignDate Advertisment Cost Leasing Picture Employee Period Comment
Тип Размер Числовой 10 Текстовый 60 Текстовый 15 Текстовый 60 Числовой Авто Текстовый 10 Числовой 10 Текстовый 15 Текстовый 40 Текстовый 60 Текстовый 40 Текстовый 10 Текстовый 60 Текстовый 20 Текстовый 15 Текстовый 40 Текстовый 10 Числовой 5 Дата Авто Дата Авто Дата Авто Логический 1 Денежный 15 Денежный 15 Поле OLE Авто Текстовый 40 Текстовый 15 Поле Memo Авто
Описание Регистрационный номер щита Адрес расположения щита Район города Местоположение (ОДОРА, Депо-2 …) Площадь рекламного щита Размеры ИНН арендатора щита Статус арендатора (ТОО, ЗАО, ИЧП) Название арендатора Юридический адрес арендатора Руководитель Телефон руководителя Банк арендатора Номер счета в банке Налоговая инспекция арендатора Ответственный от арендатора Телефон ответственного Номер договора аренды щита Начало действия договора Окончание действия Дата подписания договора Изготовление рекламы (да/нет) Стоимость изготовления рекламы Стоимость аренды щита Фотография щита с рекламой Ответственный от агентства Оплата (ежемесячная, кварт., годовая) Дополнительные условия
Вариант 25. Разработать прикладное программное обеспечение деятельности OOO «Центр оценки и продажи недвижимости». Одним из источников прибыли этой организации является покупка и продажа квартир. Центр оценки имеет большой штат специалистов, позволяющий этой организации проводить сделки купли-продажи на высоком профессиональном уровне. Владелец квартиры, желающий ее продать, заключает договор с Центром, в котором указывается сумма, срок продажи и процент отчислений в пользу Центра оценки и продажи недвижимости в случае успешного проведения сделки. Один клиент может заключить с Центром более одного договора купли-продажи одновременно, если он владеет несколькими квартирами. Обмен квартир специалисты центра непосредственно не производят. Для этих целей используется вариант купли-продажи. Таблица 9.25 Набор данных к варианту 25 № 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
Поле Registr Address Name Phone TreatyID AddressFlat District Floors Floor TypeHouse TypePlan TypeToilet SqAll SqLife SqKit Agent Privat SignPhone DateStart StopDate Cost Bonus Picture Plan Structure Document Prolong Comment
Тип Размер Описание Числовой 10 Регистрационный номер клиента Текстовый 60 Адрес клиента Текстовый 60 ФИО клиента Текстовый 10 Телефон для связи с клиентом Числовой 5 Регистрационный номер договора Текстовый 60 Адрес квартиры Текстовый 15 Район города Числовой 2 Этажей в доме Числовой 2 Этаж, на котором расположена квартира Текстовый 20 Тип дома (кирпичный, панельный) Текстовый 20 Тип планировки (хрущевка, новая) Текстовый 20 Тип санузла (раздельный, совмещенный) Числовой Авто Общая площадь квартиры Числовой Авто Жилая площадь квартиры Числовой Авто Площадь кухни Текстовый 40 Фамилия агента Центра оценки Логический 1 Наличие приватизации Логический 1 Наличие телефона в квартире Дата Авто Начало действия договора Дата Авто Окончание действия Денежный 15 Стоимость квартиры Денежный 15 Вознаграждение Центра оценки Поле OLE Авто Фотография здания Поле OLE Авто План квартиры Поле Memo Авто Инфраструктура территории Текстовый 40 Документ на право собственности Дата Авто Продление срока действия договора Поле Memo Авто Дополнительные условия
183
Вариант 26. Разработать прикладное программное обеспечение деятельности отдела вневедомственной охраны квартир. Этот отдел обеспечивает электронную охрану квартир граждан в одном районе города. Для установки охранной сигнализации требуется наличие квартирного телефона. Один гражданин может заключить договор на охрану нескольких квартир. Из-за ложных срабатываний сигнализации возможно несколько выездов патрульных экипажей по одной квартире. На владельца квартиры, вовремя не отключившего сигнализацию после своего прихода домой, налагается штраф, величина которого оговаривается при заключении договора охраны. Если отдел вневедомственной охраны не уберег имущество владельца квартиры, то он выплачивает пострадавшему заранее оговоренную сумму. От величины этой суммы зависит размер ежемесячной оплаты за охрану квартиры. Таблица 9.26 Набор данных к варианту 26 № 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
184
Поле Registr Address Name Phone TreatyID AddressFlat Key Floors Floor TypeHouse TypeDoor Balcony TypeBalcony Plan Cost Compensation DateStart StopDate ActionID PatrolID Chief Brand DateTime False Tax Document Prolong Comment
Тип Размер Описание Числовой 10 Регистрационный номер клиента Текстовый 60 Адрес клиента Текстовый 60 ФИО клиента Текстовый 10 Телефон для связи с клиентом Числовой 5 Регистрационный номер договора Текстовый 60 Адрес квартиры Логический 1 Наличие кодового замка на подъезде Числовой 2 Количество этажей в доме Числовой 2 Этаж, на котором расположена квартира Текстовый 20 Тип дома (кирпичный, панельный) Текстовый 20 Тип квартирной двери (мет, дер, две шт.) Логический 1 Наличие балкона Текстовый 60 Тип балкона (отдельный, совмещенный) Поле OLE Авто План квартиры Денежный 15 Стоимость ежемесячной оплаты Денежный 15 Компенсация при краже имущества Дата Авто Начало действия договора Дата Авто Окончание действия Числовой 7 Номер выезда на захват Числовой 4 Номер экипажа, выезжавшего на захват Текстовый 20 Командир экипажа Текстовый 15 Марка автомобиля Дата Авто Дата и время выезда Логический 1 Вызов ложный (да/нет) Денежный 15 Величина штрафа за ложный вызов Текстовый 40 Документ, оформленный при задержании Дата Авто Продление срока действия договора Поле Memo Авто Дополнительные условия
Вариант 27. Разработать прикладное программное обеспечение деятельности Отдела приватизации жилья администрации города. В нашем городе на начало 2001 года приватизировано около 80 000 квартир граждан. Еще далеко не все проживающие в «своих» квартирах стали собственниками своего жилья. Процесс приватизации продолжается и займет еще несколько лет. Главная задача программного комплекса – не допустить приватизации одним человеком более одной квартиры. К сожалению, в отделе приватизации не используется уникальный кадастровый номер здания, поэтому вам придется использовать составной первичный ключ (адрес) для таблицы зданий, квартир и проживающих. Помните, что некоторые из проживающих в квартире могут не участвовать в приватизации. Таблица 9.27 Набор данных к варианту 27 № 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 27 28 29 30 31
Поле Address District Balance Year Material Base Comment Wear Flow Line Square Hall Picture Flats Elevator Flat Storey Rooms SquareFlat Dwell Branch Balcony Height Record Document DateDoc Cost FioHost Pasport Sign Born Status
Тип Текстовый Текстовый Текстовый Числовой Текстовый Текстовый Поле Memo Числовой Числовой Числовой Числовой Логический Поле OLE Числовой Логический Числовой Числовой Числовой Числовой Числовой Числовой Числовой Числовой Числовой Текстовый Дата Денежный Текстовый Поле Memo Логический Числовой Текстовый
Размер 60 15 60 4 15 15 Авто 2 2 5 10 1 Авто 3 1 4 2 1 Авто Авто Авто Авто Авто 2 60 Авто Авто 60 Авто 1 4 20
Описание Адрес здания Район города Балансодержатель Год постройки здания Материал стен здания Материал фундамента Примечания Износ в процентах Число этажей в здании Расстояние от центра города Площадь квартир Наличие нежилых помещений Фото здания Число квартир в здании Наличие лифта Номер квартиры Номер этажа Количество комнат Общая площадь квартиры Жилая площадь квартиры Всп. площадь квартиры Площадь балкона Высота квартиры Номер записи о приватизации Документ на право приватизации Дата документа о приватизации Инвентаризационная стоимость Ф.И.О. проживающего Данные его паспорта Участие в приватизации (да/нет) Год рождения Статус в семье 185
Вариант 28. Разработать прикладное программное обеспечение деятельности предприятия “Газкомплект” по учету платы за пользование газом и газовыми приборами. Плата взымается с каждой квартиры в зависимости от количества потребленного газа или от числа проживающих, если счетчик отсутствует. Ответственный квартиросъемщик обязан каждый месяц снимать показания счетчика и производить оплату за потребленный газ через сбербанк. Наряду с отслеживанием платы за газ предприятие производит профилактическое обслуживание газовых приборов. Правила техники безопасности предусматривают осмотр газовой плиты инспектором предприятия раз в квартал. Если обнаружены неполадки в подключении плиты или ее работе, то работник предприятия обязан немедленно устранить их за счет абонента. Оплата оказанных услуг осуществляется на месте по квитанции. Таблица 9.28 Набор данных к варианту 28 № 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
186
Поле Address District Material Floor Picture Owner Doorway Flats LastName FirstName Patronymic Passport Flat FlatType People Phone Account DateCount Stop Number ViewNumber MadeIn WhenMade DateView Result PayMonth Prophylaxis PayDefect Surname
Тип Размер Описание Текстовый 60 Адрес здания Текстовый 15 Район города Текстовый 15 Тип стен Текстовый 15 Тип перекрытий Поле OLE Авто Фото здания Текстовый 15 Балансодержатель Числовой 2 Количество подъездов в доме Числовой 3 Количество квартир в доме Текстовый 20 Фамилия квартиросъемщика Текстовый 20 Имя квартиросъемщика Текстовый 20 Отчество квартиросъемщика Текстовый 20 Номер паспорта Числовой 3 Номер квартиры Числовой 1 Вид квартиры Числовой 2 Количество проживающих Текстовый 15 Телефон квартиросъемщика Текстовый 15 Номер абонентской книжки Дата Авто Дата выдачи книжки Логический 1 Наличие задвижки на входе в квартиру Текстовый 10 Номер счетчика Дата Авто Дата поверки счетчика Текстовый 15 Страна изготовления счетчика Дата Авто Дата изготовления счетчика Дата Авто Дата снятия показаний Числовой Авто Показания счетчика Денежный Авто Плата за месяц Дата Авто Дата профилактического осмотра Денежный Авто Стоимость исправления дефекта Текстовый 20 Фамилия ответственного инспектора
Вариант 29. Разработать прикладное программное обеспечение деятельности «Бюро технической инвентаризации» по изготовлению и выдаче технических паспортов на объекты недвижимости. Перед регистрацией сделки с объектом недвижимости собственник объекта должен получить в БТИ на него технический паспорт. Ежедневно в БТИ обращается до 200 человек. Основное назначение программного комплекса – не пропустить ни одного документа. Если технический паспорт не готов в назначенный срок, то БТИ должно выплатить неустойку. Алгоритм изготовления документа следующий. Клиент обращается к инспектору, сдает ему необходимые справки, согласовывает дату выхода техника на обмер, уплачивает аванс. Инспектор передает заявку начальнику отдела. Начальник отдела назначает исполнителя и техника. Техник выполняет обмер объекта. Исполнитель изготавливает документ и передает в отдел выдачи. В назначенный срок клиент забирает готовый документ, доплатив недостающую сумму. Один клиент (физическое или юридическое лицо) может заказать несколько технических паспортов, за изготовление которых оплата может производиться частями. Таблица 9.29 Набор данных к варианту 29 № 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
Поле NumberClaim Name Phone Receipt Bank Account Address District DateStart Document Speed DateStop Cost Inspector Time Chief Worker DateWorker Helper Cash DateCost Value Finish Comment
Тип Размер Описание Числовой 10 Номер заявки на изготовление документа Текстовый 60 ФИО заказчика Текстовый 10 Телефон для связи с заказчиком Логический 1 Физическое или юридическое лицо Текстовый 60 Банк заказчика Текстовый 20 Номер счета в банке Текстовый 60 Адрес объекта Текстовый 15 Район города Дата Авто Дата приема заявки Текстовый 60 Название документа Логический 1 Срочное изготовление (да/нет) Дата Авто Дата выдачи документа Денежный 15 Стоимость изготовления документа Дата Авто Дата выхода техника Текстовый 20 Время выхода техника Текстовый 30 ФИО начальника отдела Текстовый 30 ФИО исполнителя Дата Авто Дата передачи исполнителю Текстовый 30 ФИО техника Логический 1 Оплата наличными (да/нет) Дата Авто Дата оплаты Денежный 15 Оплаченная сумма Логический 1 Документ выдан (да/нет) Поле Memo Авто Примечания
187
Вариант 30. Разработать прикладное программное обеспечение деятельности отдела аренды ЗАО «Сириус». После удачной приватизации, когда у руководства этого предприятия оказалась большая часть акций, дела некогда мощного предприятия пошли на спад. Основная часть работников была уволена по сокращению штатов. В настоящее время основной статьей получения прибыли является сдача в аренду другим предприятиям и организациям площадей, которыми владеет «Сириус». В его собственности имеется 12-ти этажное здание, которое состоит примерно из 300 помещений. Почти все они сдаются в аренду. Один арендатор может арендовать несколько помещений, причем срок аренды для каждого устанавливается отдельно. Величина арендной платы и ее периодичность устанавливается арендодателем. После окончания срока аренды, договор может быть продлен на прежних или новых условиях. Субаренда площадей запрещена. Закрытые договоры не удаляются из базы данных для отслеживания предыдущих арендаторов. Таблица 9.30 Набор данных к варианту 30 № Поле Тип Размер 1 CustomerID Числовой 4 2 CustomerType Логический 1 3 CustomerFio Текстовый 60 4 CustomerName Текстовый 60 5 CustomerInn Текстовый 13 6 Chief Текстовый 40 7 Phone Текстовый 10 8 Address Текстовый 60 9 Bank Текстовый 60 10 District Текстовый 15 11 Worker Текстовый 30 12 PhoneWorker Текстовый 10 13 HallID Числовой 3 14 Square Числовой Авто 15 Size Текстовый 20 16 Floor Числовой 2 17 PhoneHall Логический 1 18 Decoration Текстовый 10 19 TreatyID Числовой 5 20 Type Логический 1 21 DateStart Дата Авто 22 DateStop Дата Авто 23 Period Текстовый 20 24 Value Денежный 15 25 Inspector Текстовый 30 26 Target Текстовый 30 27 Tax Денежный 15 28 Comment Поле Memo Авто 188
Описание Идентификатор арендатора Тип арендатора (физ./юр. лицо) ФИО арендатора (для физ. лица) Название арендатора (для юр. лица) ИНН арендатора (для юр. лица) Руководитель (для юр. лица) Телефон арендатора Юридический адрес арендатора Банк арендатора (для юр. лица) Район заказчика Ответственный от арендатора Телефон ответственного Номер помещения Площадь помещения Размеры помещения Этаж, на кот. расположено помещение Телефон в помещении (есть/нет) Отделка (обычная, улучш., евро) Номер договора аренды Договор действует/закрыт Дата начала действия договора Окончание срока действия Периодичность оплаты (ежемес., кварт) Сумма оплаты Ответственный от арендодателя Цель аренды (офис, киоск, склад) Штраф за нарушение условий договора Примечания
Вариант 31. Разработать прикладное программное обеспечение деятельности телефонной компании. Основное назначение программного комплекса – отслеживание абонентской платы за телефоны. Клиентами компании могут быть как физические лица, так и организации. Расчет с организациями ведется в безналичной форме через банк. Физические лица вносят плату через кассу компании. Клиент телефонной компании может иметь несколько телефонных номеров. Дополнительная плата за подключенный параллельно аппарат не взимается. Если телефон у абонента не работает более суток, то плата за пользование телефоном уменьшается. Междугородние и международные звонки оплачиваются отдельно по заранее установленным расценкам. Таблица 9.31 Набор данных к варианту 31 № 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
Поле Тип Размер CustomerID Числовой 4 CustomerType Логический 1 CustomerFio Текстовый 60 CustomerName Текстовый 60 CustomerInn Текстовый 13 Chief Текстовый 40 Phone Текстовый 10 Address Текстовый 60 Bank Текстовый 60 Account Текстовый 20 PhoneNumber Текстовый 10 PhoneAddress Текстовый 60 Value Денежный 15 ExemptType Текстовый 20 Exempt Денежный 15 DateClaim Дата Авто NumberClaim Числовой 5 Inspector Текстовый 15 DateRepair Дата Авто Compensation Денежный 15 DateRing Дата Авто RingType Логический 1 Number Текстовый 10 County Текстовый 15 Town Текстовый 15 Value Числовой 3 Summa Денежный 15 Comment Поле Memo Авто
Описание Идентификатор клиента компании Тип клиента (физ./юр. лицо) ФИО клиента (для физ. лица) Название клиента (для юр. лица) ИНН клиента (для юр. лица) Руководитель (для юр. лица) Телефон для связи (для юр. лица) Юридический адрес клиента Банк клиента (для юр. лица) Номер счета в банке Номер телефона Адрес, где он установлен Ежемесячная плата за телефон Тип льготы Величина льготы Дата заявки о поломке телефона Номер заявки о поломке Фамилия принявшего заявку Дата восстановления связи Вычеты из арендной платы Дата внешнего звонка Междугородний/Международный Вызываемый номер Страна Город Количество минут Стоимость звонка Примечания
189
Вариант 32. Разработать прикладное программное обеспечение деятельности мелкооптового книжного магазина. Менеджер магазина, изучив спрос на книжную продукцию в городе, принимает решение о закупке партии книг в том или ином издательстве. Некоторые, пользующиеся повышенным спросом книги, могут быть закуплены у посредников. Часть продукции заказывается через Internet. Покупателем в мелкооптовом магазине может быть любой человек или организация, при условии, что величина покупки превысит одну тысячу рублей. Расчет с организациями производится через банк. Расчет с физическими лицами – наличными. Покупателю выписывается счет-фактура, которая имеет уникальный номер и содержит список книг с указанием их стоимости. После уплаты указанной суммы покупатель получает товар на складе. Таблица 9.32 Набор данных к варианту 32 № 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
190
Поле Provider INN Address Bank Account Sign Film Author Comment Pages Company Year Cost Cdrom Customer CustomerSign INNcustomer AddressCust Chief BankCustomer Phone District AccountCust CountNumber DateStart Value Worker Tax Plus
Тип Текстовый Текстовый Текстовый Текстовый Текстовый Логический Текстовый Текстовый Поле Memo Числовой Текстовый Числовой Денежный Логический Текстовый Логический Текстовый Текстовый Текстовый Текстовый Текстовый Текстовый Текстовый Числовой Дата Денежный Текстовый Денежный Поле Memo
Размер 40 10 60 60 20 1 20 60 Авто 3 40 4 15 1 20 1 10 60 60 60 10 15 20 4 Авто 15 60 15 Авто
Описание Поставщик книг ИНН поставщика книг Юридический адрес поставщика Банк поставщика книг Номер счета в банке Признак посредника Название книги Авторы Краткое содержание книги Количество страниц Издательство Год издания Стоимость приобретения Наличие компакт диска к книге Название покупателя Признак покупателя (юр./физ.) ИНН покупателя Юридический адрес покупателя Директор Банк покупателя Телефон для связи Район города Номер счета покупателя в банке Номер счет-фактуры Дата выписки счет-фактуры Сумма к уплате Выдавший счет-фактуру Величина налога с продаж Примечания
Вариант 33. Разработать прикладное программное обеспечение деятельности ОАО «Автовокзал». Это открытое акционерное общество занимается междугородними пассажирскими перевозками по Дальневосточному региону. В его собственности находится несколько десятков автобусов различной вместимости. Штат водителей превышает количество автобусов. Средний уровень сменности для машины – 2.5. Водитель не может работать более одной смены в сутки. Билеты на рейсы продаются только в здании автовокзала. Возможна предварительная продажа. Маршрут автобуса может пролегать через несколько населенных пунктов. В этом случае пассажир может купить билет до любого промежуточного пункта. Освободившимся местом после выхода пассажира распоряжается водитель. Полученную выручку он сдает в кассу предприятия после прибытия с маршрута. На линии работает контроль. Если в автобусе будет обнаружен пассажир без билета, то на водителя налагается штраф. Таблица 9.33 Набор данных к варианту 33 № 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
Поле LastName FirstName Patronymic Experience Year Category Class DriverID BusNumber Brand Picture Model Capacity YearBus YearRepair Distance RouteID PointStart PointStop DateStart TimeStart TimeAll PlaceNumber PlaceSign SumDriver SumTax Comment
Тип Размер Текстовый 20 Текстовый 20 Текстовый 20 Числовой 2 Числовой 4 Текстовый 20 Текстовый 20 Числовой 4 Числовой 4 Текстовый 15 Поле OLE Авто Текстовый 15 Числовой 2 Числовой 4 Числовой 4 Числовой 6 Числовой 3 Текстовый 20 Текстовый 20 Дата Авто Текстовый 10 Текстовый 10 Числовой 2 Логический 1 Денежный 15 Денежный 15 Поле Memo Авто
Описание Фамилия водителя Имя водителя Отчество водителя Стаж работы Год рождения Категория водителя (D,E) Классность водителя (1,2,3) Идентификационный номер водителя Идентификационный номер автобуса Марка автобуса Фотография автобуса Модель автобуса Количество мест в автобусе Год выпуска автобуса Год капитального ремонта Пробег автобуса, км Идентификатор маршрута Начальный пункт Конечный пункт Дата отправления Время отправления Время в пути до конечного пункта Номер места Билет продан на автовокзале (да/нет) Выручка на маршруте Штраф на водителя Промежуточные пункты маршрута
191
Вариант 34. Разработать прикладное программное обеспечение деятельности агентства знакомств. Агентство занимается организацией знакомств одиноких мужчин и женщин. Возможен один из двух вариантов: человек либо регистрируется в агентство, оставляет информацию о себе, чтобы любой мог ознакомиться с его кандидатурой, либо знакомится с базой уже зарегистрированных и выбирает подходящую кандидатуру. Регистрация и подбор кандидатуры – платные. Тот, кто делает выбор по базе, платит за каждый выбранный вариант. После того, как выбор сделан, агентство согласовывает дату и время встречи с каждой из сторон, формирует и передает приглашения для знакомства обеим сторонам. Во избежание недоразумений первая встреча происходит в агентстве. Клиенты, желающие быть исключенными из базы, переносятся в архив. Таблица 9.34 Набор данных к варианту 34 № 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
192
Поле CandidateID Name Gender Age Myself Demand Phone Picture Registrar RegDate ClientID ClientName ClientGender ClientPhone Date ClientMyself ClientMore ClientAge ReceiptID PayDate Seller Cash Sum MeetDate MeetTime InvitationID DeleteDate Deleter Reason
Тип Размер Числовой 5 Текстовый 40 Числовой 1 Числовой 2 Поле Memo Авто Поле Memo Авто Текстовый 15 Поле OLE Авто Текстовый 15 Дата Авто Числовой 5 Текстовый 40 Числовой 1 Текстовый 15 Дата Авто Текстовый 200 Текстовый 50 Числовой 2 Числовой 5 Дата Авто Текстовый 15 Логический 1 Денежный 5 Дата Авто Время Авто Числовой 5 Дата Авто Текстовый 15 Текстовый 30
Описание Регистрационный номер кандидата ФИО кандидата Пол кандидата Возраст кандидата Информация кандидата о себе Требования кандидата к избраннику Телефон кандидата Фотография кандидата Фамилия регистрирующего Дата регистрации кандидата Регистрационный номер клиента ФИО клиента Пол клиента Телефон клиента Дата регистрации клиента Информация клиента о себе Дополнительная информация Возраст клиента Номер квитанции об оплате Дата оплаты Фамилия кассира Оплата наличными (да/нет) Сумма Согласованная дата встречи Время встречи Номер приглашения Дата перевода в архив Фамилия удалившего в архив Причина переноса в архив
Вариант 35. Разработать прикладное программное обеспечение деятельности ломбарда. Человек обращается в ломбард в том случае, если ему срочно нужны деньги. Например, недостает небольшой суммы для покупки квартиры, а подходящая квартира как раз продается, и на неё уже есть и другие покупатели. Тогда человек может пойти в ломбард и заложить вещи на необходимую сумму. В ломбарде с клиентом заключается договор. В нем оговариваются следующие условия: до какого срока выкуп вещи возможен без процентов, с какого времени будет взыматься процент, по истечении какого срока выкуп вещи невозможен, и она поступает в собственность ломбарда. Невыкупленные вещи ломбард выставляет на продажу. Таблица 9.35 Набор данных к варианту 35 № 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
Поле ClientID Name Date Address District Phone Passport PassportDate Region Agreement StartDate PercentDate StopDate Registrar ThingID Category Thing Count Defects Cost Sum Comment Back Tax BackSum Seller FreeThing Price
Тип Размер Числовой 4 Текстовый 40 Дата Авто Текстовый 60 Текстовый 15 Текстовый 15 Текстовый 20 Дата Авто Текстовый 40 Числовой 5 Дата Авто Дата Авто Дата Авто Текстовый 15 Числовой 4 Текстовый 15 Текстовый 30 Числовой 2 Логический 1 Денежный 10 Денежный 10 Поле Memo Авто Дата Авто Денежный 10 Денежный 10 Текстовый 15 Числовой 4 Денежный 10
Описание Регистрационный номер клиента ФИО клиента Дата обращения в ломбард Адрес клиента Район проживания Телефон клиента Номер паспорта Дата выдачи паспорта Кем выдан паспорт Номер договора Дата приема вещи Дата, с которой за выкуп берется пени Дата, с которой выкуп уже невозможен Фамилия приемщика Регистрационный номер вещи Категория вещи Название вещи Количество принятых вещей Наличие дефектов (да/нет) Оценочная стоимость вещи Сумма, полученная клиентом Примечания Дата выкупа вещи Пени за несвоевременный выкуп Сумма, заплаченная за выкуп Фамилия вернувшего вещь Номер вещи, поступившей в продажу Цена вещи, поступившей в продажу
193
Вариант 36. Разработать прикладное программное обеспечение деятельности гостиницы. В любой уважающей себя гостинице существует большое количество возможных вариантов заселения гостей: все номера различаются по категориям (суперлюкс, люкс и т.д.), по количеству комнат в номере, количеству мест в каждом номере, а также по обустройству комнат – учитывается, например, наличие телевизора, холодильника,телефона. В обязанности администратора гостиницы входит подбор наиболее подходящего для гостя варианта проживания, регистрация гостей, прием платы за проживание, оформление квитанций, выписка отъезжающих. Учитывается также возможность отъезда гостя раньше указанного при регистрации срока, при этом производится перерасчет. Существует также услуга бронирования номера. Таблица 9.36 Набор данных к варианту 36 № 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 194
Поле GuestID Name Date Address Town Aim Passport PassportDate Region Work Year Money Cash Receipt End Comment Registrar Picture Number Rooms Storey TV Fridge Bed Type Balcony Reservation ReservName Come Leave
Тип Размер Числовой 4 Текстовый 40 Дата Авто Текстовый 60 Текстовый 20 Текстовый 30 Текстовый 20 Дата Авто Текстовый 40 Текстовый 20 Числовой 4 Денежный 10 Логический 1 Числовой 4 Дата Авто Поле Memo Авто Текстовый 15 Поле OLE Авто Числовой 4 Числовой 2 Числовой 2 Логический 1 Логический 1 Числовой 2 Числовой 1 Логический 1 Числовой 4 Текстовый 40 Дата Авто Дата Авто
Описание Регистрационный номер гостя ФИО гостя Дата регистрации Адрес гостя Город, из которого приехал гость Цель приезда Номер паспорта Дата выдачи паспорта Кем выдан паспорт Место работы или учебы Год рождения гостя Плата за выбранный номер Оплата наличными (да/нет) Номер квитанции Дата отъезда Примечания Фамилия администратора Фотография номера № номера Количество комнат в номере Номер этажа Телевизор (есть/нет) Холодильник (есть/нет) Количество мест в номере Категория номера Балкон (есть/нет) Забронированный номер ФИО забронировавшего номер Дата приезда Дата предполагаемого отъезда
Вариант 37. Разработать прикладное программное обеспечение института селекции растений. Данный институт занимается сбором, выведением и продажей различных сортов семян. В его ассортименте можно найти семена практически всех возможных видов растений: от помидоров до редких цветов. Только что выведенные сорта заносятся в отдельный список для дальнейшего тестирования. Каждый сорт семян имеет свои характеристики, такие как урожайность, морозоустойчивость, адаптация к местным условиям, сроки созревания (раннеспелый, среднеспелый, поздний) и т.п. Покупатель может выбрать сорт, отвечающий тем или иным характеристикам. Компания занимается как оптовыми, так и розничными продажами. Оптовые покупатели заносятся в базу главным образом для того, чтобы информировать их о поступлении новых или отсутствовавших в определенный момент в продаже сортов. Таблица 9.37 Набор данных к варианту 37 № 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
Поле SortID Name Year Adaptation Frost Description Technology Picture Part End Yes Batch Amount BatchTime Weight Period NewSort Date Comment ClientID Company BuyDate Address Phone Sum Cash Seller
Тип Размер Описание Числовой 10 Уникальный номер сорта Текстовый 40 Название сорта Числовой 4 Год, в котором выведен сорт Логический 1 Адаптация к местным условиям (да/нет) Логический 1 Морозоустойчивый (да/нет) Текстовый 200 Описание характеристик сорта Поле Memo Авто Способ посадки Поле OLE Авто Фотография представителя сорта Числовой 10 Номер партии Дата Авто Годен до Логический 1 Одобрен инспекцией (да/нет) Текстовый 20 Вид упаковки Числовой 4 Количество семян в упаковке Дата Авто Дата расфасовки Числовой 4 Вес семян в упаковке Числовой 1 Срок созревания Числовой 5 Номер нового сорта для тестирования Дата Авто Дата выведения нового сорта Поле Memo Авто Примечания Числовой 5 Номер оптового покупателя Текстовый 25 Название фирмы-покупателя Дата Авто Дата покупки Текстовый 60 Адрес фирмы-покупателя Текстовый 15 Телефон покупателя Денежный 10 Цена покупки Логический 1 Оплата наличными (да/нет) Текстовый 15 Фамилия продавца
195
Вариант 38. Разработать прикладное программное обеспечение деятельности приемной комиссии университета. Каждый год университет зачисляет новых абитуриентов для возможного их поступления в университет после сдачи вступительных экзаменов. На бюджетную основу могут быть зачислены: абитуриенты, получившие на школьном экзамене высокий балл ЕГЭ и успешно прошедшие собеседование; абитуриенты, набравшие необходимый для бесплатного поступления балл на университетских экзаменах, а также абитуриенты, имеющие направление от какого-либо государственного предприятия. Все остальные могут поступить в университет на платной основе, набрав необходимое установленное университетом число баллов на вступительных экзаменах. Таблица 9.38 Набор данных к варианту 38 № 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
196
Поле PersonID Name Date Picture Address Phone Birth School Money Passport PassportDate Region Attestat Middle Faculty Speciality Registrar Talk Result Contract ContractID ContractAbout ContAddress СontPhone Payment EGE Lesson Score YesID Type
Тип Размер Описание Числовой 5 Регистрационный номер абитуриента Текстовый 40 ФИО абитуриента Дата Авто Дата регистрации Поле OLE Авто Фотография абитуриента Текстовый 60 Домашний адрес абитуриента Текстовый 15 Телефон абитуриента Дата Авто Дата рождения абитуриента Текстовый 20 Название оконченной школы Логический 1 Возможность оплаты обучения (да/нет) Текстовый 20 Номер паспорта Дата Авто Дата выдачи паспорта Текстовый 40 Кем выдан паспорт Текстовый 20 Номер аттестата Числовой Авто Средний балл аттестата Текстовый 40 Название выбранного факультета Текстовый 40 Название выбранной специальности Текстовый 15 Фамилия принявшего документы Логический 1 Рекомендован для собеседования Числовой Авто Набрано баллов при поступлении Логический 1 Договор с предприятием (да/нет) Числовой 10 Номер договора Поле Memo Авто Условия договора Текстовый 60 Адрес предприятия Текстовый 15 Телефон предприятия Логический 1 Платит предприятие (да/нет) Текстовый 20 Номер аттестата ЕГЭ Текстовый 20 Предмет, по которому сдан ЕГЭ Числовой Авто Набрано баллов по ЕГЭ Числовой 5 Номер после зачисления Числовой 1 Основа, на которой зачислен
Вариант 39. Разработать прикладное программное обеспечение деятельности кассы авиакомпании. Касса авиакомпании занимается продажей билетов на предстоящие рейсы. В билете указывается номер и название рейса, а также все остальные необходимые для пассажира данные: дата и время вылета, прибытия, номер места и класс (бизнес, экономический). Цена билета зависит от рейса, лайнера, класса, а также от времени покупки билета – иногда авиакомпании делают скидки купившим билет более чем за месяц или на “горящие рейсы” – все зависит от желания компании. Билеты продаются только совершеннолетним гражданам при предъявлении паспорта. У авиакомпании обычно имеется несколько касс, расположенных в разных концах города, поэтому обязательно необходимо учитывать номер кассы, в которой был продан билет, во избежание недоразумений при сдаче или обмене билета. Таблица 9.39 Набор данных к варианту 39 № 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
Поле Passage Title Date Time Arrival ArrivalTime Seats Places Passenger Name Date Passport PassportDate Region Till Ticket Chair Class Price Registrar Airliner AirlinerName Year Picture Amount Repair Crew Pilot CrewNames
Тип Размер Числовой 5 Текстовый 40 Дата Авто Время Авто Дата Авто Время Авто Логический 1 Текстовый 50 Числовой 5 Текстовый 40 Дата Авто Текстовый 20 Дата Авто Текстовый 40 Числовой 5 Числовой 10 Числовой 3 Числовой 1 Денежный 6 Текстовый 15 Числовой 10 Текстовый 15 Числовой 4 Поле OLE Авто Числовой 4 Дата Авто Числовой 4 Текстовый 15 Поле Memo Авто
Описание Номер рейса Название рейса Дата вылета Время вылета Дата прибытия Время прибытия Промежуточные посадки (есть/нет) Места промежуточных посадок Регистрационный номер пассажира ФИО пассажира Дата покупки билета Номер паспорта Дата выдачи паспорта Кем выдан паспорт Номер билетной кассы Номер билета Номер места Класс Цена билета Фамилия регистратора Номер лайнера Название лайнера Год создания Фотография лайнера Количество совершенных рейсов Дата последнего техосмотра Номер экипажа Фамилия пилота Фамилии остальных членов экипажа
197
Вариант 40. Разработать прикладное программное обеспечение деятельности предприятия “Хабэнерго” по учету платы за потребленную электроэнергию. Плата взымается с каждой квартиры в зависимости от количества потребленной энергии или от числа проживающих, если счетчик отсутствует. Существует несколько методик начисления абонентской платы. Плата зависит от вида счетчика (однофазный, трехфазный), от типа счетчика (возможность учета дневного и ночного тарифов), а также от вида квартиры (коммунальная, отдельная). Ответственный квартиросъемщик обязан каждый месяц снимать показания счетчика и производить оплату за потребленную электроэнергию через сбербанк. Второй экземпляр квитанции он обязан хранить у себя и предъявлять инспектору Хабэнерго по первому требованию. Таблица 9.40 Набор данных к варианту 40 № 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
198
Поле Address District Material Floor Picture Owner Doorway Flats LastName FirstName Patronymic Passport Flat FlatType People EStove Number Kind Type Factor Comment Tariff Day Night 24hour BeginMonth EndMonth Privilege Surname
Тип Размер Текстовый 60 Текстовый 15 Текстовый 15 Текстовый 15 Поле OLE Авто Текстовый 15 Числовой 2 Числовой 3 Текстовый 20 Текстовый 20 Текстовый 20 Текстовый 20 Числовой 3 Числовой 1 Числовой 2 Логический 1 Текстовый 10 Числовой 1 Числовой 1 Числовой Авто Поле Memo Авто Числовой Авто Числовой Авто Числовой Авто Числовой Авто Числовой Авто Числовой Авто Денежный Авто Текстовый 20
Описание Адрес здания Район города Тип стен Тип перекрытий Фото здания Балансодержатель Количество подъездов в доме Количество квартир в доме Фамилия квартиросъемщика Имя квартиросъемщика Отчество квартиросъемщика Номер паспорта Номер квартиры Вид квартиры Количество проживающих Наличие электроплиты (есть/нет) Номер счетчика Вид счетчика Тип счетчика Коэффициент фазности Примечания Плата за чел. в месяц без счетчика Плата по дневному тарифу Плата по ночному тарифу Плата по круглосуточному тарифу Показания счетчика в начале месяца Показания счетчика в конце месяца Льгота в месяц на квартиру в рублях Фамилия ответственного инспектора
10. БИБЛИОГРАФИЧЕСКИЕ РЕКОМЕНДАЦИИ Настоящая книга представляет собой учебное пособие, предназначенное оказать серьезную помощь начинающему специалисту в создании своего первого приложения баз данных в режиме клиент-сервер. Вполне очевидно, что выполнить эту работу без изучения базовых дисциплин невозможно. Разработчик должен обладать определенными знаниями в области корпоративных информационных систем, межсетевого взаимодействия, современных компьютерных сетей, сетевых операционных систем, баз данных, защиты информации, клиентского программного обеспечения и т.д. Хочу предложить Вашему вниманию самые актуальные издания (на момент написания этой книги), которые помогут Вам создать Ваше первое приложение на современном уровне. Информационные системы/ В.Н. Петров. – СПб.: Питер, 2003. – 688 c.: ил. Основное внимание в книге уделяется вопросам разработки клиентской части информационных систем. В то же время в ней содержится большое количество практического материала, посвященного вопросам проектирования и создания баз данных, в частности, рассматривается методология проектирования информационных систем, приводится подробное описание стандарта ANSI SQL-92, излагаются теоретические сведения о реляционной модели данных. Одна из частей книги полностью посвящена современным информационным технологиям программирования – COM, ActiveX и Интернет-технологиям.
Современные компьютерные сети. 2-е изд. /В. Столлингс. – СПб.: Питер, 2003. – 783 c.: ил. – (Серия «Классика computer science) Эта книга посвящена современным аспектам развития высокоскоростных объединенных TCP/IP сетей. В ней рассматривается широкий круг вопросов: от обработки одиночного пакета или ячейки в очереди на маршрутизаторе или коммутаторе до универсальных методов резервирования сетевых ресурсов для определенного типа трафика; от определения характеристик потока данных до способов их сжатия, позволяющих снизить нагрузку на сеть. Книга будет интересна всем, кто хотел бы получить представление о современном уровне развития, архитектуре и разработке высокоскоростных компьютерых сетей.
Межсетевое взаимодействие. Ресурсы Microsoft Windows 2000 Server. Microsoft Corporation. /Пер. С англ. – М.: Издательско-торговый дом «Русская редакция», 2003. – 736 c.: ил. Книга представляет собой техническое руководство по серверу маршрутизации и удаленного доступа под управлением Windows 2000 Server и организации взаимодействия между сетями различных типов. Предназначена сетевым инженерам, сетевым и системным администраторам, квалифицированным пользователям и всем, кто хочет досконально изучить взаимодействие системы Windows 2000 с различными сетями и другими операционными системами.
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.
Базы данных. Проектирование, реализация и сопровождение. Теория и практика. /К. Бегг, Т.Коннолли – М.: Издательство «Вильямс», 2003. 1436 c.: ил. Авторы книги сконцентрировали на ее страницах весь свой богатый опыт разработки баз данных для нужд промышленности, бизнеса и науки, а также обучения студентов. Результатом их труда стало это полное справочное руководство по проектированию, реализации и сопровождению баз данных. Книга содержит подробное описание особенностей разработки приложений баз данных. В ней дано всестороннее введение в технологию информационной проходки, хранилищ данных и OLAP, представлены современные распределенные, объектно-ориентированные и объектнореляционные СУБД. Ясное и четкое изложение материала, наличие одного основного и трех вспомогательных учебных примеров и множества контрольных вопросов и упражнений позволяет использовать эту книгу не только при самостоятельном обучении, но и как основу для разработки курсов обучения любых уровней сложности, от студентов младших курсов до аспирантов, а также как исчерпывающее справочное руководство для профессионалов.
Системы баз данных: проектирование, реализация и управление. /П.Роб - Издательство «BHV», 2004. 1040 c.: ил. Книга содержит последовательное и всестороннее описание процесса разработки и реализации базы данных. Подробно представлены теоретические основы баз данных: реляционная модель базы данных, ER-моделирование, нормализация таблиц базы данных, язык структурированных запросов (SQL). Приведен пример проектирования и реализации базы данных для университетской лаборатории. Рассматриваются управление транзакциями и параллельным выполнением, системы управления распределенными базами данных, объектно-ориентированные базы данных, клиент/серверные системы, информационное хранилище, электронная коммерция, особенности разработки баз данных для Web, хранилища данных и администрирование баз данных.
Следующие два издания вполне могли бы быть представлены как двухтомник, но информация, изложенная в них, практически не пересекается, поэтому из издательства вышли две независимые книги. Они взаимно дополняют друг друга, поэтому вполне возможно, что Вы посчитаете необходимым детально поработать с обоими изданиями. 200
Разработка настольных приложений в Access 2002. Для профессионалов. /П. Литвин, К. Гетц. – СПб.: Питер; Киев: ВНV, 2003 – 941 c.: ил. В книге известных авторов, потративших бессчетное количество времени на изучение возможностей и недокументированных секретов Access 2002, рассказывается о том, что должен знать и уметь каждый разработчик: о проектировании структуры баз данных, SQL, об объектах доступа к данным ADO, формах, отчетах, о работе с Windows API, создании модулей классов, событиях Access и т.д.
Разработка корпоративных приложений в Access 2002. Для профессионалов. /П. Литвин, К. Гетц. – СПб.: Питер; Киев: ВНV, 2003 – 848 c.: ил. В книге представлено большое количество полезной информации, необходимой каждому разработчику приложений в среде Microsoft Access, Visual Basic и Microsoft SQL Server. В ней рассматриваются: объектная модель Microsoft Access, проектирование форм и отчетов. Большое внимание уделено принципам и приемам проектирования приложений для баз данных и интегрированных решений на базе Microsoft Office XP, а также средствам отладки и оптимизации приложений.
Microsoft SQL Server 2000 для профессионалов. /Е.Мамаев, Л.Шкарина – СПб.: Питер, 2001. – 1088 c.: ил. Система SQL Server 2000 вобрала в себя множество новейших технологий управления базами данных, разработанных за последнее время. Книга написана опытными инженерами, сертифицированными фирмой Microsoft и отслеживающими эволюцию SQL. Эта книга, содержащая наиболее полный материал по SQL Server, станет вашим надежным помощником в работе.
Системы баз данных. Полный курс. /Г.Гарсиа-Молина, Дж. Уидом, Дж.Ульман – М.: Издательство «Вильямс», 2003. 1088 c.: ил. Книга известного специалиста в области компьютерных наук Дж. Ульмана и его именитых коллег по Станфордскому университету является уникальным учебным и справочным пособием, которое отличается беспрецедентными широтой и глубиной охвата предмета и представляет несомненный интерес для всех, кто по роду своей профессиональной деятельности сталкивается с проблемами проектирования и использования современных систем баз данных.
Access 2002. Библия пользователя. /К.Праг, М.Ирвин - М.: Издательство «Вильямс», 2003. 1216 c.: ил. Рассматриваются основные концепции баз данных, терминология и особенности установки продукта, а также принципы работы в Access. Показаны все новые средства Access 2002, рассмотрена возможность создания пользовательскх меню. Отдельные две главы посвящены использованию Access совместно с SQL Server. Большая часть книги посвящена решению практических задач разной степени сложности, в том числе использованию связанных таблиц и сложных запросов, импортированию данных, созданию форм, применению макросов для автоматизации ручных операций и языка VBA в формах и отчетах. Книга рассчитана на пользователей Access с любым уровнем подготовки.
201
11. ЧТО СОДЕРЖИТСЯ НА КОМПАКТ-ДИСКЕ Компакт-диск содержит файлы примера учебной базы данных Real Estate, процесс создания которой рассмотрен в учебном пособии (рис.11.1).
Рис. 11.1. Состав компакт-диска Real Estate
Всего файлов – семь. Три из них работают только под управлением Microsoft Access. Это одна и та же база данных Real Estate 2002.mdb, конвертированная в формат предыдущих версий. Real Estate 2002.mdb – для Microsoft Access 2002. Real Estate 2000.mdb – для Microsoft Access 2000. Real Estate 1997.mdb – для Microsoft Access 97. Конвертация выполнена на тот случай, если у Вас не окажется под рукой нужной версии Microsoft Office. Разработка этой базы данных описана в первых шести главах учебного пособия. К седьмой главе можно переходить только с Real Estate 2002.mdb Файл Real Estate CS 2002.adp представляет собой проект Microsoft Access, для работы с которым необходима установка Microsoft SQL Server 2000. Установив MS SQL Server 2000, Вы должны восстановить на нем базу данных Real Estate, которая находится в файле Real Estate.bak. Воспользуйтесь для этого главой 8.5 данного пособия. В файлах text.doc и title.doc содержится электронная версия данного учебного пособия. Внимание. С компакт-диска полноценной работы приложения не получится. Скопируйте его содержимое в любую папку, расположенную на жестком диске Вашего компьютера.
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
Гурвиц Геннадий Александрович. РАЗРАБОТКА РЕАЛЬНОГО ПРИЛОЖЕНИЯ В СРЕДЕ КЛИЕНТ-СЕРВЕР. Учебное пособие.
Редактор Н.В. Смышляева Корректор Г.Ф. Иванова Технический редактор О.В. Сенчихина ИД № 05247 от 2 июля 2001 г. ПЛД № 79-19 от 19.01.2000 г. Сдано в набор 11.01.2005. Подписано в печать 14.01.2005. Формат 70х100 1 . Бумага тип. № 2. Гарнитура Arial. Печать плоская. 16
Усл. печ. л. 12,0. Зак. 6. Тираж 300 экз. Издательство ДВГУПС 680021, г. Хабаровск, ул. Серышева, 47.
205