Главная страница

Краткое содержание 29 Об этих стрелках 30 о сочетаниях клавиш 32 о щелчках кнопкой мыши 33 Примеры 33


Скачать 19.64 Mb.
НазваниеКраткое содержание 29 Об этих стрелках 30 о сочетаниях клавиш 32 о щелчках кнопкой мыши 33 Примеры 33
АнкорAccess_2007.doc
Дата16.03.2017
Размер19.64 Mb.
Формат файлаdoc
Имя файлаAccess_2007.doc
ТипКраткое содержание
#3862
страница8 из 65
1   ...   4   5   6   7   8   9   10   11   ...   65



Примечание

В случае применения Полного формата даты и Длинного формата даты информация о време­ни выводится, только если она ненулевая.
Формат влияет только на способ отображения информации о дате — он не меняет способ ее ввода. Программа Access достаточно интеллектуально развита, чтобы правильно интер­претировать даты, введенные следующим образом:

  • 2008-23-2 (всегда работает интернациональный стандарт "год-месяц-день");

  • 2/23/2008 (наиболее распространенный вариант ввода, но, возможно, па компьютерах за
    пределами США вам придется поменять местами день и месяц);

  • 23-Фев-08;

  • Фев 23 (Access полагает, что имеется в виду текущий год);

  • 23 Фев (аналогично).

Для вставки даты и времени просто следом за датой введите время, например, 23-Фев-08 5:06 РМ. Не забудьте вставить в конце обозначение АМ/РМ или используйте 24-часовую шкалу.

Вместо набора даты можно использовать смарт-тег календаря (calendar smart tag). Смарт-тег — это пиктограмма, появляющаяся рядом с полем, как только вы переходите в него, как показано на рис, 2.12.



Рис. 2.12. Access автоматически высвечивает на экране этот смарт-тег для всех полей с датами. Щелкните кнопкой мыши пиктограмму для вывода на экран мини-календаря, в котором вы сможете выбрать нужную дату. Но календарь не поможет ввести сведения о времени

На профессиональном уровне.

Представление даты на вашем компьютере

На вашем компьютере и ОС Windows есть региональные установки, влияющие на способ отображения дат и валют. В Access региональные установки определяют способ отображения разных форматов для дат. Другими словами, в США на компьютере прямой поставки с завода Краткий формат даты отображается как 2/23/2008. А на британском компьютере он будет выводиться как 23/2/2008. В любом случае в БД хранится одна и та же информация. Но меняется способ ее вывода на лист данных.

Вы можете откорректировать региональные установки, и они вовсе необязательно должны соответствовать району вашего проживания, — например, вы можете задать их для центрального управления вашей компании, находящегося на другом континенте. Но помните, что это глобальные параметры, поэтому, изменяя их, вы оказываете влияние на все ваши программы.

Для внесения изменений перейдите на Панель управления (Control Panel). (В ОС Windows XP щелкните кнопкой мыши кнопку меню Пуск (Start) и выберите последо­вательность команд Настройка | Панель управления (Settings | Control Panel). В Windows Vista щелкните мышью Пуск и ищите Панель управления справа.) После того как вы открыли Панель управления, дважды щелкните кнопкой мыши пиктограм­му Язык и региональные стандарты, которая выведет на экран диалоговое окно. Все нужные вам установочные параметры находятся на первой вкладке. Первое поле — са­мое важное, у него есть раскрывающийся список, из которого можно выбрать регион, предполагаемый для использования, например, Английский (США) или Шведский (Финляндия).

С помощью дополнительных параметров можно произвести более тонкую настройку. Делать это имеет смысл, только если у вас есть конкретные предпочтения, касающиеся форматирования дат и не совпадающие со стандартными установками. Щелкните мышью кнопку Настройка, расположенную рядом с полем выбора региона, для вывода на экран нового диалогового окна, затем щелкните кнопкой мыши вкладку Дата (показанную на рис. 2.13).



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

Пользовательские форматы дат

Если вы не удовлетворены семью стандартными вариантами вывода дат, предлагаемыми программой Access, можно сформировать собственную строку формата даты и ввести ее в свойство Формат (Format). Эта строка сообщает программе Access способ представления даты и времени.

Строка формата даты состоит из нескольких частей. Каждая часть представляет отдель­ный компонент даты, такой как день, месяц, год, минута, час и т. д.

Вы можете соединять эти части в любом порядке. Например, посмотрите на следующую строку формата:

yyyy-mm-dd

Ее можно транслировать в следующие инструкции: выведи четырехзначный год с после­дующим дефисом, затем двузначный номер месяца с последующим дефисом и далее дву­значный номер дня в месяце. Вы вольны располагать эти компоненты как вам захочется, но данный пример определяет их порядок в соответствии со стандартом ISO (International Organization for Standardization, Международная организация по стандартизации) для дат. Вы также можете управлять способом вывода года, дня и месяца в дате. Можно применять сокращенные или полные названия месяцев вместо номера месяца (просто замените код mm чем-то другим).

Если вы примените эту строку формата дат к полю, в котором содержится дата Январь 1, 2008, то увидите ее на листе данных в таком виде:

2008-01-01

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

В табл. 2.4 приведены основные заполнители, используемые в строке формата для даты или времени.

Таблица 2.4. Код для форматирования даты и времени

Код

Описание

Выводится (для даты Январь 1, 2008)

d

Номер дня в месяце, 1—31 с номерами 1—9, выводимыми без ведущего нуля (0)

1

dd

Номер дня в месяце, в диапазоне 1—31, (для номеров 1—9 добавляется ведущий нуль (0))

01

ddd

Сокращенное название дня недели

Вт

dddd

Полное название дня недели

Вторник

m

Номер месяца в диапазоне 1—12 (ведущие нули не приме­няются)

1

mm

Номер месяца в диапазоне 1—12 (ведущие нули применя­ются для 01— 09)

01

mmm

Трехбуквенное сокращенное название месяца

Янв

mmmm

Полное название месяца

Январь

уу

Сокращенное двузначное обозначение года

08

уууу

Год задается всеми четырьмя цифрами

2008

h

Час от 0 до 23 (ведущий нуль не применяется)

13

hh

Час от 0 до 23 (ведущий нуль применяется для значений 00—09)

13

:m

Минута в часе от 0 до 59 (ведущий нуль не применяется)

5

Таблица 2.4 (окончание)

Код

Описание

Выводится (для даты Январь 1,2008)

:mm

Минута в часе от 0 до 59 (ведущий нуль применяется для значений 00—09)

05

:s

Секунда в минуте от 0 до 59 (ведущий нуль не применяется)

5

: ss

Секунда в минуте от 0 до 59 (ведущий нуль применяется для значений 00—09)

05

АМ/РМ

Предписывает программе Access использовать 12-часовую шкалу с индикацией первой (AM) и второй половины (РМ) суток

РМ

am/pm

Обозначает 12-часовую шкалу с индикацией первой (am) и второй (рm) половины суток

рm

А/Р

Предписывает программе Access использовать 12-часовую шкалу с индикацией первой (А) и второй половины (Р) суток

Р

а/р

Предписывает программе Access использовать 12-часовую шкалу с индикацией первой (а) и второй половины (р) суток

p



Логический

Поле с логическим типом данных (Да/Нет) — это чудо эффективности. Представляет собой простейший тип данных Access, поскольку допустимы только два возможных значения: Да или Нет.



Рис. 2.14. В данном примере поле ForResale (для продажи) — поле с логическим типом данных. Установленный флажок отображает значение Да (или Истина, или Вкл). Сброшенный флажок означает Нет (или Ложь, или Выкл)

Применяя поле с логическим типом данных, представьте себе, что поле содержит ответ "да" или "нет" на вопрос, который получается, если добавить воображаемый вопроситель­ный знак к названию поля. Вы можете применять поле с именем InStock для отслеживания наличия изделий на складе. В данном случае "да" или "нет" — ответ на вопрос "На складе?" Другими примерами могут служить поле Shipped (доставленные) (в списке заказов), Male (мужчина) (для разделения мальчиков и девочек) и Republican (республиканец) (при усло­вии, что вы хотите различать только две политические ориентации).

Несмотря на то, что все поля логического типа одинаковы, для них можно выбрать слег­ка отличающиеся форматы, заменяя слова "Да" и "Нет" словами Вкл/Выкл или Исти­на/Ложь. Эти три варианта можно найти в списке свойства Формат (Format). Но у них ма­ло различий, поскольку на листе данных поля этого типа отображаются с флажком, как показано на рис. 2.14.



Гиперссылка

Тип данных Гиперссылка (Hyperlink) подойдет, если бы хотите создать ссылку на Web-страницу, файл или адрес электронной почты, срабатывающие по щелчку кнопки мыши. Вы можете в одной таблице создавать любые комбинации этих трех видов указателей.

В Режиме таблицы Access обрабатывает гиперссылки немного иначе. Когда вы вводите текст в поле типа Гиперссылка, он окрашивается в синий цвет и подчеркивается. И когда вы щелкаете ссылку кнопкой мыши, Access открывает ее в вашем Web-обозревателе (рис. 2.15).

Примечание

Программа Access не мешает вам вводить в поле с типом данных Гиперссылка значения, не являющиеся гиперссылками. Эта особенность может создать проблему, когда вы щелкнете кнопкой мыши ложную гиперссылку. Если вы поместите текст "saggy balloons" (сдувшиеся ша­рики) в поле типа Гиперссылка и щелкните его кнопкой мыши, Access попытается отправить Web-обозреватель по адресу http://saggy balloons, который на самом деле не существует.


Рис. 2.15. Щелкните кнопкой мыши эту гиперссылку и попадете прямо на доброжелательный Web-сайт Office Online

Одно свойство поля типа Гиперссылка сразу не очень понятно. На самом деле такие по­ля хранят несколько порций данных. Каждая гиперссылка включает три компонента:

  • текст, который вы видите в ячейке;

  • адрес, на который вы переходите при щелчке кнопкой мыши ячейки (URL или полное имя файла);

  • текст, который вы видите при наведении указателя мыши на ссылку (пояснительная надпись).

Когда вы вводите гиперссылку на листе данных, все три компонента получают одно и то же значение — то, что вы только что ввели. Другими словами, когда вы набирае­те http://www.FantasyPharmacologists.com, текст, который вы видите, URL ссылки и пояснительная надпись содержат одну и ту же информацию — URL — http://www.FantasyPharmacologists.com.

В большинстве случаев этот подход хорош, т. к. позволяет быстро просмотреть ссылку. Но это не единственно возможная стратегия. Если вы хотите трем описанным компонентам присвоить разные значения, перейдите в ячейку с набранным значением и нажмите сочета­ние клавиш + для того, чтобы раскрыть окно Изменение гиперссылки (Edit Hyperlink) — рис. 2.16. Или щелкните значение правой кнопкой мыши и выберите последова­тельность команд Гиперссылка → Изменить гиперссылку (Hyperlink →Edit Hyperlink).



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

Вложение

Тип данных Вложение (Attachment) — это новый тип, появившийся в программе Access 2007. Он позволяет вставлять файлы в запись БД почти так же, как вы вкладываете файлы в

ваши сообщения электронной почты. Access хранит файлы, вставленные в поле типа Вложение как часть вашей таблицы, встроенную в файл вашей БД.

Тип данных Вложение хорошо подходит для вставки в запись изображения, короткого звукового файла или документа из другого приложения пакета Office, такого как Word или Excel. Вы можете создать таблицу People (люди) с изображением каждого человека, вклю­ченного в список контактов, или каталог изделий с изображением товаров, которые вы про­лаете. В этом случае у данных типа Вложение — очевидные преимущества, поскольку они хранятся в файле вашей БД, и вы никогда не потеряете их след.

Но данные типа Вложение не так привлекательны в случае больших файлов или файлов, требующих частой корректировки. Если вы поместите часто корректируемый документ в БД Access, он не будет доступен для быстрого редактирования, печати и поиска. Вам при­дется запустить программу Access и найти соответствующую запись, прежде чем вы сможете открыть ваш документ. Если же нужно внести изменения, вы должны оставить программу Access открытой, чтобы она могла забрать измененный файл и вставить его снова в БД.

Предупреждение

Дважды подумайте, прежде чем связываться с вложенными файлами. Как вы уже знаете, объ­ем, который может занимать БД Access, ограничен двумя гигабайтами. Если вы начнете со­хранять большие файлы в ваших таблицах, то можете просто превысить его. Лучше хранить большие документы в отдельных файлах, а затем записывать имя файла в текстовое поле или поле с типом данных Гиперссылка (Hyperlink).

Применяя тип данных Вложение, убедитесь в том, что задано свойство поля Подпись (Caption), определяющее текст, который появляется в заголовке столбца для этого поля. (Часто для заголовка используется имя файла.) Если свойство не задано, в заголовке столб­ца отображается скрепка, но без текста.
На листе данных поле с типом данных Вложение легко узнать, т. к. рядом с ним распо­ложена пиктограмма скрепки (рис. 2.17).


Рис. 2.17. Вложения помечаются пиктограммой скрепки и числом в скобках, сообщающим о количестве вложенных файлов. В данном примере все значения в поле Picture с типом данных Вложение пустые за исключением Count Chocula, у которого оно равно двум

Для вложения файла или просмотра списка вложенных файлов дважды щелкните кнопкой мыши пиктограмму скрепки. Вы увидите диалоговое окно Вложения (Attachments) — рис.2.18.



Рис. 2.18. В диалоговом окне Вложения показаны все файлы, связанные с вашим полем

Далее перечислены действия, которые можно выполнить с помощью окна Вложения (Attachments).

  • Вставить новый вложенный файл. Щелкните мышью кнопку Добавить (Add). Затем найдите и укажите новый файл и нажмите кнопку ОК. Вы увидите новый файл в конце списка файлов.

  • Удалить вложение файла. Выберите в списке нужный файл и щелкните мышью кнопку Удалить (Remove).

Сохранить копию вложенного файла. Выберите нужный вложенный файл, щелкните мышью кнопку Сохранить как (Save As) и затем укажите место на вашем компьютере для сохранения копии. Или щелкните мышью кнопку Сохранить все (Save All) для сохранения копий всех вложенных в это поле файлов. Если вы меняете данные копии, содержимое вложенного файла в вашей БД не меняется.

  • Редактировать и просматривать вложенный файл. Выберите вложенный файл и щелкните мышью кнопку Открыть (Open). Программа Access скопирует вложенный файл во временную папку па вашем компьютере, ту, в которой сохраняется кэшируемая интернет-информация. Если вы сохраняете файл, Access отслеживает изменения, автоматически обновляет вложенный файл и затем удаляет временный файл. Если вы закроете окно Вложения (Attachments) до того, как закрыли файл, то Access предупреждает о том, что ваши корректировки не будут отражены в вашей БД. На рис. 2.19 показано, что происходит.

К сожалению, у типа данных Вложение мало параметров управления. Далее перечисле­ны некоторые ограничения этого типа данных.

  • Вы не можете ограничить количество разрешенных вложений файлов в поле типа Вложение. У всех полей этого типа практически нет ограничения на количество вложенных файлов (хотя вы не можете вложить два файла с одним и тем же именем).

    • Вы также не можете ограничить типы файлов, предназначенных для вложения.

    • Вы не можете ограничить и размер файлов, предназначенных для вложения.



Рис. 2.19. Вверху: в данном примере файл "The Story of the Count.doc" все еще открыт.

Если вы продолжите, то все изменения, которые вы вносите (или любые изменения, которые вы внесли к данному моменту и не сохранили), не будут отражены в БД.

Внизу: если программа Access замечает, что вы сохраняли ваш файл с тех пор, как открыли его впервые, она спрашивает вас о том, хотите ли вы обновить БД последней сохраненной версией файла. (Для того чтобы избежать подобных треволнений, вкладывайте только те файлы, которые вы не собираетесь редактировать.)

Счетчик

Счетчик (AutoNumber) — это специальный тип данных. В отличие от всех других знакомых вам типов данных, в поле типа Счетчик нельзя ввести значение. Программа Access делает это автоматически, когда вы вставляете новую запись. Access гарантирует, что значение счетчика уникально — другими словами, программа никогда не присвоит двум записям одно и то же значение типа Счетчик.

Примечание

У каждой таблицы может быть не более одного поля Счетчик.

Обычно поле типа Счетчик выглядит как последовательность чисел — Access стремится дать первой записи значение 1, второй записи значение 2 и т. д. Но истина не так проста. Иногда программа Access пропускает числа. Такой пропуск возможен, когда несколько пользователей одновременно работают с БД, или когда вы начинаете вставлять новую запись, а затем отменяете это действие, нажав клавишу . Вы также можете удалить существующую запись, в этом случае Access никогда повторно не использует значение типа Счетчик из удаленной записи. В итоге, если вы вставляете новую запись и видите, что ей присвоено значение типа Счетчик, равное 401, то не можете с уверенностью сказать, что в таблице уже есть 400 записей. Реальное их количество, возможно, меньше.

Бесспорно, значение Счетчик не отображает ничего реального, и, возможно, вы не захо­тите тратить много времени на его рассмотрение. Единственная задача поля с типом данных Счетчик — гарантировать наличие у каждой записи вашей таблицы уникального указателя. Обычно ваше поле типа Счетчик служит также и первичным ключом для вашей таблицы, как объясняется в разд. "Первичный ключ " далее в этой главе.

Применение поля типа Счетчик без раскрытия реального размера вашей таблицы

У значений Счетчик есть маленький недостаток: они предоставляют сведения о количестве записей в таблице. Быть может, вы не хотите, чтобы клиент знал, что ваша торговая марка, новая компания, торгующая скульптурными фигурками из масла в духе народных ремесел (Better Butter Sculptures), "не одурачила" и 12 заказчиков. Поэтому вас смутит необходи­мость признаться ему в том, что его номер, ID, всего 6.

Лучше всего начать отсчет с большего числа. Вы можете обмануть программу Access, за­ставив генерировать числа типа Счетчик, начиная с заданного минимума. Например, вместо создания номеров клиентов 1, 2 и 3 вы можете создать ID-значения 11001, 11002, 11003. Та­кой подход также гарантирует наличие у ваших идентификаторов одинакового количества цифр и позволяет разделить ID в разных таблицах, начиная их формирование с различных минимальных значений. К сожалению, для того чтобы реализовать эту хитрость, вам надо обмануть Access с помощью специально разработанного запроса, который вы увидите в разд. "Получение начальных значений типа Счетчик, отличных от 1" главы 8.

С другой стороны, вы можете заставить программу генерировать значения типа Счетчик иным способом. Есть два варианта.

  • Случайное значение типа Счетчик. Для того чтобы воспользоваться случайными числами, измените свойство поля Новые значения (New Values) со значения Последовательные (Increment) на значение Случайные (Randome). Теперь вы получите длинные номера для каждой записи, такие как 212125691, 1671255778 и -1388883525. Вы можете использовать случайные числа типа Счетчик для формирования значений, которые другие люди не смогут угадать. (Например, если у вас есть таблица Orders (заказы), вкоторой применяются случайные числа в поле OrderlD (идентификатор заказа), их можно использовать как подтверждающие номера (confirmation numbers).) Но в мире Access случайные числа типа Счетчик применяются редко.

  • Коды репликации. Коды репликаций (Replication ID) — это длинные непонятные коды, например, 38A94E7B-2F95-4E7D-8AF1-DB5B35F9700C, гарантированно уникальные с точки зрения теории вероятностей. Для их применения измените значение свойства Размер поля с Длинного целого на Код репликации. Этот вариант действительно используется только в одном случае — если у вас есть отдельные копии БД и вам в будущем придется объединить данные из них. В следующем разделе объясняется этот сценарий.

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

Применение типа Код репликации

Представьте себе, что вы работаете в компании с несколькими региональными отделами продаж, каждый из которых имеет собственную БД, отслеживающую заказы. Если приме­нять обычное поле типа Счетчик, в конце концов, вы получите несколько клиентов с одинаковыми ID, но в разных филиалах. Если вы когда-нибудь захотите сравнить данные, то бы­стро запутаетесь. И не сможете в будущем объединить данные в общей БД для дальнейшего анализа.

Программа Access предлагает вам другую возможность — Код репликации. Код реплика­ции — странное творение — очень длинный идентификатор (всего 16 байтов), представлен­ный строкой цифр и букв, которая выглядит примерно следующим образом:

38A94E7B-2F95-4E7D-8AF1-DB5B35F9700C

Такой идентификатор — более громоздкий по сравнению с обычным целым числом. По­мимо всего прочего, гораздо легче поблагодарить кого-либо за отправку заказа Order 4657, чем заказа Order 38A94E7B-2F95-4E7D-8AF1-DB5B35F9700C. Другими словами, если зна­чение типа Счетчик применяется для отслеживания и бухгалтерского учета, Код репликации использовать для этой цели не стоит.

Но эти коды помогают решить описанную ранее проблему, если многочисленные копии одной и той же БД используются в разных местах. Дело в том, что Код репликации гаранти­рует вероятностную уникальность значений. Другими словами, возможных значений типа Код репликации так много, что практически невероятно, что вы создадите одно и то же зна­чение дважды. Следовательно, если у вас даже десятки отдельных копий вашей БД и они управляются сотнями клиентов, вы можете быть уверены в том, что у каждого клиента уни­кальный идентификатор. Более того, вы можете периодически объединять отдельные таб­лицы в одной главной БД. (Этот процесс называется репликацией и служит причиной появ­ления термина "код репликации". Вы узнаете больше о передаче данных из одной БД в другую в главе 19.)

Примечание

Код репликации также называют GUID (globally unique identifier, глобально уникальный иденти­фикатор). В теории вероятность того, что два GUID идентичны, равна 1/2128, величина доста­точно маленькая для того, чтобы вы могли заставить работать один биллион сотрудников, соз­дающих не более одного биллиона GUID в год, и все же быть уверенным в отсутствии дубликатов в течение десятилетия или двух. На практике реальным ограничением служит ка­чество используемого в программе Access генератора случайных чисел.

Н
а рис. 2.20 показана таблица, в которой используются коды репликаций.

Рис. 2.20. В таблице FictionalCharacters показаны 10 записей, каждая с уникальным с вероятностной точки зрения значением типа Счетчик

Первичный ключ

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

На профессиональном уровне.

Как Access предотвращает дублирование записей
Для того чтобы функционировать корректно, система управления базами данных, такая как Access, должна уметь определять разницу между каждой и любой записью в вашей таблице. Другими словами, вы не можете вставить две записи с полностью идентичными данными. Чистоплюйство БД общеизвестно, они не терпят такого рода мусора.

Проблема устранения дубликатов не так проста, как кажется. Программа Access спроек­тирована в расчете на максимальную скорость обработки, и она не может позволить себе перепроверять вашу новую запись, сравнивая ее со всеми другими записями в таблице для выявления дубликата. Вместо этого она полагается на первичный ключ. До тех пор пока у каждой записи в таблице есть уникальный, никогда не повторяющийся первич­ный ключ, у вас. не будет двух идентичных записей. (В худшем случае, они могут быть почти идентичны, с одинаковыми данными во всех остальных полях, но с разными пер­вичными ключами. Это вполне приемлемо для программы Access.)

В таблице Employees (сотрудники) номер социального обеспечения (Social Security number) мог бы служить первичным ключом. Этот метод хорошо работает, поскольку, когда вы вставляете новую запись, Access может проверить наличие дублирования, про­бежав список этих номеров, что гораздо быстрее, чем просмотр целой таблицы.

Выбор первичного ключа — непростая задача. Представьте, что у вас есть список друзей (и их контактная информация) в таблице, названной People (люди). Рассуждая логически, вы можете решить, что можно создать первичный ключ как комбинацию имени и фамилии.

К сожалению, как раз так и не следует делать — в конце концов, есть масса адресных книг с двумя Шонами- Смитами (Sean Smith).

Лучше всего вставить новую порцию данных. Вы можете пометить каждого человека в вашем списке контактов с помощью уникального ID-номера. Самое лучшее, что вы можете сделать, — дать возможность программе Access создать такой номер для вас (и быть уверен­ным в том, что ни у каких двух людей из списка не будет одинаковых номеров) и больше не думать об этом. В этом случае, если у вас есть два Шона Смита, у каждого из них будет свой ID. И даже если Феррис Вил (чертово колесо) Симпсон решит сменить имя, ID останется прежним.

Именно так действует программа Access, когда вы создаете таблицу в Режиме таблицы. Рассмотрим таблицу Dolls, созданную в главе 1. В ней есть поле, названное Код (ID) и автоматически заполняемое Access. Вы не можете вставить в таблицу значение поля Код или изменить значение в имеющейся записи. Программа Access полностью контролирует это поле, гарантируя уникальный номер для каждой куклы-болванчика. Такой подход в большинстве

случаев — как раз то, что вам нужно, поэтому не пытайтесь изменить его или уда­лить поле Код.

Но есть одно исключение. Если вы создаете таблицу в Конструкторе, выбрав на ленте Создание Таблицы Конструктор таблиц (Create → Tables → Table Design), Access считает, что вы знаете, что делаете, и не создает для вас поле Код. Вы должны вставить поле Код (или что-то подобное).

Создание поля для вашего собственного первичного ключа

Если в вашей БД нет поля Код (возможно, вы создали ее, выбрав Создание Таблицы Конструктор таблиц), ваша задача — создать его и установить первичный ключ. Вот как это делается.

1. Создайте новое поле, вставив его имя в столбец Имя поля (Field Name).

Для автоматической генерации значений лучше всего подходит имя Код (ID). Некото­рые пользователи предпочитают более информативное имя (например, BobbleheadID, CustomerlD и т. д.), но это необязательно.

2. В столбце Тип данных (Data Type) выберите тип данных Счетчик (Currency).

Выбрав этот тип данных, вы можете быть уверены в том, что программа Access создаст уникальное значение ID для каждой вставляемой вами новой записи. Если этот подход вас не устраивает, можно выбрать что-то другое (например, текстовый тип данных или числовой). В этом случае вы отвечаете за ввод собственного уникального значения для каждой записи, что потребует больше работы, чем кажется на первый взгляд.

3. Щелкните поле правой кнопкой мыши и выберите команду Ключевое поле (Primary Key).

Этот выбор помечает поле как первичный ключ для вашей таблицы. Программа Access не допустит повторяющихся значений в этом поле.

Примечание

Если вы хотите включить в первичный ключ несколько полей, вам придется использовать не­сколько иной подход. Сначала щелкните кнопкой мыши отступ на странице рядом с именем поля, а затем переместите мышь с нажатой кнопкой, чтобы выделить несколько полей. Затем нажмите и удерживайте нажатой клавишу и щелкните правой кнопкой выделенные по­ля. Теперь можно выбрать команду Ключевое поле (Primary Key).

На профессиональном уровне.

Почему так важна уникальность
Вы не поймете до конца важность наличия уникального ID-номера у каждой записи, по­ка не поработаете с более сложными примерами последующих глав. Но одну из причин можно назвать — другие программы, использующие вашу БД, должны однозначно идентифицировать запись.

Для того чтобы понять, в чем проблема, представьте, что вы создали программу для ре­дактирования таблицы Dolls. Эта программа начинает с извлечения списка всех ваших кукол-болванчиков, включенных в таблицу. Она выводит на экран этот список для сво­его пользователя и предлагает ему внести изменения. В этом вся загвоздка — если про­изведена корректировка, программа должна иметь возможность внести изменения в со­ответствующую запись вБД.

А для того чтобы это сделать, ей нужна уникальная порция данных, которую можно ис­пользовать для определения местонахождения записи. Если вы соблюдали все практи­ческие рекомендации по проектированию, описанные ранее, уникальный "адрес" — поле Код куклы-болванчика.

Шесть правил проектирования БД

Чем больше власти, тем больше ответственности. Как проектировщик БД вы должны разра­ботать набор таблиц с подходящей структурой. Если вы сделаете это как следует, то сэконо­мите массу времени и сил в будущем. Хорошо спроектированные БД легко усовершенство­вать, с ними легче работать, они приводят к гораздо меньшему числу трудно разрешимых проблем в случае извлечения информации.

Увы, нет рецепта создания идеальной БД. Но ряд рекомендаций может направить вас в нужное русло. В этом разделе вы познакомитесь с наиболее важными из них.

Совет

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

Правило 1. Выбирайте подходящие имена полей

В программе Access не установлено особых правил для выбора используемых имен полей. Она позволяет включить 64 символа в создаваемое вами имя. Тем не менее имена полей важны. Вы снова и снова вынуждены ссылаться на одни и те же имена, когда создаете фор­мы, формируете отчеты и даже когда пишете код. Поэтому важно выбрать подходящее имя с самого начала.

Далее приведено несколько советов.

  • Сделайте его простым и коротким. Имя поля должно быть настолько коротко, насколько это возможно. Длинные имена утомительно набирать, в них больше шансов сделать ошибку, их труднее втиснуть в формы и отчеты.

  • Пользуйтесь заглавными буквами. Нельзя сказать, что это "железное" правило, но большинство приверженцев Access делают заглавной первую букву каждого слова (называют этот прием CamelCase (контур верблюда)) и затем сливают слова вместе для формирования имени поля. Примерами могут быть UnitsInStock (единиц на складе) и DateOfExpiration (годен до).

  • Избегайте пробелов. В программе Access разрешается в именах полей применять пробе­лы, но они могут вызывать проблемы. В языке SQL (Structured Query Language, язык структурированных запросов) (язык для работы с БД, которым вы будете пользоваться для поиска данных) пробелы запрещены. Это означает, что вам придется использовать квадратные скобки при упоминании имен полей, содержащих пробелы (например, [Number Of Guests] ), а это быстро надоест. Если без пробелов не обойтись, рассмот­рите возможность их замены знаком подчеркивания (_).

Будьте последовательны. Вы можете выбрать одно из двух имен поля ProductPrice (цена_товара) и ProductPrice. Любой выбор вполне оправдан. Однако не следует смешивать оба подхода к заданию имен в одной БД, т. к. это верный шаг к созданию путаницы

Точно так же, если у вас несколько таблиц с аналогичной информацией (например, поле FirstName (имя) в таблице Employees (сотрудники) и в таблице Customers (клиенты)), используйте для этих полей одно и то же имя.

  • Не включайте в имя поля имя таблицы. Если у вас есть поле Country (страна) втаблице Customers, совершенно ясно, что вы имеете в виду страну (Country), в которой живет клиент. Имя поля CustomerCountry было бы избыточным.

  • Не используйте для имени поля слово "Name". Помимо того, что это труднопроизносимое имя, слово "Name" — ключевое в программе Access. Вместо него применяйте такие имена, как ProductName, CategoryName, ClassName и т. д. (Это как раз тот случай, когда следует нарушить правило о включении имени таблицы в имя поля.)

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

Правило 2. Разбивайте ваши данные

Следите за тем, чтобы не включить слишком большую порцию данных в одно поле. Вы должны хранить в каждом поле элементарную порцию данных.



Рис. 2.21. Данный пример демонстрирует правильный способ разделения данных (вверху) в таблице Contacts (контакты) и неверный способ (внизу). Учтите, что технически все еще возможно разделить данные позже — теоретически сведения об уличном адресе можно разделить на StreetNumber (номер дома), StreetName (название улицы) и StreetType (тип улицы). Но такой подход создает массу сложностей, не давая ничего взамен, поэтому гуру БД редко соглашаются на дополнительные неприятности

Вместо того чтобы создать одно поле Name в таблице о контактах, гораздо разумнее вставить два поля: FirstName (имя) и LastName (фамилия).

Существует множество оснований для разделения информации на отдельные поля. Прежде всего, это устраняет некоторые типы ошибок. В поле Name имя можно ввести не­сколькими разными способами (например, "Фамилия, Имя" или "Имя Фамилия"). Разбие­ние имени устраняет эти проблемы, способные создать затруднения при попытке использо­вать данные в автоматизированной задаче какого-либо вида (например, объединение сообщений электронной почты). Но гораздо важнее то, что значительно легче работать с данными, которые разделены на маленькие порции. После разделения поля Name на поля FirstName и LastName вы можете сортировать и искать информацию, основываясь на одной порции этой информации, чего нельзя было бы сделать в противном случае. Аналогично следует разделить сведения об адресе на несколько столбцов, таких как Street (улица), City (город), State (штат) и Country (страна) — в этом случае вы гораздо легче найдете всех, кто живет в Нантуките (Nantucket).

На рис. 2.21 показан пример надлежащего разбиения. На рис. 2.21 (внизу) отображена опасная ошибка — попытка хранить несколько порций данных в одном поле.

Правило 3. Храните все детали в одном месте

Часто одна таблица применяется в решении многих задач. Вы можете использовать таблицу Dolls для выявления дубликатов (и избежать повторной покупки одной и той же куклы-болванчика), для поиска самых старых экземпляров вашей коллекции и для определения общей суммы, потраченной в этом году (для расчета величины налога). Для решения каж­дой из них нужен слегка отличающийся набор данных. Когда вы подсчитываете потрачен­ную сумму, вам не нужно поле Character (персонаж), идентифицирующее куклу. Когда вы ищете дубликаты, вам не нужна информация о дате покупки (DateAcquired) или покупной цене (PurchasePrice).

Несмотря па то, что вам далеко не всегда нужны все эти поля, совершенно ясно, что есть смысл поместить их все в одну таблицу. Однако, если вы создаете более подробные таблицы, это может быть не столь очевидно. Не трудно представить себе версию таблицы Dolls, со­держащую 30 или 40 полей данных. Некоторые из них вы можете использовать только от случая к случаю. Но все равно следует все их включить в одну таблицу. Все, написанное в этой книге, доказывает, что вы легко можете отфильтровать всю ненужную вам информа­цию на листе данных, а также в ваших формах и напечатанных отчетах.

Правило 4. Избегайте дублирования данных

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

Дублирование данных, подобное показанному на рис 2.22, неэффективно. Легко вообра­зить таблицу с сотнями похожих записей, бесполезно расходующих дисковое пространство и повторяющих одни и те же значения снова и снова. Но эта неприятность — мелочь, по сравнению с затратами на обновление подобной информации и возможностью возникнове­ния противоречивости данных. Что произойдет, если вы на основании новых научных дан­ных решите изменить сведения о средней продолжительности жизни слона? В соответствии с имеющимся проектом таблицы вам нужно изменить все записи с одними и теми же данными.

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



Рис. 2.22. Данная таблица содержит список имеющихся в наличии домашних питомцев у человека, занимающегося разведением редких животных. В ней также приведена некоторая полезная информация о средней продолжительности жизни, характере и пищевых предпочтениях каждого вида животных. Сначала такой проект кажется вполне разумным. Но проблема возникает, как только у вас появляется несколько животных одного вида (в данном случае три слона). Теперь все касающиеся слонов подробности повторяются три раза
Проблема возникает, потому что не вся информация в таблице Pets (домашние живот­ные) связана между собой. Для того чтобы понять — почему, нужно погрузиться поглубже в анализ БД.

Как правило, таблица в БД хранит один объект. В таблице Pets — это домашние питом­цы. Каждое поле в таблице — это порция данных об этом объекте.



Рис. 2.23. Теперь относящаяся к животным информация хранится в одном месте, без дублирования. Потребуется чуть-чуть больше времени для получения всей необходимой вам информации о животном — например, для того чтобы выяснить продолжительность жизни Беатрис, вам придется проверить запись Elephant (слон) в таблице AnimalTypes, но в итоге проект стал более логичным

В таблице Pets все поля, такие как Name (имя), Animal (вид животного) и Weight (вес), имеют смысл. Они описывают конкретную особь. Поля же LifeSpan (продолжительность жизни), Temperament (характер) и Diet (рацион) не совсем уместны. Они не описывают

конкретного домашнего питомца. В них содержатся стандарты для животных этого вида. Другими словами, эти поля основываются не на вашем животном (как должны были бы) — они основываются на биологическом виде животного. Единственный способ решения про­блемы — создание двух таблиц: Pets и AnimalTypes (виды животных) (рис. 2.23).

Нужен опыт для поиска полей, не связанных с другими полями. В некоторых случаях дробление таблицы на все более мелкие части не стоит затраченных усилий. Теоретически вы можете извлечь информацию об адресе (содержащую такие поля, как Street, City, Country, PostalCode) из таблицы Customers и поместить ее в таблицу Addresses (адреса). Но два клиента проживают по одному адресу довольно редко, поэтому эта дополнительная работа вряд ли окупится. Мы рассмотрим способы определения связей между таблицами, такими как Pets и AnimalTypes, в главе 5.

Совет

Многие специалисты по проектированию БД считают лучшим методом планирования БД — применение учетных карточек (index cards). Для этого запишите все различные типы информа­ции, необходимые для вашей БД. Затем отложите учетную карточку для каждой таблицы, ко­торую планируете использовать. Наконец, возьмите поля из черновика и записывайте их по очереди на соответствующую учетную карточку до тех пор, пока они не разделятся на четкие связанные группы.

Правило 5. Избегайте избыточной информации

Другой тип несвязанной информации — избыточные данные — информация, которая уже есть где-то в БД или даже в той же таблице, иногда в слегка иной форме. Как и в случае дуб­лирования данных, такая избыточность может порождать противоречивость данных.

Вычисляемые данные — самый распространенный тип избыточной информации. Приме­ром может служить поле AverageOrderCost (средняя стоимость заказа) в таблице Customers. Проблема в данном случае состоит в том, что вы можете определить среднюю стоимость заказа, просмотрев в таблице Orders (заказы) все записи для данного клиента, и усреднить их. Вводя поле AverageOrderCost, вы создаете возможность хранения в нем не­корректных данных (возможно, его значение не будет соответствовать реальным записям о заказах). Кроме того, вы усложняете жизнь, поскольку каждый раз, когда клиент вставляет заказ, нужно пересчитывать среднее значение и обновлять запись клиента.

Примечание

Небожители, проектирующие БД, иногда действительно используют вычисляемые данные для повышения производительности. Но этот тип оптимизации очень редко встречается в БД Access. Он больше характерен для размещенных на серверной стороне коммерческих БД, ко­торыми управляют большие компании или Web-сайты.
Далее перечислены еще несколько примеров избыточной информации.


  • Поля Age (возраст) и DateOfBirth (дата рождения) (в таблице People). Обычно вы включаете только поле DateOfBirth. Если же у вас их два, то в поле Age содержится избыточная информация. Но если у вас только поле Age, то вы в опасности — если вы не сможете отслеживать дни рождения и тщательно редактировать каждую запись, ваши данные скоро станут некорректными.

  • Поле DiscountPrice (цена со скидкой) (в таблице Products). Вы должны иметь возможность вычислять цену со скидкой как положено, основываясь на заданных процентах. В обычном деловом мире надбавки и скидки часто меняются. Если вы вычислите скидки,

равные 10%, и сохраните измененные цены в вашей БД, вас ждет много работы в случае снижения скидки до 9%.
Правило 6. Включайте поле Код

Как вы уже знаете, программа Access автоматически создает поле Код (ID), когда вы разра­батываете таблицу в Режиме таблицы, и назначает его первичным ключом вашей таблицы. Но даже теперь, когда вы изучили Конструктор, все равно вставляйте поле Код во все ваши таблицы. Убедитесь, что в нем используется тип данных Счетчик, в этом случае Access ав­томатически заполнит его числами и отведет ему роль первичного ключа.

В некоторых ситуациях в вашу таблицу может быть включено уникальное поле, которое можно использовать как первичный ключ. Не поддавайтесь искушению. Вставляя поле Код, вы всегда увеличиваете степень свободы ваших действий. Поле Код не придется менять ни­когда. Другая информация, даже имена и номера социального обеспечения могут изменить­ся. И если вы используете связи между таблицами, программа Access копирует первичный ключ в другие таблицы. Если первичный ключ меняется, вы вынуждены искать его значение и разных местах БД.

Примечание

Хорошо бы сделать привычкой включение полей Код во все ваши таблицы. В главе 5 вы поймете преимущества такого подхода, когда начнете устанавливать связи между таблицами.

1   ...   4   5   6   7   8   9   10   11   ...   65


написать администратору сайта