• Число десятичных знаков. Для этого свойства числовых полей и полей счётчика можно выбрать из раскрывающегося списка значение Авто или фиксированное количество знаков дробной части, а можно ввести значение и вручную. Поля других типов этого свойства не имеют. От указанного здесь значения, как и от значения свойства Формат поля, зависит то, как данные будут отображаться на экране (на сами данные значение этого свойства не влияет).
• Маска ввода. Значением этого свойства может быть символьная строка, подобная той, которая определяет формат поля. Только маска ввода определяет, как данные будут вводиться или редактироваться. Для создания масок ввода полей типа Текстовый, Числовой, Дата/время и Денежный есть специальный мастер, которого можно запустить с помощью кнопки с троеточием (она появится справа, если щелкнуть мышкой на нужном свойстве). Этот мастер предложит вам целый список готовых масок ввода, подходящих, например, для ввода номеров телефона, времени, дат, индексов и т.п.
• Подпись. Если вы хотите, чтобы в режиме таблицы в качестве заголовка поля выводилось не его имя, а более удобная или понятная надпись, именно сюда ее и нужно ввести. Для подписей никаких ограничений не существует — они могут содержать любые символы, включая точки, восклицательные знаки и квадратные скобки.
• Значение по умолчанию. Значение, которое вы введете для этого свойства, Access будет автоматически вносить в указанное поле каждой добавляемой в таблицу записи. Очень часто в качестве значения по умолчанию для полей типа Дата/время используетсятекущая дата. Для полей типа Поле объекта OLE и Счетчик значений по умолчанию быть не может.
-Условие на значение. Здесь вводится условие (в виде выражения Ассеss), которое будет проверяться каждый раз, когда значение поля будет изменяться пользователем. Свойство Условие на значение у полей типа Поле MEMO, Поле объекта OLE и Счетчик отсутствует.
Сообщение об ошибке. Если введенное в таблицу значение не соответствует условию проверки (определенному в свойстве Условие на значение), пользователь увидит в строке состояния указанное здесь сообщение.
• Обязательное поле. Если для этого свойства задать значение Да, пользователь обязательно должен ввести значение этого поля для каждой добавляемой им в таблицу записи. Такая установка эквивалентна заданию для свойства Условие на значение значения IsNotNull. Для полей, являющихся частью первичного ключа, задавать это свойство не обязательно — пустые значения (Null -значения) в них не допускаются по определению.
• Пустые строки. Это свойство есть только у текстовых, МЕМО-полей и гиперссылок. Его значение Нет означает, что в поле должен быть введен хотя бы один символ. В Ассе ss между пустой строкой и значением поля Null существует определенная разница, поэтому свойства Пустые строки и Обязательное поле используются независимо.
• Индексированное поле. Свойство определяет индекс, создаваемый по одному полю. Это свойство может иметь одно из трех значений, выбираемых из раскрывающегося списка: Нет, Да (допускаются совпадения), Да (совпадения не допускаются). Последнее означает, что никакие две записи таблицы не могут иметь одинаковые значения данного поля. Для удаления индекса, созданного по одному полю, достаточно свойству Индексированное поле присвоить значение Нет. Нельзя индексировать таблицы по полям типа Поле MEMO, Поле объекта OLE и Гиперссылка.
• Новые значения. Это свойство есть только у полей-счетчиков. Оно определяет способ вычисления новых значений для добавляемых в таблицу записей: последовательные (максимальное из значений поля +1) или случайные числа. Случайные значения счетчика, как правило, используются при репликации данных, чтобы при добавлении записей в реплики одной и той же таблицы значения их ключевых полей не совпадали.
Итак, чтобы добавить в базу данных первую таблицу, нужно ввести имена ее полей, указать их типы и размеры, а также формат отображения данных.
Одним из главных принципов построения реляционных баз данных является то, что в каждом поле таблицы должны содержаться данные только одного типа. Для данных разных типов нужно создавать отдельные поля. При добавлении в таблицу новых полей Ассеss автоматически назначает их текстовыми. Если поле должно быть другим, разработчик базы данных выбирает тип его данных из раскрывающегося списка. Тип данных поля должен быть определен обязательно. Кроме того, можно определить его размер, формат отображения данных на экране и другие характеристики поля.
Межтабличные связи, ключевые поля
Последнее, что нужно сделать, прежде чем начать ввод данных в новую таблицу, — определить связи таблицы. Личные дела с другими таблицами базы данных, а также назначить ключевое поле и создать индексы для сортировки и поиска данных.
Создание межтабличных связей
От того, как новая таблица связана с остальными, зависит, какое из ее полей следует назначить первичным ключом. В теории СУБД известны четыре варианта связей между двумя таблицами (традиционно называемых отношениями). Все их мы рассматриваем с точки зрения того, как новая таблица связана с одной из существующих (как часто говорят, мы смотрим на связь со стороны новой таблицы):
• Отношение один-к-одному. При таком отношении каждой записи первой таблицы соответствует не более одной записи второй таблицы, и наоборот. Соответствие записей устанавливается в результате поиска в поле, являющемся первичным ключом одной из таблиц, значения поля, называемого внешним ключом второй таблицы. В этом случае ключевое поле новой таблицы, в котором ищутся соответствующие значения поля существующей таблицы, не должно содержать повторяющихся значений. Можно сказать, что две таблицы, связанные отношением один-к-одному, представляют собой одну таблицу, разделенную надвое вертикальной чертой, так что часть полей оказалась в одной таблице, а часть — в другой.
• Отношение многие-к-одному. При таком отношении любой записи той таблицы базы данных, связь с которой мы рассматриваем, может соответствовать любое количество записей созданной нами новой таблицы, но не наоборот. В этом случае ключевое поле новой таблицы, по которому устанавливается соответствие записей, будет внешним ключом, повторяющиеся значения в нем допускаются.
Этот тип отношений наиболее распространен. Именно возможность создавать межтабличные связи типа многие-к-одному и отличает реляционные СУБД от обычных процессоров плоских файлов.
• Отношение один-ко-многим. В этом случае первичный ключ новой таблицы (поле, содержащее уникальные значения) связывается с внешним ключом старой (значения поля могут повторяться). При этом каждой записи новой таблицы может соответствовать несколько записей существующей. Фактически это отношение в точности такое же, как отношение многие-к-одному. Можно сказать, что отношение многие-к-одному — это отношение один-ко-многим наоборот.
Отношение многие-ко-многим. В этом последнем случае каждой записи одной из таблиц может соответствовать любое количество записей другой таблицы, и наоборот. Соответственно поля обеих таблиц, по которым осуществляется связь, являются внешними ключами и могут содержать повторяющиеся значения.
Итак, все эти четыре вида отношений говорят о том, как новая таблица связана с существующей.
Access требует, чтобы те поля двух таблиц, по которым они связываются между собой, имели одинаковые типы данных. В случае числовых полей это требование означает, что их подтипы, т.е. значения свойства Размер поля, должны совпадать. А вот текстовые поля разной длины связывать можно. Хотя и не стоит, потому что запросы, основанные на таблицах, связанных по текстовым полям разной длины ведут себя довольно странно. Для того чтобы создавать связи между таблицами было легко и удобно, Access предлагает специальный режим: в окне Схема данных вы найдете наглядное графическое представление межтабличных связей. Чтобы перейти в этот режим и установить связь между двумя таблицами, выполните перечисленные ниже действия.
1. Закройте таблицу Клиент (с помощью кнопки закрытия окна). Если открыта таблица Объем заказа, закройте и ее. Изменять связи между открытыми таблицами нельзя.
2.Чтобы на панели инструментов присутствовала кнопка Схема данных, окно базы данных должно быть активным. Если это не так, активизируйте его с помощью кнопки панели инструментов или команды меню Окно1. В списке меню Окно может присутствовать до девяти названий открытых окон объектов базы данных, но окно базы данных всегда стоит первым.
3. Щелкните на кнопке панели инструментов Схема данных или выберите команду Сервис, потом Схема данных. Откроется окно Схема данных базы данных Анкетный опрос, в котором будут представлены все межтабличные связи этой базы данных.
4.Теперь щелкните на кнопке панели инструментов Добавить таблицу или выберите команду Связи, потом Добавить таблицу из меню Access. Перед вами появится диалоговое окно Добавление таблицы.
5.Выберите из списка предложенных таблиц Клиент и дважды щелкните мышью или с помощью кнопки Добавить добавьте ее в окно Схема данных. Щелкните на кнопке Закрыть.
6.Связь между таблицами Объемом заказа и Клиент основывается на значениях их полей Название организации. Щелкните мышью на поле Название организации таблицы Клиент и перетащите его на поле Название организации Объем заказа. Перед вами появится диалоговое окно Связи.
7. В диалоговом окне Связи есть очень полезная опция — Обеспечение целостности данных. Если установить соответствующий флажок, то при вводе пользователем в таблицу Клиент значения поля Название организации, Access проверит, есть ли в таблице Объем заказа запись с таким кодом (названием). Если такой записи не окажется, Access выдаст предупреждающее сообщение и откажется сохранять в таблице Клиент записи.. Такая процедура называется обеспечением (или поддержкой) целостности данных. Подробнее о целостности данных рассказывается в следующем разделе.