РГГУ – СоцФ – PR, Маркетинг
ИНФОРМАТИКА – преп. Малкова А.С.
Задания/Access-основы
Это старая версия Задания/Access-основы за 2008-05-06 22:15:14..

Введение

В чем различие между искусственным интеллектом и естественным?


Ученые всего мира бьются над созданием «Искусственного интеллекта» – Электронного Разума, который бы не уступал человеческому.
Как знать, быть может уже очень скоро нас будут окружать разумные существа, мигающие разноцветными лампочками. Но пока они населяют только страницы фантастических романов. И дело не только в «электронных технологиях будущего» – сверхбыстрых микросхемах, сверхъемких носителях информации, сверхпрочных эластичных материалах. Дело в том, что разум Человеческий и разум Компьютерный существенно отличаются друг от друга.
Стоит нарисовать кружок с уголками-ушками и точками-глазками, и даже ребенок узнает в нем кошку. Ту самую кошку Машку, которая спит на кресле, свернувшись калачиком.
Компьютер же простой вопрос: «Что изображено на картинке?» поставит в тупик, потому что он не умеет НАХОДИТЬ ОБЩЕЕ в различном, мыслить образно, ассоциативно, обнаруживать аналогии.
Зато компьютер прекрасно умеет РАЗЛИЧАТЬ. Два десятизначных числа, отличающихся одной цифрой – для него это абсолютно разные числа, и он никогда их не перепутает. Человек помнит пять-десять телефонных номеров своих знакомых и родственников, а телефонный оператор каждую секунду безошибочно соединяет десятки тысяч абонентов.


Пройдет еще немало времени, пока компьютер научится разговаривать, смеяться над хорошей шуткой, показывать на фотографии: «А это я!»
Зато если нужно быстро и безошибочно найти один-единственный предмет среди десятков тысяч подобных, будь то товар в супермаркете, книга в библиотеке, сотрудник большой компании или счет в банке, компьютерное «умение» приходится очень кстати.
Базы данных – это как раз тот случай, когда компьютер оказывается на высоте!


Базы данных


Ассоциация клубов любителей собак решила провести выставку породистых собак. На выставку съезжаются владельцы собак из разных городов и привозят своих любимцев. Эксперты будут осматривать животных и оценивать их внешний вид (на соответствие стандартам породы) а также проверять, насколько хорошо собаки слушаются своих хозяев и много ли знают команд.
Участников очень много. Чтобы выставка прошла успешно, не было задержек с подсчетом оценок, регистрацией участников, не возникло путаницы и накладок с турнирными номерами, организаторы приняли решение создать единую базу данных для выставки. Они обратились к специалистам по базам данных и попросили их разработать БД.


Вот что получилось в итоге у разработчиков:



Загрузить видео в rar-архиве: http://informatika.delayu.ru/app/video/8-access1-demo.rar


Как же разработчикам удалось сделать такую БД? Давайте посмотрим!


Таблицы


Организаторы предоставили разработчикам следующие примерные списки участников выставки:
1. Мигунова О.В. e-mail: mig2000@yandex.ru; тел: 762–25–42; собаки:

  1. Дарвин сеттер-гордон 12.09.1998
  2. Тибальд шар-пей 03.12.2000
  3. Дези английский сеттер 03.08.2003

2. Гороховец А.А.e-mail: tiger@post.ru; тел: (924)56З-47–53; собаки:

  1. Снорри сеттер-гордон 15.06.2003
  2. Аманда английский сеттер 16.01.2003
  3. Честер английский сеттер 12.08.2002

3. Костунова А.Е. e-mail: kostunova@rambler.ru; тел: (9О3)915–75–65; собаки:

  1. Тедди шар-пей 18.02.2006
  2. Ульрика шар-пей 01.03.2006

На основе этих списков можно создать таблицы базы данных, поскольку информация здесь хорошо структурирована, т.е. ее можно представить в виде таблиц, у которых в строках перечислены различные объекты, а в столбцах – различные характеристики этих объектов. Если у объектов характеристики разные, то их нужно поместить в разные таблицы. Вот так:



Строка в БД называется записью, а столбец – полем, список всех полей в таблице – схемой таблицы.


Однако, пока здесь отсутствует информация о том, как соотносятся собаки их владельцы (где чья собака). Особенность баз данных заключается в том, что здесь можно связывать данные из разных таблиц. Связи устанавливаются так:


1. Перенумеруем записи во всех таблицах так, чтобы номера в одной таблице не повторялись. Для этого создадим специальное поле Id (идентификатор).
2. Создадим в таблице с собаками поле-ссылку PersonId, в котором будет указан Id владельца данной собаки.
Вот, что получилось:



То, что вы видите на рисунке, есть настоящие таблицы БД.


Возможность создавать множество таблиц и устанавливать связи между ними является уникальной чертой, отличающей БД от простых электронных таблиц. Недаром символом Access является ключ, ведь первое поле таблицы с идентификатором (Id), уникальным для каждой записи, называют еще ключевым полем. Именно благодаря тому, что у каждой записи есть уникальный номер, записи можно связывать. Такие базы данных со связями называются реляционными.


Важное дополнение: Идентификатор не несет никакой смысловой нагрузки. Будет ошибкой принимать за идентификатор турнирный номер собаки, порядковый номер в алфавитном списке (владелец с фамилией на букву «Я» может иметь Id меньше, чем владелец с фамилией на «А») и т.п. Идентификаторы преследуют только одну цель – служить для связи записей из разных таблиц. Их главное преимущество в том, что они уникальны, т.е. в одной таблице нет двух записей с одинаковыми Id.


Теперь, когда вы знаете, что в Access можно связывать данные из разных таблиц, посмотрите, можно ли устроить таблицу tbDog более оптимально?


Обратите внимание, что названия пород часто повторяются.


Если некоторые данные имеют тенденцию регулярно повторяться, то целесообразно выносить их в отдельную таблицу, а здесь оставлять только ссылки:



Это решение имеет несколько преимуществ:
1. Экономится время при добавлении данных (при внесении в БД новой собаки не нужно набивать с клавиатуры ее породу, достаточно просто поставить номер);
2. Если потребуется отредактировать данные, то достаточно будет изменить всего одну запись. Вам не придется править несколько десятков (а то и сотен!) записей;
3. Наконец, экономится память компьютера.


Бывают и более сложные случаи связей между таблицами. Рассмотрим такой случай. В базу данных включена информация об оценках, выставленных экспертами собакам за экстерьер и за дрессировку.
Организаторы выставки предоставили разработчикам БД оценочные листы на собаку, и сообщили, что количество экспертов может варьироваться от трех до семи человек:



Проблема здесь заключается в том, что в одной ячейке нельзя размещать несколько значений через запятую. Иначе компьютер не может обрабатывать эти составные значения с помощью встроенных функций: (складывать, находить средний балл и т.п.). Всомните, как мы применяли функции в Excel!


Мы отчасти сможем решить эту проблему, если разнесем оценки по отдельным ячейкам, но и это решение едва ли можно назвать удачным, ведь теперь мы столкнулись с другой проблемой: количество судей может варьироваться, а значит, мы не знаем, сколько полей должно быть в таблице:



В таких случаях в БД принято использовать следующее решение:
1. Собаки и судьи у нас находятся в двух разных таблицах: tbDog и tbExpert. И тех и друших может быть произвольно много.
2. Создаем дополнительную таблицу tbMark, в которой будут находиться ссылки на записи из двух первых таблиц (а также непосредственно оценки):


Теперь мы не ограничены количеством присутствующих на выставке экспертов. Их может быть сколько угодно: два, пять, десять… все данные будут на месте и нам не придется менять схемы таблиц!


***


Нам уже трижды приходилось использовать связи между таблицами. Первый раз, когда мы связывали собак и их владельцев. Второй раз, когда мы выносили породы в отдельную таблицу. И третий, когда судьи должны были выставлять собакам оценки. На этих трех примерах мы могли наблюдать два основных типа связей между таблицами: «один-ко-многим» и «многие-ко-многим». При каждом типе используется свое решение (создание дополнительного поля или дополнительной таблицы). Отличить один тип связи от другого вам поможет ключевая фраза:

тип связи «один-ко-многим» «многие-ко-многим»
пример собаки и владельцы, породы собак оценки судей
ключевая фразау каждой собаки может быть ТОЛЬКО ОДИН владелец, но один владелец может иметь НЕСКОЛЬКО собак каждый судья ставит оценки НЕСКОЛЬКИМ собакам, и каждая собака получает оценки от НЕСКОЛЬКИХ судей
что делать? в таблице (tbDog) создаем ДОПОЛНИТЕЛЬНОЕ ПОЛЕ PersonId и записываем туда Id владельца каждой собаки создаем ДОПОЛНИТЕЛЬНУЮ ТАБЛИЦУ tbMark (оценка) и в ней перечисляем попарно: какую оценку поставил такой-то судья такой-то собаке

Отображение на одном листе списков полей всех таблиц и связей между ними называется СХЕМОЙ ДАННЫХ:



Итак, вспомним еще раз правила организации таблиц в БД.
1. Первое поле таблицы – идентификатор (Id); оно нужно для связи записей в разных таблицах; в одной таблице не может быть двух записей с одинаковыми идентификаторами.
2. Данные не дублируются: если данные в каком-то поле (полях) имеют тенденцию регулярно повторяться, их следует выносить в отдельную таблицу (пример: породы).
3. Данные не объединяются: в одну ячейку нельзя записывать несколько значений через запятую, иначе случае компьютер не сможет их обработать. Вероятнее всего в этом случае мы имеем дело с отношением «многие-ко многим» (пример: оценки).
4. Существует два основных типа связей между таблицами «один-ко-многим» и «многие-ко-многим». В первом случае необходимо в главной таблице создать дополнительное поле (со ссылкой), во втором – дополнительную таблицу.
Строка таблицы называется записью, столбец – полем, а список всех полей – схемой данных.


Запросы


Данные в БД хранятся в таблицах, связанных между собой с помощью идентификаторов. Таблицы могут содержать несколько сотен тысяч записей. Просматривать такие таблицы, особенно, если в них много ссылок друг на друга, достаточно сложно. Необходим удобный инструмент, который позволит извлекать из таблиц и выводить на экран нужные данные. Таким инструментом являются ЗАПРОСЫ.

Формат запроса

Стандартный запрос на выборку задается так:
1. вы говорите, какие таблицы вам потребуются;
2. какие поля в этих таблицах вас интересуют и
3. (если есть) условие отбора.


Например, мы хотим узнать клички собак Мигуновой.
1. нам потребуются таблицы tbDog и tbPerson
2. в tbDog поле Name (кличка собаки), в tbPerson поле LastName (фамилия владельца)
3. зададим связь tbDog.PersonId = tbPerson.Id и условие отбора LastName = " Мигунова"


Если у Мигуновой несколько собак, выведется несколько записей:



Типы запросов

Таблицы – это пассивное хранилище данных, а запросы позволяют не только просматривать выборочно данные, но и редактировать их: добавлять новые записи в таблицы, удалять, менять данные в определенных ячейках. Это так называемые запросы на добавление, на удаление, на обновление. Например, если заболел единственный эксперт по русским той-терьерам, то эта порода не сможет принять участие в выставке и нужно будет удалить из базы данных всех собак этой породы вместе с их владельцами.

Запросы с вычислениями

С помощью запросов можно не только выводить на экран данные, записанные в ячейках таблиц, но и производить ВЫЧИСЛЕНИЯ: по дате рождения определять возраст, из фамилии, имени и отчества делать фамилию с инициалами, подсчитывать среднюю и суммарную оценку, по цене единицы товара и его количества определять общую стоимость покупки, по дате выдачи книги в библиотеке определять величину штрафа при задолженности. Для вычислений используются функции (похожие на те, что есть в Excel).


Формы


Когда мы открыли базу данных «Выставка собак», вы увидели на экране своего компьютера не таблицы и запросы, а ФОРМЫ – окна с различными элементами управления – полями, кнопками, списками и др.
Как правило, пользователи базы данных не имеют прямого доступа к таблицам и запросам. Для этого нужна профессиональная квалификация и знание схемы данных, а также (что немаловажно!) права доступа. Таблицы и запросы относятся к закрытой, хорошо охраняемой части БД, т.к. неумелый или злонамеренный пользователь может вывести из строя всю систему, просто поменяв названия таблиц или полей или удалив часть записей. Для охраны данных, а также для удобства использования информация из БД выводится в формах.

Юзкейс

Проектирование форм для БД тесно связано с понятием юзкейс. Что это такое?
Одной и той же базой данных могут пользоваться разные люди для разных целей. Возьмем, к примеру, электронную библиотеку.
БД включает несколько таблиц – в одной перечислены книги tbBook, в другой– читатели tbReader, в третьей – (поскольку здесь связь – «многие-ко-многим») заказы tbOrder (такой-то читатель взял такую-то книгу такого-то числа).
Читателю хочется посмотреть, есть ли интересующая его книга в библиотеке, и если есть, то оформить заказ.
Библиотекарь по штрих-коду открывает личную карточку читателя, смотрит, сколько книг у него на руках, нет ли задолженностей, и добавляет или снимает книги с карточки.
Сотрудник библиотеки заполняет базу, когда в фонды библиотеки поступают новые книги; смотрит, на какие издания существует повышенный спрос, сколько экземпляров закреплено за читальным залом, а сколько на абонементе и т.д.
Каждая такая ситуация использования БД разными группами пользователей на языке разработчиков называется юзкейсом (от англ. use case – «случай использования»). Для каждого юзкейса требуется специальная форма со своим набором данных, с определенной функциональностью. Проектируя форму, разработчик должен ответить на вопрос: «Кто и с какой целью обращается к БД?»


Задание Посмотрите еще раз демонстрацию БД и распишите юзкейсы по следующей табличке:



Отдельные формы или даже фрагменты форм могут быть защищены паролями. Например, форма, в которой судьи выставляют оценки собакам.


Макросы


Пользователь БД, работая с формами, нажимает на кнопки, вводит данные, выбирает значения из списка и т.п. Другими словами, формы интерактивны – пользователь совершает некоторые действия, а компьютер на них реагирует. Реакция компьютера записывается в небольших программках, которые называются МАКРОСЫ. С помощью макросов можно открыть новое окно, перейти к искомой записи, отсортировать записи, вывести данные на печать и др.


Модули


Более сложные операции по преобразованию данных, нестандартной интерактивности записываются на языке программирования Visual Basic for Applications (VBA) в специальном редакторе. Но для того, чтобы писать такие программы, надо уже быть специалистом в программировании.


Демонстрация


Таблицы, запросы, формы, макросы и модули являются частями базы данных. Давайте теперь взглянем на БД «Выставка собак» глазами разработчика и посмотрим, как в ней реализованы таблицы, запросы, формы и макросы.



Загрузить видео в rar-архиве: http://informatika.delayu.ru/app/video/8-access3-elements.rar


А сейчас вы уже можете создать вашу первую небольшую БД. Вам, теперь уже как разработчикам, понадобятся еще две вещи :
1. Стандарты именования
Вы, наверное, обратили внимание, что имена таблиц, полей в таблицах, запросов, форм, отчетов и макросов записаны по-английски. Это не случайно! В соответствии с профессиональными стандартами имена основных элементов БД записываются латинскими буквами без пробелов (если название состоит из нескольких слов, то его записывают или через нижнее подчеркивание dog_age или каждое слово с большой буквы DogAge).
В названиях таблиц, запросов, форм используются префиксы tb…, fm…, qu… (от query – «запрос»), mc… – макрос, rp… – (от report – «отчет»).


Требование использовать латинские буквы связано с тем, что буквы кириллицы могут некорректно отображаться из-за несоответствия кодировки (вместо них полезут всякие закорючки).
Требование не использовать в названиях пробелы и писать приставки направлено на то, чтобы самим же разработчикам было удобнее работать с БД. Сравните
tbDog.BirthDate = 12.03.05 и
gods show.very important information = 5.
В первом случае запись легко читаемая: понятно, что в таблице Собаки значение поля Дата рождения у текущей записи равняется 12 марта. Что написано во втором случае, остается только гадать.


2. Режим конструктора
В верхнем левом углу редактора Access на панели инструментов находится кнопка КОНСТРУКТОРА. При нажатии на нее ЛЮБОЙ элемент, который у вас сейчас открыт (будь то таблица, запрос, форма, отчет или макрос), переходит в режим конструктора.
В таблице ниже установите соответствия между именем и функциональностью корструкторов. Вам поможет это сделать интерактивный видео тренажер. Найдите там кнопку Конструктора (выделенную оранжевой рамкой), кликните не нее, чтобы перейти в режим конструктора. Чтобы ВЕРНУТЬСЯ обратно в режим просмотра – снова кликните на ТУ же кнопку.



Загрузить видео в rar-архиве: http://informatika.delayu.ru/app/video/8-access2-constructor.rar


В конструкторе таблиц… … указана последовательность макрокоманд
В конструкторе запросов… … расположены элементы управления (кнопки, поля, надписи, списки)
В конструкторе форм… … выбраны таблицы и поля в них, заданы условия отбора
В конструкторе отчетов… … перечислены имена и типы полей
В конструкторе макросов…
(открыть макрос, кликнув
на него двойным щелчком
из окна базы данных нельзя,
потому что когда вы кликаете
на него, он запускается;
его можно открывать только
СРАЗУ в режиме конструктора;
посмотрите, как это делается,
на видео)
… расположены надписи и значения из БД на листе бумаги

Теперь мы можем приступать к созданию базы данных!


РАЗРАБОТКА БАЗЫ ДАННЫХ

Сейчас мы создадим небольшую базу данных своими руками! Пусть это будет база данных для выставки собак. Если хотите, вы можете выбрать свою тему для базы данных, но там должно быть не менее двух таблиц, связанных отношением «один-ко-многим». Для самопроверки или если у вас возникнут сложности, можете заглянуть в видео с решениями).


Шаг 1 Создание таблиц
tbPerson
1. Создаем таблицу tbPerson в режиме конструктора (НЕ пользуйтесь для создания таблиц мастерами и вводом данных – это только запутает все дело; самый удобный способ – это конструктор);
2. В конструкторе ПО-АНГЛИЙСКИ (каждое слово с большой буквы) задаете поля: Id, фамилия, имя, телефон. У Id тип СЧЕТЧИК (это специальный тип для идентификатора), все остальные – текстовые;
3. Из режима конструктора переходите в режим просмотра (кнопка конструктора), сохраняете таблицу (вас спросят, нужно ли задавать ключевые поля – да, нужно) и заполняете таблицу (3–4 записи).
tbBreed (порода)
Создаем таблицу tbBreed в режиме конструктора. Поля: Id (счетчик), Breed (текст). Сохраняете, заполняете (3–4 породы).
tbDog ВИДЕО
1. Создаем таблицу tbDog в режиме конструктора.
2. Поля: Id, кличка (текст), дата рождения (дата), ссылка на владельца PersonId (тип ЧИСЛОВОЙ; если поле содержит ссылки на записи из другой таблицы, тип всегда числовой; если сделаете текстовый, не сможете потом установить связь между таблицами, будет выдаваться ошибка!), ссылка на породу BreedId.
Сохраняете, заполняете (5–6 собак).


Шаг 2 На схеме данных устанавливаем связи между таблицами, перетаскивая соответствующие поля с одной таблицы на другую ВИДЕО.


Шаг 3 Создание запроса ВИДЕО
quDog
Создаем в режиме конструктора запрос quDog, который будет отображать кличку собаки, ее породу и фамилию владельца (НЕ пользуйтесь для создания запросов мастером – его возможности очень скудны; лучше сразу начинать работать с конструктором).
1. Выбираете во вспомогательном окне таблицы, в которых лежат нужные данные (в данном случае – все три), вспомогательное окно закрываете.
2. Проверяете, верно ли указаны связи (все три таблицы должны быть связаны; не должно быть лишних связей!).
3. Перетаскиваете те поля, которые мы хотим просмотреть в запросе из таблиц (сверху) на сетку вниз.
4. Выполните запрос, нажав на «восклицательный знак» на панели инструментов.


Проверьте, все ли у вас правильно. Сохраните запрос.


Шаг 4 Создание формы ВИДЕО
fmDog
1. Формы – это единственное, что удобно создавать с помощью мастера. В качестве источника данных указываете наш запрос. Тип формы – ленточная. Оформление – любое.


Если что-то не получилось, можете посмотреть, как это делается, на видео.


Сохраните вашу БД и вышлете мне по почте!


ВСЁ

Разработка сайта: QuickStart Group, 2008