VŠB — Технический университет Остравы, Факультет техники безопасности. Компьютеры и защита данных Инструкции по выполнению упражнений Павел Шеновский
VŠB — Остравский технологический университет, Факультет техники безопасности Компьютеры и защита данных Инструкции по упражнению Павел Шеновский Острава 2006
2 Компьютеры и защита данных
Компьютеры и защита данных 3 Содержание СОДЕРЖАНИЕ. 3 ВВЕДЕНИЕ. 5 1 КРАТКОЕ И ПРОСТОЕ ВВЕДЕНИЕ В ТЕОРИИ БАЗ ДАННЫХ. 5 1.1 Типология баз данных. 5 1.2 Дизайн базы данных. 7 1.3 Правила оформления таблиц. 10 2 МС Доступ. 13 2.1 Таблицы. 14 2.2 Сессия. 17 2.3 Формы. 20 2.4 Запросы. 28 2.5 Сборки. 31 3 ОТКРЫТАЯ ОФИСНАЯ БАЗА. 31 3.1 Таблицы. 32 3.2 Сессия. 33 3.3 Формы. 34 3.4 Запросы. 35 3.5 Сборки. 36 ЛИТЕРАТУРА. 36
4 Компьютеры и защита данных
Компьютеры и защита данных 5 Введение Добро пожаловать на изучение учебных текстов Компьютеры и защита данных Упражнения. Этот текст направлен на беспроблемное освоение основ работы с базами данных и облегчение для вас, как для студентов, начала работы в этой области. Изучение данного текста не предполагает каких-либо специфических знаний в области компьютерных технологий, кроме основ работы с программами MS Office. Отдельные примеры, которые я здесь буду обсуждать, будут решены в MS Access и Open Office Base. При выборе другой базы данных отдельные шаги могут несколько отличаться, но в принципе они должны работать аналогично. Весь текст разделен на три части. Первый, теоретический, в котором базовая теория баз данных и создание моделей будут объяснены как основные предпосылки для правильного решения проблем в среде баз данных. Второй был посвящен практической реализации базы данных с помощью MS Access и, наконец, третий, в котором мы будем реализовывать базу данных с помощью Open Office Base. 1 Краткое и простое введение в теорию баз данных 1.1 Типология баз данных Базы данных являются одним из старейших типов приложений. Ихначало практически совпадает с началом развертывания компьютеров для хранения данных, и за это время они претерпели относительно значительное развитие. Древовидные базы данных были первым типом, получившим распространение, которые позже были заменены сетевыми базами данных. Обсуждать здесь архитектуру этих систем нет смысла, поскольку оба вышеперечисленных типа баз данных безнадежно устарели и не используются уже много лет. Они были заменены в 1980-х годах реляционными базами данных и до сих пор являются наиболее широко используемым типом баз данных. Мы также будем иметь дело исключительно с реляционными базами данных в этом тексте (за исключением этой главы). Реляционные базы данных состоят из сущностей, которые представляют собой виртуальных представителей реальных объектов и содержат индивидуальные атрибуты, т.е. данные, которые мы будем собирать об объекте. Само название предполагает, каким будет второй важный элемент реляционных баз данных, то есть сеансы, которые представляют отношения между отдельными объектами. Реляционные базы данных можно разделить еще на две группы: 1) большие базы данных предназначены для работы на сервере. Предполагается, что они обладают возможностью обработки большого количества запросов одновременно и возможностью работы с очень большими базами данных. Примерами таких баз данных могут быть Oracle, Informix, MS SQLServer, MySQL, Postgress и другие. 2) Персональные базы данных, предназначенные для регулярного использования на классических настольных компьютерах, т.е. одним или несколькими пользователями. Они содержат инструменты, облегчающие пользователям разработку форм отчетов и тому подобное. Платой за простоту использования является более низкая производительность базы данных и в определенной степени ограниченный функционал, особенно в области масштабируемости решения и т. д. К персональным базам данных мы могли бы отнести, например, Paradox, Fox Pro, DBase или MS Access. В этом тексте мы будем иметь дело только с личной базой данных MS Access. Реляционные базы данных пережили двадцатый год своей жизни и благодаря быстромуразвития в области информационных технологий, было бы странно, если бы развитие остановилось в этой области. Базы данных
долгое время считались будущим преемником реляционных баз данных.
6 Защита компьютеров и объектов данных. С течением времени стало ясно, что объектные базы данных не заменят реляционные базы данных и даже практически не будут расширяться. Основное отличие заключается в философии построения базы данных. В то время как реляционные базы данных работают с сущностями и отношениями, объектные базы данных работают с объектами и отношениями между ними. Отдельные объекты, как и сущности, являются изображениями реальных объектов, данные об объекте хранятся в свойствах объекта, т.е. аналогичны атрибутам сущностей. В отличие от сущностей, объекты также содержат методы. Методы описывают поведение объектов. Отношения между объектами также более сложны, поскольку они также позволяют определять отношения обобщения и перечисления. Объединение свойств и методов в объекты очень похоже на то, как люди воспринимают объекты в реальном мире. Однако формализация объектов и отношений между ними, необходимая для реализации в выбранной среде базы данных, требует гораздо больше усилий. Именно этот факт, вероятно, привел к тому, что объектные базы данных заняли незначительную долю рынка. Последний тип баз данных, который я упомяну здесь, — это базы данных XML. XML — это сокращение от Extensive Markup Language, то есть общий язык разметки. Это стандарт, принятый в 1999 году консорциумом World Wide Web. Его основная особенность заключается в том, что он позволяет создавать собственные языки разметки для различных типов документов, а затем очень просто обрабатывать их в электронном виде. Что такое XML, лучше всего продемонстрировать на примере. Следующий пример демонстрирует маркировку буквы. Отдельные элементы документа ограничены тегами, придающими значение этим элементам с точки зрения семантики документа. Пол
- нет в списке 123
Острава
Уважаемый господин, я отвечаю на ваш. Приведенный выше XML-документ оформлен не совсем корректно с точки зрения валидности, но его вполне достаточно для демонстрации принципа работы с данными. Что делает XML интересным с точки зрения баз данных?Ответ прост, в гибкости. Практически любой документ можно без особых проблем описать с помощью XML, что очень сложно при использовании классических баз данных. Представьте, как вы пытаетесь разбить, например, налоговую декларацию на отдельные таблицы. Базы данных XML можно разделить на две группы: 1) специализированные базы данных XML 2) реляционные базы данных с поддержкой XML содержат функции для работы с XML, сами элементы данных хранятся в классических таблицах.
Компьютеры и защита данных 7 Подводя итог разделу баз данных, можно сказать, что реляционные базы данных в настоящее время доминируют на рынке. В будущем можно ожидать, что развитие пойдет в сторону более широкого использования гибридных реляционных баз данных с поддержкой XML. 1.2 Проектирование базы данных Вернемся к реляционным базам данных и подумаем о процессе проектирования и реализации базы данных в выбранной среде базы данных. Проектирование проходит в несколько этапов: 1) концептуальное, 2) создание ERD-диаграммы, 3) создание реляционной модели. Концептуальная фаза На концептуальной стадии собирается вся доступная информация, относящаяся к решению проблемы. В начале этого этапа мы уверены только в том, что хотим решить проблему через среду базы данных. Имеющиеся формы могут служить основой для решений. Используя их, мы обычно можем показать, какая информация в настоящее время каким-то образом обрабатывается и поэтому должна быть включена в наше решение. Еще одним ценным источником информации являются люди, которые на практике решают проблему, с которой мы сталкиваемся. Консультации значимы тем, что в ходе них мы можемполучить обзор логистики процессов в рассматриваемой области, а также узнать, действительно ли используются существующие данные или было бы полезно включить некоторые другие в решение. Результатом этого этапа являются собранные формы, заметки с консультацией и концептуальная модель решения, первая идея решения, которую мы создали в ходе консультаций. Эти идеи должны быть формализованы, прежде чем мы попытаемся реализовать их в выбранной среде базы данных. Создание диаграммы ERD ERD — это аббревиатура от Entity Relationship Diagram, т. е. диаграмма сущностей и отношений между ними. На этом этапе мы обрабатываем данные, собранные на концептуальном этапе. Проходим записи, формируем их и выбираем существительные, значимые с точки зрения решаемой задачи. Эти существительные послужат основой для сущностей и атрибутов. Как мы уже писали выше, сущности — это виртуальные представления объектов реального мира. На самом деле, иногда с точки зрения будущей бесшовной реализации приходится искусственно вводить новые сущности для упрощения отношений, существующих между ними. Новичку сложно понять создание этих искусственных сущностей, поэтому обратите особое внимание на следующие страницы, а затем на практическую демонстрацию создания таблиц и отношений между ними в рамках объяснения работы с MS Access. Если вы не понимаете принцип работы представленных здесь понятий, нет смысла продолжать изучение данного издания, обращаться за консультацией или искать более подробную литературу по изучению. Теперь вернемся к сущностям, у нас есть список существительных, мы исключим из него синонимы, чтобы каждый предмет или атрибут встречался в списке только один раз.
8 Компьютеры и защита данных Relac e Рис. 1: Конструкторы ERD-диаграммы Entity Используя конструкторы, показанные на рис. 1, мы построим ERD-диаграмму, фиксирующую наличие взаимосвязей.между отдельными субъектами. Нас интересуют эти отношения не только в их простом существовании, но и в других свойствах, например, между сколькими сущностями существует данное отношение. Бинарные отношения (между двумя сущностями) — самый распространенный случай, но бывают и так называемые внутренние отношения между тремя сущностями, но они встречаются гораздо реже. В то время как сущности описываются с помощью существительных, мы описываем отношения между ними с помощью глаголов. Таким образом, ERD можно читать как простые предложения, описывающие проблему. Помимо количества сущностей, связанных отношениями, мы также отслеживаем так называемую кардинальность отношений, по-чешски частоту отношений. С точки зрения частоты мы оцениваем все окончания отношений. Продемонстрируем это на простом примере. Рассмотрим отношения между учителем и предметными сущностями. Итак, это бинарные отношения. При рассмотрении кардинальности мы спрашиваем: а) сколько предметов может преподавать один учитель -> мы не знаем (N) б) сколько учителей могут преподавать один предмет -> мы не знаем (M) Это неопределенные отношения M:N. Давайте добавим студенческую сущность к нашим соображениям. Получаем внешнее неопределенное отношение (см. рис. 2). Бинарное отношение Учитель M N Субъект Термальное отношение Учитель M N Субъект N Студент Рис. 2: Бинарная и внутренняя взаимосвязь (диаграмма ERD)
Компьютеры и защита данных 9. К отношениям следует добавить, что в окончательном проекте, который будет реализован в среде выбранной базы данных, не должно быть неопределенностей и внутренних ссылок, поскольку они не могут быть реализованы в базах данных. На начальных этапах создания ERD мы используем эти ссылки для формализации нашей модели мышления, с которой продолжаем работать. Прежде чем мы углубимся в решение проблемы неопределенности и внутренних привязок, давайте вернемся к атрибутам, то есть спецификации данных, которые мы будем собирать о сущности. Давайте попробуем подумать об атрибутах сущности Учитель. Эта сущность обязательно будет содержать атрибуты Имя, Фамилия, Отдел имы могли бы продолжать в том же духе. Во всех упомянутых здесь признаках отсутствует один существенный признак, они не способны однозначно идентифицировать падеж сущности. Атрибуты, обладающие этой способностью, называются ключами-кандидатами. Из этих ключей мы выберем тот, который мы пометим как первичный ключ. Таким номером может быть идентификационный номер из реестра сотрудников, номер социального страхования, номер страховки и т. д. Разработаем атрибуты всех трех сущностей: Учитель: #IČPedagog, Имя, Фамилия, Факультет Студент: #IČStudent, Имя, Фамилия Тема : #IČPředmět, Name, Credits Для удобства чтения первичные ключи отмечены флагом #. Первичный ключ должен быть установлен для каждого объекта. При этом первичный ключ может быть простым, т.е. состоящим из одного атрибута, как показано в примерах выше, или составным. Составной первичный ключ состоит из нескольких атрибутов. Теперь вернемся к решению отношений M:N и внутренних привязок. Начнем с внешних креплений. Мы можем заменить их парой бинарных отношений, которые, однако, останутся бинарными. Решение показано на рис. 3. Учитель M M N Испытуемый M N Студент Рис. 3: Решение троичных отношений в рамках ERD N Решение отношений кардинальности M:N состоит в том, чтобы заменить их созданием искусственных сущностей, которые будут содержать в качестве составного первичного ключа первичные ключи как изначально связанных сущностей, так и пару отношений кардинальности 1:N , который соединит вновь созданный объект с исходными объектами. В нашем примере нам потребуется создать два искусственных объекта: StudentSubject: #IČPředmět, #IČStudent PedagogPředmět: #IČPedagog, #IČPředmět Графическое решение показано на рис. 4.
10 Компьютеры и защита данных Студент 1 N Студент Тема N 1 Тема 1 1 N Учитель Учитель Тема Рис. 4: Графическое решение мощности M:N N Реляционная диаграмма Реляционная диаграмма ориентирована именно на реализацию в ERD предложенногорешение для выбранной среды базы данных. Реляционная диаграмма больше не позволяет использовать тернарные связи, и в ней не должны появляться отношения кардинальности M:N. Таким образом, реляционную диаграмму можно рассматривать как окончательное решение для диаграммы ERD. Чтобы легко различать ERD-диаграммы и реляционные диаграммы, для построения реляционных диаграмм используется несколько измененная нотация, которая, однако, является производной от нотации, используемой для создания ERD-диаграмм. Сущности при этом заменяются таблицами, сессии остаются, но помечаются немного иначе. Мощность определяется не цифрами или буквами, а стрелками. Простой или отсутствующая стрелка указывает на 1, двойная стрелка указывает на N. Окончательный вид реляционной диаграммы, полученной из рис. 4, можно найти на рис. 6. 6: Окончательный дизайн реляционной диаграммы 1.3 Правила проектирования таблиц В главе 1.2 мы рассмотрели методологию правильного проектирования базы данных как соединение таблиц с помощью отношений. В рамках объяснения мы упомянули атрибуты сущностей, а также объяснили концепцию первичного ключа. В этой главе мы сосредоточимся главным образом на разработке таблиц и интерпретации правил, связанных с этой проблемой. Основная функция базы данных заключается в том, что данные, содержащиеся в ней, должны храниться только в одном месте (в одной таблице), если это возможно. С помощью сеансов мы можем определять связи между таблицами и, таким образом, извлекать данные независимо от того, где они хранятся. При соединении сущностей на диаграмме ERD на рис. 4 отдельные сущности соединялись посредством соединения первичного ключа одной сущности (Student) и части первичного ключа другой сущности (StudentSubject). Однако связанные атрибуты не обязательно должны иметь характер первичного ключа
.
Компьютеры и защита данных 11 обе диеты. Подробнее остановимся на рассмотренном примере, дополним его еще однимсущность, которую мы назовем, например, Отдел: Отдел: #IČKatedry, Имя И свяжем его сеансом с сущностью Педагог, а именно. Рис. 7. Рис. 7: Введение объекта Департамента в ERD. Связанными атрибутами будут: атрибут «Отдел» объекта «Педагог» и атрибут «Идентификатор отдела» объекта «Отдел». Отметим несколько существенных моментов этой связи. Во-первых, эти два атрибута имеют разные имена. Во всей базе данных мы можем иметь столько атрибутов с одинаковыми именами, сколько сочтем нужным, с единственным условием, что атрибуты с одинаковыми именами не могут находиться в пределах одной сущности. Люди создают отношения вручную на основе фактической идентичности атрибутов, а не на основе одинаковых имен. В то же время атрибут сущности Department не является частью первичного ключа. В сущности Педагог он действует как так называемый внешний ключ, т.е. первичный ключ, или ключ-кандидат другой таблицы. То что это ключ не случаен, сессия должна иметь возможность подключать точно указанные записи, а это просто невозможно без атрибутов ключа. Сами атрибуты не могут быть включены в сущности совершенно случайно. Чтобы сущность (и, в конечном счете, таблица) была согласованной в базе данных, она должна быть в одной из так называемых нормальных форм. Есть много нормальных форм. Это требования к свойствам таблиц с указанием проблем, которые могут возникнуть при несоблюдении этих проблем. Учитывая, что нормализация обычно объясняется с помощью так называемого реляционного исчисления, интерпретация которого выходит за рамки и цель данной публикации, мы ограничимся определением основных проблемных ситуаций и способов их решения, вплоть до 3-го уровня нормального форма, которая обычно считается достаточной для сохранения согласованности базы данных. Первая проблема — это проблема повторяющихся полей таблицы. Рассмотрим случай, когда нам требуется, чтобы в базе данных были телефоны учителей, по которым с ними можно связаться в случае необходимости. Самый легкийреализация этого запроса, вероятно, будет следующей: Учитель: #IČPedagog, Имя, Фамилия, Факультет, Тел1, Тел2, Тел3. TelX Где Tel1 — офисный телефон, tel2 домашний, жена, девушка, родители, другая работа, собственный мобильный, корпоративный мобильный. Это повторяющееся поле. В таких случаях непросто даже определить, сколько полей таблицы нужно отвести для этой цели, потому что могут быть крайние случаи, когда у кого-то телефона не будет (отшельник) или будет
12 Компьютеры и защита данных, чтобы иметь даже больше телефонов, чем мы ожидали (телефонный фетишист). Другая проблема заключается в поиске таблицы, построенной таким образом, потому что мы должны искать поля Tel1, Tel2, Tel3 to TelX, чтобы увидеть, есть ли в ней установленный номер телефона, и если да, то нам нужно что-то с ним сделать. По этой причине следует избегать повторяющихся атрибутов. Мы решаем эту проблему, разделив затронутую таблицу на две: Учитель: #IČPedagog, Имя, Фамилия, Телефон отдела: #IČPedagog, #Telephone У нас будет новая таблица под названием Phone, в которой мы сосредоточим все доступные номера телефонов. для данного учителя, независимо от того, сколько их Напоминаю, что таблица Telephone имеет составной первичный ключ, поэтому каждая строка однозначно идентифицируется уникальной комбинацией идентификационного номера учителя и номера телефона. Еще одна проблема, которая может доставить нам неудобства в целостности базы данных, — это проблема транзитивных зависимостей. Хотя повторяющееся поле — это имя, которое говорит само за себя, проблема транзитивных зависимостей, вероятно, ничего вам не говорит, так что же мы подразумеваем под транзитивной зависимостью: это зависимость, в которой одно или несколько полей таблицы зависят от поля. кроме всего первичного ключа. Это определение лучше с точки зрения понимания, чем само название, но дляДля уверенности продемонстрируем транзитивную зависимость на примере. Давайте снова воспользуемся таблицей «Учитель», хотя и немного измененной. Преподаватель: #IČPedagog, Имя, Фамилия, Кафедра, Название кафедры В таблице учителей, по сравнению с исходной версией, мы добавили поле Название кафедры. Так в чем проблема. Мы говорили о том, что такое транзитивные зависимости, давайте попробуем определить, от чего зависят отдельные поля. Таб. 1: Зависимости в таблице Учитель #IČПедагог Имя, Фамилия, Факультет, Название Факультета Название Факультета Так в чем проблема? Либо у нас уже есть таблица в базе, в которой хранятся эти данные, что в нашем случае, и тогда это избыточные данные, которые нужно обновлять совершенно без надобности. Если единственным местом, где мы храним эти данные, является таблица с транзитивной зависимостью, то нам придется столкнуться с реальными проблемами с точки зрения целостности базы данных. Представим ситуацию, когда в рамках организационных изменений был введен новый отдел. Нам необходимо внедрить этот отдел в используемую нами информационную систему (данные из ИС хранятся в нашей базе данных). Мы обнаружим, что введение новой кафедры невозможно до тех пор, пока за ней не закреплен хотя бы один преподаватель. Или наоборот, в рамках организационных преобразований педагоги переходят на другие кафедры, и рассматриваемая кафедра фактически исчезает с переводом последнего педагога, хотя с организационной точки зрения она может еще какое-то время жить. Оба случая опасны, и их следует избегать, если это вообще возможно. Снова решаем проблему транзитивных зависимостей, разделив таблицу на две. Педагог: #IČПедагог, Имя, Фамилия, Факультет Факультет: #ČKatedry, NameKatedry Приведенные выше правила и проблемы, которые может повлечь за собой их несоблюдение, необходимо учитывать, хотя это не догма, которой необходимо следовать любой ценой. В некоторыхв случаях, когда может быть выгодно их нарушить.
Компьютеры и защита данных 13 2 MS Access MS Access является стандартной частью MS Office в версии Professional или выше. В отличие от других программ семейства Office, форматы данных отдельных версий несовместимы друг с другом, и их необходимо преобразовать перед использованием в другой версии Access. В дополнение к вышеупомянутому дистрибутиву MS Access возможно использование MS Access Runtime, который поставляется в составе MS Office Developer Tools, т.е. набора инструментов для разработки приложений в MS Office. Это облегченная версия MS Access, которую можно распространять вместе с базами данных, созданными в MS Access, и в этом случае вы не ограничены необходимостью наличия MS Access на целевом компьютере. Графический пользовательский интерфейс является производным от графического интерфейса пользователя MS Office, поэтому адаптация пользователя удобна и быстра. Итак, давайте, наконец, запустим MS Access и приступим к работе. Мы создадим новую пустую базу данных. Базы данных неявно хранятся в папке документов пользователя, вошедшего в систему под именем databasex, где X — порядковый номер базы данных в папке. После создания базы данных мы получаем новое рабочее пространство, в котором можем создавать различные объекты данных, а также инструменты для работы с ними (см. рис. 8). Гигант. 8: Базовый интерфейс пустой базы данных MS Access На рис. 8 у нас есть базовое меню, часть его функций аналогична функциям других продуктов семейства MS Office, остальные мы объясним позже при объяснении. В меню у нас есть панель инструментов приложения, которая меняется в зависимости от типа объекта, с которым мы работаем. Значение отдельных элементов панели инструментов можно найти в таблице 2. Tab. 2: Значение значков базовой панели инструментов MS Access
14 Компьютеры и защита данных новая база данных (исходная база данных будет закрыта) открыть существующую базу данных сохранить базу данных (теперь неактивна, потому что нечего сохранять)поиск для печати и предварительного просмотра, база данных в настоящее время не содержит объекта, который можно было бы распечатать проверка орфографии вырезание, копирование, вставка кода на один шаг назад, редактор MS Script используется для редактирования макросов в Visual Basic для свойств объекта приложений запускать инструмент проектирования сеанса автоматически создать форму, отчет. Внутри базового интерфейса MS Access мы видим дочернее окно с созданной нами базой данных1. Он имеет собственную панель инструментов, которая содержит инструменты для открытия выбранного объекта, редактирования выбранного объекта и создания новых объектов. Объекты базы данных разделены и собраны по типу. Типы могут быть следующими: таблица, запрос, форма и отчет. Доступ обрабатывает и другие типы объектов, их полный список вы можете увидеть на рис. 8 в окне базы данных1 в левой колонке, но их интерпретация выходит за рамки данной публикации. 2.1 Таблицы Создание таблиц возможно одним из трех способов: Создайте таблицу в режиме конструктора, я также рекомендую этот способ, поскольку он обеспечивает максимальную функциональность. Второй способ — использовать мастер для создания таблицы. Мастер создания таблиц относительно непригоден для обычных целей. Это связано с тем, что он предоставляет пользователю основные типы таблиц и содержащихся в них полей, которые Microsoft предполагает, что вы, скорее всего, будете использовать в базе данных, но, по моему опыту, это не так. Другой вариант — создать таблицу путем вставки данных. В этом случае вы вводите несколько строк таблицы и на основе анализа их содержимого определяется структура базы данных. Из-за автоматического именования полей и невозможности определить первичный ключ в этом режиме этот метод применим к действительно простым таблицам или предполагает, что вы определяете их в режиме конструктора. Итак, вернемся к представлению дизайна.Базовый интерфейс с предварительно заполненной таблицей «Учитель» показан на рис. 9.
Компьютеры и защита данных 15 Рис. 9: Таблица «Педагог» в представлении «Дизайн» Основная панель инструментов изменилась. Значение новых иконок видно из таб. 3. Таб. 3: Значение иконок основной панели инструментов, оформления таблиц (описание относится только к развернутой иконке в крайнем левом углу), это набор инструментов, которые используются для переключения между режимами работы таблицы, особенно между режимом оформления , в котором меняем структуру таблицы, и режим отображения листа данных, в котором заполняем данные. первичный ключ. Этот инструмент используется для обозначения первичных ключей. Индексы используются для определения индексов. Индексы ускоряют поиск, вставляют строки, удаляют строки, в определении полей Microsoft подготовила отдельное окно для определения таблиц. В его верхней части мы определяем отдельные поля таблицы и их тип данных, в нижней части можно добавить более тонкие настройки полей данных. Определение имени и типа данных является обязательным, заполнение описания не является обязательным, оно служит для улучшения ориентации в базе данных, особенно если пользователь возвращается к ее определению спустя долгое время или перенял ее администрирование от кого-то другого. Для именования элементов должно быть верно, что имена будут документировать содержимое этого элемента, т.е. то, что пользователь впоследствии заполнит в этом элементе. Для одновременного наименования
16 Компьютеры и защита данных Мы также можем использовать знаки препинания, крючки и запятые Access как таковые не против. Однако, если вы предполагаете, что в будущем БД будет перенесена в какую-то более крупную БД-систему, в которой уже могут быть проблемы с пунктуацией в названиях предметов, в таком случае необходимо: писать имена предметов без хаков и цареков. У нас есть несколько различных форматов данных, доступных для хранения данных. При создании нового поля данных тип данных выбирается неявнотекст с максимальной длиной 50 символов. В поле этого типа мы можем вставлять буквенно-цифровые символы максимальной длиной 255 символов, при этом можно уменьшить максимальную длину и таким образом сделать работу базы данных более эффективной. Если 255 символов недостаточно, у нас есть тип данных memo, который позволяет вводить до 65 535 символов, чего достаточно для большинства приложений. Помимо объема данных, которые могут поместиться в мемо-поле, основное отличие от текстового поля заключается в том, что мемо-поле нельзя индексировать. Если мы ищем в этом поле, этот поиск может быть довольно долгим, по этой причине мы используем заметки только там, где это необходимо, в противном случае мы предпочитаем текстовые поля. У нас есть числовой тип данных, доступный для ввода числовых данных. В этом типе данных в элементе размера поля мы можем определить желаемый размер поля от байта до десятичного числа с двойной точностью. Типы данных datetime и currency используются для ввода даты, времени и валюты. По сравнению с цифрами или text позволяет вам определить формат, который требуется для этого элемента. Интересным типом является автоматический номер. Это специальный тип данных, который заполняет не пользователь, а компьютер. Он используется для создания уникального номера в данном элементе таблицы, поэтому его часто используют для создания закрытого ключа. При соединении таблиц с помощью сессий необходимо помнить, что тип данных должен быть одинаковым на обоих концах сессии, но это не значит, что на обоих концах сессии может быть автоматический номер! Автоматическая нумерация двух элементов означает, что связанные элементы никогда не найдут связь между собой, либо найдут ее, но она будет ошибочной. Мы можем использовать автоматический номер в таблице, в которой сессия имеет мощность 1. Во второй таблице мы связываем число той же длины (неявно длинное целое число). Тип данных Да/Нет соответствует номеру oдлина 1 бит, т.е. логическое значение ИСТИНА-ЛОЖЬ. Объект OLE позволяет вставлять произвольные объекты (обычно через буфер обмена). Максимальная длина составляет 1 ГБ. Это единственный тип данных, который позволяет сохранять изображения. Теперь давайте заполним записи в соответствии с сущностью «Учитель», с которой мы работали в главе 1. Единственное, что мы еще не показали, — это создание закрытого ключа. Закрытый ключ создается путем выбора строки или строк, которые представляют все поля первичного ключа (действуя так же, как если бы мы выбирали строки в Excel), и щелчка значка ключа, сообщающего Access, что выбранным элементам должен быть присвоен статус первичного ключа. Сохраняем и переходим в режим ввода данных, см. рис. 10. Рис. 10: Ввод данных в таблицу
Компьютеры и защита данных 17 Ввод данных аналогичен работе с MS Excel, конечно за исключением невозможности ввода формул и влияния на формат. Есть несколько замечаний по редактированию данных. Сохранение изменений в строке происходит либо автоматически после перехода на другую строку, либо вручную по клику на иконку дискеты, либо через меню. При удалении строки помечаются как удаленные, но физически не удаляются. Однако восстановление данных невозможно с помощью другой функции, кроме как обратно в MS Access, поэтому будьте осторожны с изменениями, которые вы вносите, ваша работа может быть испорчена. Конкретные инструменты для ввода данных в таблицу описаны в табл. 4. Таб. 4: Панель инструментов для ввода данных в таблицу сортировка по возрастанию или убыванию в соответствии с отмеченным столбцом таблицы фильтрация данных по различным критериям поиск новой записи, отмена записи Давайте теперь покинем эту таблицу и заполним другие таблицы так, чтобы мы получаем состояние, подобное рис. 4 (разумеется, без определенных сессий). 2.2 Сеансы Мы определили таблицы, теперь попробуем определить сеансы. Перед началом работыубедитесь, что у вас есть закрытые таблицы в режиме конструктора, этот рабочий режим является эксклюзивным и не позволяет создавать отношения между такими открытыми таблицами. В процессе работы может случиться так, что вам не удастся создать сессию нужной мощности. Наиболее распространенная причина — несоответствие типов данных полей связанных сессий. Если вы не знаете, как это сделать, попробуйте изучить справочную базу данных, которая прилагается к этой публикации, в ней есть полностью решенный пример, который мы решаем вместе в этой публикации. В окно введения сеансов попадаем из главного окна базы данных (того самого, из которого мы можем открывать различные таблицы, формы. ), нажав на кнопку сеанса (см. табл. 2). Появится диалоговое окно для указания таблиц, которые мы хотим связать с помощью отношений, см. Рис. 11. Рис. 11: Выбор таблиц для установления сессий
18 Компьютеры и защита данных Диалоговое окно должно содержать все таблицы, которые мы создали в базе данных. Мы можем выбирать их по одному или сразу. Вносим выбранные таблицы в реляционную диаграмму с помощью кнопки добавления. Одну таблицу можно добавлять на диаграмму любое количество раз. Это особенно полезно для баз данных с большим количеством таблиц, а сеансы растягиваются на весь экран, что снижает читаемость всей биграммы. В этом случае эффективно добавить копию таблицы где-нибудь рядом с целевой таблицей и определить в ней сессию. Все пять таблиц мы разместим на диаграмме по своему вкусу и с учетом удобочитаемости получившейся диаграммы. Перемещение и изменение размера выполняется как в стандартных окнах Windows, я беру заголовок и перетаскиваю, беру край и изменяю размер. Если на диаграмме есть какие-либо таблицы, я просто отмечаю ненужную таблицу и нажимаю клавишу удаления. Давайте посмотрим на панель инструментов и опции, которые она нам предоставляет (см. табл. 5).Таб. 5: Панель инструментов сеанса добавить таблицы к диаграмме инструменты фильтра сеанса удалить таблицу из диаграммы Обратите внимание, что первичные ключи в таблицах выделены жирным шрифтом. Теперь, как создать сеанс, процедура проста, вы берете поле в исходной таблице и перетаскиваете его в поле в целевой таблице. После того как вы отпустите левую кнопку мыши, появится диалоговое окно для определения свойств сеанса (см. рис. 12). Попробуем продолжить вместе. Возьмите поле IČStudent из таблицы Student и перетащите его в поле IČStudent из таблицы EducatorStudent. Гигант. 12: Определение свойств сеанса Если мы возьмем неправильное поле или поместим его в неправильное поле, мы сможем выбрать правильное поле из таблицы в этом диалоговом окне. Обратите внимание на тип сеанса 1:N (на рисунке 12 внизу). Тип сеанса распознается автоматически. Поэтому, если у вас где-то в структуре базы данных нет типа сеанса 1:N, вы допустили ошибку. Попробуйте найти его и удалить в соответствии с инструкциями в начале этой главы. У нас также есть флажок «Обеспечить ссылочную целостность» в диалоговом окне, который по умолчанию не установлен. Что именно означает этот выбор? Во вводной главе мы составили модель ERD, также упомянули правила правильного создания баз данных, одним из которых будет
Компьютеры и защита данных 19 хотели бы повторить в этом контексте, что данные хранятся только в одном месте и связаны с другими данными через сеансы. Обеспечение ссылочной целостности применяется, когда мы манипулируем первичным ключом или записью в целом. Рассмотрим пример: пусть у нас есть база данных, похожая на нашу. В таблице Student давайте рассмотрим число рождения как первичный ключ для этого случая. При вводе данных сотрудник исследования ошибся и написал другой номер социального страхования. Через два года учебы, во время плановой проверки, клерк заметил ошибку и исправил ее. Но также появляется число рождения студентав таблице StudentSubject, которая содержит все зачисленные предметы учащегося. Затирая число рождения в студенческой таблице, студент внезапно терял все свои результаты учебы. И что еще хуже, появился еще один ученик (новый), у которого чисто случайно число рождения было таким же, как у исходного неправильного первого ученика, сразу после регистрации выяснилось, что он уже прошел ряд предметов. Чтобы избежать этих ошибок, необходимо обновить соответствующие поля в других таблицах. MS Access обрабатывает эти задачи автоматически, если мы скажем ему сделать это автоматически, т. е. установите флажок, чтобы обеспечить ссылочную целостность, а затем каскадно обновить связанные поля и каскадно удалить связанные поля. Когда нас устраивают настройки, нажимаем кнопку «Создать». Мы определим другие сеансы аналогичным образом. Результат должен соответствовать рисунку 13. Рис. 13: Реляционная диаграмма базы данных Небольшое примечание в конце этой главы. Создавая сеансы, мы несколько ограничили возможности редактирования базы данных, т.е. структуры таблиц, особенно переопределения первичных и внешних ключей. Если вы обнаружите необходимость изменить эти данные, вы должны сначала удалить все сеансы из таблицы, которую вы собираетесь редактировать (ее структуру), внести необходимые изменения, а затем переопределить сеансы.
20 Компьютеры и защита данных 2.3 Формы Формы используются для создания простого графического пользовательского интерфейса для редактирования данных. Для демонстрации возможностей форм нам потребуется что-то заполнить в таблицах Учитель, Предмет и Студент. Попробуйте заполнить хотя бы две-три записи в этих трех таблицах. Используйте режим просмотра таблицы для заполнения. Таким образом, данные могут быть произвольными. Оформить форму мы можем либо на зеленом поле, т.е. в режиме конструктора, либо с помощью мастера.В отличие от создания таблицы, мастер более удобен в использовании и может успешно использоваться в качестве основы для выполнения определенных функций, необходимых для вашей базы данных. Приступим к созданию форм через мастер. На первом экране мастера мы определяем запросы или таблицы, на основе которых мы намерены построить форму. У нас нет ничего, кроме таблиц, определенных в нашей базе данных, поэтому мы пока не можем использовать ничего, кроме таблиц. На этом экране мы определяем отдельные элементы, которые хотим отобразить в форме. Гигант. 14: Руководство по созданию формы, выбор полей Мы выбираем поля, сначала выбирая таблицу, из которой мы собираемся использовать элементы, и перемещая эти элементы с помощью > (по одному) >> (все) из доступных полей в выбранные поля. В случае, если необходимо использовать содержимое нескольких таблиц в форме, мы продолжим, выбрав другую таблицу и добавив ее поля к выбранным полям. Только когда мы удовлетворены выбором полей для формы, мы нажимаем «Далее». Нашей целью будет создание формы учителя, поэтому мы выберем все поля таблицы учителей и нажмем «Далее».
Компьютеры и защита данных 21 Рис. 15: Выбор макета формы Если мы опустим интерпретацию сводной таблицы и графика, которые имеют особое назначение, у нас останется четыре типа макета на выбор. Мы можем разделить их на две группы в зависимости от того, сколько записей они отображают на одном экране. Столбцы и выровненные будут отображать только 1 запись, а таблица и таблица — больше. Для нашего приложения будет достаточно только одной записи на экране, поэтому выберем выровненную и нажмем далее. Гигант. 16: Определение визуального стиля формы
22 Компьютеры и защита данных На следующем этапе мы определяем визуальный стиль формы. Access имеет довольно много встроенных визуальных стилей. При выборе стиля следуетпоследовательным, поэтому, если возможно, используйте один стиль для всех форм, которые мы создадим. Выберите стиль, который вам близок, и нажмите «Далее». Гигант. 17: Именование формы Нас ждет последний шаг создания формы, присвоение ей имени и решение, как отобразить результат наших стараний. По умолчанию форма называется так же, как таблица или запрос, на основе которых она была создана. В нашем случае Учитель. Когда у вас есть большое количество объектов и вы работаете с ними через макросы, может возникнуть путаница, если объекты разных видов останутся с одними и теми же именами. Чтобы различать отдельные типы объектов, мы можем использовать систему префиксов, непосредственно определяющих тип объекта в имени. В примере я использовал префикс frm для формы, т.е. результат frmpedagog. Система префиксов MS Access не требует и никаким образом не проверяет имена на наличие префиксов, это просто простой способ повысить читаемость базы в целом. Мы можем отобразить полученную форму либо в режиме дизайна, либо в режиме отображения информации, в зависимости от того, хотим ли мы сразу внести изменения во внешний вид или нет. Имеем форму, отображаемую в режиме отображения информации. Наш результат должен быть похож на рис. 18. Рис. 18: Результат создания формы с помощью мастера
Компьютеры и защита данных 23 Когда вы достаточно довольны своим творением, закройте форму, и мы попробуем что-то немного более сложное, мы попробуем создать форму для преподавателей, которым мы хотели бы назначить предметы, которые они преподают внутри формы. Снова запускаем мастер, снова выбираем все поля таблицы Teacher, но также выбираем все поля таблицы TeacherSubject. Обратите внимание, что мастер создания формы немного изменился по сравнению с предыдущим примером. Теперь у нас есть диалог для выбора того, в соответствии с чем мы хотим просмотреть данные. Гигант. 19:Определение того, что просматривать данные Мы должны просматривать данные в соответствии с таблицей, которая в конце сеанса имеет кардинальность 1. В нашем примере это таблица «Учитель». Из предварительного просмотра видно, что учитель появляется один раз в результирующей форме, а его предметы появляются в подчиненной форме. Нажимаем далее. На этот раз у нас нет возможности выбрать макет основной формы и подчиненной формы, а только подчиненные формы, наш выбор также был ограничен листом данных и таблицей, потому что подчиненная форма логически должна отображать больше записей в одной форме. Итак, мы выбираем макет таблицы (в отличие от листа данных, к нему применяется визуальный стиль) и нажимаем «Далее». После определения стиля мы даем имя форме и подчиненной форме и отображаем результат в режиме отображения информации. Результат должен соответствовать рис. 20.
24 Компьютеры и защита данных Рис. 20: Форма с подформой, созданной с помощью мастера.Полученная форма имеет один существенный недостаток: требует от пользователей запоминания идентификационного номера субъекта, что довольно далеко от оптимального решения, поэтому понятно, что без него не обойтись на этот раз изменив форму. Итак, давайте откроем форму в режиме конструктора и сначала посмотрим на возможности, которые предоставляет нам среда разработки. Панель инструментов содержит несколько значков, с которыми мы еще не сталкивались, их описание можно найти в Таблице 6. Вкладка. 6: Панель инструментов режима разработки формы, список инструментов, набор инструментов, автоматический формат, используемый для изменения визуального стиля формы или элемента формы, в соответствии с выбранным кодом, открывает среду разработки для макрос-дизайна, свойства построения макроса, выражения, кода через поле значок списка, он будет отображать/скрывать список доступных полей активной формы. Обратите внимание, как меняется список полей при выделении элементов основной формы и подчиненной формы.Через список полей мы можем легко создать новый элемент в форме, просто захватив поле, которое мы хотим создать в форме, и перетащив его в то место, где мы хотим его создать в форме. Гигант. 21: Список полей
Компьютеры и защита данных 25 Мы рассмотрим, как отдельные элементы формы связаны с таблицами, т. е. как Access узнает, какие данные и где хранить. Щелкнем по элементу формы имени и просмотрим его свойства. Гигант. 22: Свойства имени текстового поля В свойствах на вкладке данные или все у нас есть возможность установить источник элемента управления, т.е. желаемую привязку элемента к полю таблицы. Благодаря этой настройке у нас есть возможность привязать к полю таблицы даже те элементы, которые были созданы исключительно в режиме конструктора. Теперь давайте погрузимся в создание поля со списком, мы можем найти этот элемент в панели инструментов. Некоторые элементы набора инструментов описаны в таблице 7. Табл. 7: Элементы управления мастера выбора объектов панели инструментов, когда вы отметите этот инструмент, после создания некоторых элементов в форме, мастер начнет устанавливать свойства этого элемента (убедитесь, что этот инструмент отмечен) всплывающей подсказки. Это статический текст, который обычно не связан с таблицами и, таким образом, остается неизменным текстовым полем в форме, фактически это пара элементов текстового поля и связанная с ним метка, этот элемент должен быть привязан к элементу списка. стол. Он сочетает в себе функциональность текстового поля со списком, позволяя пользователю вводить значение или выбирать его из списка.Во-первых, мы создаем пространство для работы. Мы создаем его, захватывая верхний край нижнего колонтитула формы (серая полоса со словами в нижнем колонтитуле формы) и перетаскивая его вниз. Затем мы выбираем список на панели инструментов и щелкаем в свободном месте. Внимание, мы работаем всубформы! Если вы создадите поле со списком на главной форме, вы не сможете привязать его к нужному полю таблицы!
26 Компьютеры и защита данных Рис. 23: Мастер списка У нас есть три варианта заполнения списка данными, из которых пользователь должен иметь возможность выбирать. Мы можем загрузить значения из существующей таблицы, это наш случай. У нас есть таблица тем, которая содержит данные имени субъекта, из которых мы хотим выбрать. Еще одним преимуществом этой опции является своевременность, в случае обновления таблицы Тема поле со списком также будет автоматически обновлено (при следующей загрузке формы). Второй вариант заключается в том, что значения вводятся пользователем вручную, и, наконец, у нас есть возможность извлекать значения из существующих полей формы. С точки зрения гибкости я бы рекомендовал решать путем подключения к таблице. На следующем шаге мы выбираем таблицу Subject и нажимаем «Далее». Появится наше старое знакомое окно для выбора полей, которые мы хотим использовать. По логике мы должны выбрать значение, которое также содержится в таблице TeacherSubject, иначе не было бы возможности ввести в форму таблицу Subject. Далее выбираем Name, то есть тот пункт, на основании которого пользователь будет принимать решение. Я оставлю пункт титров на рассмотрение, но мы можем добавить его туда, а можем и нет.
Компьютеры и защита данных 27 Рис. 24: Скрывать или не скрывать ключевой столбец Скрывать или не скрывать ключевой столбец — вот вопрос, которому посвящен этот шаг мастера. Что это значит для нас? Выбранные поля содержат идентификатор субъекта, это первичный ключ предметной таблицы. Это поле имеет характер автоматического номера, поэтому содержимое этого поля не имеет никакого практического значения, которое могло бы повлиять на решение пользователя о выборе. Таким образом, мы можем установить флажок скрыть ключевой столбец. После проверки идентификатор субъекта не будет отображаться во время выбора, хотя он все равно должен оставаться в поле списка,без него мы не сможем подключить этот элемент к форме. Гигант. 25: Что делать с заполненным значением
28 Компьютеры и защита данных Заполненное значение списка можно запомнить для дальнейшего использования. Однако под этим более поздним использованием мы подразумеваем подключение логики, обрабатывающей эти данные, через некоторый макрос, связанный с некоторым элементом управления. Альтернативой этому варианту является сохранение значения в одном из полей. В нашем случае мы выбираем второй вариант и подключаем поле со списком к полю IČPředmět. Доработаем мастер и в режиме конструктора только исправим внешний вид, т.е. в первую очередь удалим лишнее теперь текстовое поле IČPředmět, его заменяет вновь созданное поле со списком. Кроме того, мы могли бы уменьшить рабочую область, чтобы нам начал нравиться внешний вид подчиненной формы. Результат нашей работы должен быть близок к результату, показанному на рис. 26. Рис. 26: Модифицированная подчиненная форма со списком Попробуйте немного поиграть с дизайном формы, изменить внешний вид, поэкспериментировать с созданием элементов, которые мы здесь не рассмотрели. 2.4 Запросы Прежде чем мы начнем создавать запросы, мы могли бы кратко сказать, что такое запросы и для чего их можно использовать. Запросы, как следует из их названия, позволяют создавать выборку данных из базы данных с возможностью определения ограничительных условий. Мы используем запросы для получения данных, которые затем можем использовать в каком-либо другом приложении (MS Excel и т. д.), либо мы можем создать форму или отчет на основе запроса. Опять же, мы создаем запросы аналогично формам. Однако режим проектирования существенно отличается. Мы попробуем создать два запроса, которые будут получены из представления данных, которые мы реализовали через формы. В первом запросе делаем выборку из таблицы Учитель. Мастер очень похож на мастер создания формы, поэтому его следует правильно настроитьне должно быть проблемой. Я обычно выбираю букву q (от английского query) в качестве префикса запроса. Представление «Дизайн» и режим отображения данных показаны на рисунках 27 и 28.
Компьютеры и защита данных 29 Рис. 27: Представление «Дизайн запроса» Рис. 28: Режим отображения данных запроса. Верхняя часть окна режима дизайна работает аналогично окну дизайна сеанса, включая значок для заполнения таблиц. Во-первых, мы должны выбрать все таблицы, которые хотим использовать в запросе. Затем мы перетаскиваем отдельные поля таблицы, которые мы хотим получить как часть запроса, из таблиц в нижнюю часть экрана. В нижней половине окна у нас есть список выбранных полей с определением таблицы, из которой они берутся. Для каждого поля есть возможность задать сортировку записей по алфавиту по возрастанию или по убыванию, либо вообще не сортировать (по умолчанию). Если мы сортируем по нескольким элементам, элементы слева имеют более высокий приоритет сортировки. То есть, если я разрешаю полям Имя и Фамилия сортироваться по возрастанию, записи сортируются сначала по имени, а там, где имя совпадает, сортировка выполняется по фамилии. Порядок отдельных полей можно изменить, просто выделив весь столбец поля и перетащив его вправо или влево, как того требует ситуация. Флажок Показать влияет на то, будет ли данное поле отображаться в результатах запроса. Могут быть такие поля, важные для выбора записей, но мы не требуем их наличия в результате. Критерии используются для определения ограничений, в соответствии с которыми записи выбираются из связанных таблиц. Формирование критериев зависит от типа поля, для которого мы формулируем условие. Текстовые поля Like Š* Like *š* Like *š выбирает все записи, которые начинаются с Š в заданном поле выбирает все записи, содержащие š в любом месте данного поля аналогично выбирает все записи, где š стоит в конце
30 Компьютеры и защита данныхНе как. выбирает те записи, которые не удовлетворяют заданному условию (противоположность вышеприведенным примерам) Обратите внимание, что размер шрифта в запросе не имеет значения. Числовые поля > 1, , т.е. <>2 выбирает записи больше или меньше числа 2. Пишем условия, которые должны выполняться одновременно, в одну строку и соединяем их оператором and. Следовательно, <>2 можно заменить на >2 и отношения (см. рис. 33). Гигант. 33: Определение отношений между таблицами
34 Компьютеры и защита данных OO Base использует другую нотацию 1:n для записи сеанса. Такая нотация, однако, следует отметить, ближе к корректной с точки зрения информатики реализации ERD. С точки зрения графического рендеринга OO Base также не делает различий между обычным сеансом и сеансом, для которого определено каскадное обновление или удаление. Определение сеанса состоит из установки связанных полей в объединенных таблицах. Однако, в отличие от MS Access, за некоторыми исключениями, OO Base не определяет эти поля сам по себе, их необходимо задавать вручную. 3.3 Формы Реализация форм в OO Base существенно отличается от реализации форм в MS Access, т.к. OO Base использует для их реализации сервисы OO Writer, при этом используя возможности OO Writer работать через унифицированный интерфейс с разными данными источники. Тогда OO Base является лишь одним из этих ресурсов. Во-первых, в OO Base к одной форме можно подключить не более двух таблиц. Результатом работы всегда является форма (не форма, а подчиненная форма, как в MS Access). OO Base обеспечивает это возможностью реализации сеток для отображения данных из связанных таблиц. Форма как таковая создается в восемь шагов 1. выбор полей (основная таблица) позволяет пользователю выбрать поле из основной таблицы 2. установка подчиненной формы мы устанавливаем дочернюю таблицу, если она у нас есть. Мы можем создать таблицу на основе подчиненной формывыбрать в соответствии с сеансом, который ведет к нему из основной таблицы (здесь окупается тщательный дизайн базы данных) 3. добавить поле подчиненной формы устанавливает поле подчиненной формы из дочерней таблицы, если она была выбрана 4. отображать связанные поля позволяет пользователю установить в соответствии с какие элементы таблицы могут быть связаны. Этот шаг можно пропустить (или он будет пропущен), если сеансы определены правильно. 5. Расположите элементы управления — заботится о расположении элементов в основной форме и подчиненной форме. Для основной формы я рекомендую любой макет, кроме как в виде таблицы, для подчиненной формы я рекомендую особенно в виде таблицы. Однако любая комбинация макетов функциональна. 6. Настройка ввода данных отвечает за установку прав, которые пользователь будет иметь для работы с формой. Например, можно запретить модификацию данных, добавление или удаление данных 7. Использование стилей обеспечит легко применимый внешний вид формы к функциональности всей формы 8. Задать имя задает имя, под которым будет форма сохранены в базе данных. Результатом процесса проектирования является форма, показанная на рис. 34. Работа с формами в режиме редактирования данных имеет определенную специфику. Например. сетка подчиненной формы инициализируется для новой записи только после перехода к другой записи и обратно. Режим проектирования имеет аналогичную специфику. Дважды щелкните любой элемент данных, чтобы получить доступ к его свойствам. При просмотре недвижимости будьте осторожны с тем, что вы на самом деле просматриваете. Это связано с тем, что текстовые поля неявно выбираются даже с прикрепленными к ним метками, а в окне свойств отображаются только общие свойства. Вы выбираете отдельный элемент, удерживая нажатой клавишу CTRL и щелкая элемент. Из всех свойств наиболее важными, вероятно, являются свойства, содержащиеся на вкладке данных. Здесь определяется подключение к таблицам. В свойствах поля можно определить только подключение к другому элементу ztable, в случае необходимости переопределить саму таблицу, то нужно отобразить свойства формы в целом. Делаем это по праву
Компьютеры и защита данных 35 щелкните любое поле формы и выберите «Форма» в контекстном меню. Гигант. 34: Форма Дополнительные поля (или полностью новая форма) могут быть определены с помощью инструментов, включенных в панель инструментов «Дизайн формы». Его можно просмотреть через меню View -> Панели инструментов -> черновая форма. При создании формы вручную мы сначала определяем свойства формы в целом (в первую очередь данные), а затем связываем с данными отдельные поля формы. 3.4 Запросы Запросы служат для соединения таблиц с целью получения из них данных в табличной форме. Кроме того, запрос можно использовать в качестве основы для создания выходных отчетов. Пример создания запроса показан на рис. 35. Отдельные элементы запроса можно определить, просто перетащив поля из таблиц вниз в свободные поля запроса. Для элементов с одинаковым именем, даже из разных таблиц, необходимо определить так называемый псевдоним или альтернативное имя. Поскольку OO Base не сможет сама решить, на какой элемент мы на самом деле ссылаемся, определяя псевдоним, мы устраняем эту неопределенность. Сортировка и построение критериев работает аналогично аналогичным функциям MS Access, за исключением параметрических запросов, которые OO Base не поддерживает. При этом способ создания так называемых агрегирующих запросов также частично отличается. OO Base обрабатывает каждый запрос как обычный, пока для него не определена функция агрегирования. С этого момента запрос обрабатывается как запрос агрегации. Все элементы запроса агрегации должны быть снабжены функциями. Мы группируем текстовые элементы, мы можем применять функции вычисления к числовым элементам.