какое поле данной таблицы может быть ключевым
Определение ключевых полей
Выше неоднократно упоминалось понятие ключевого поля. Ключевое поле — это одно или несколько полей, комбинация значений которых однозначно определяет каждую запись в таблице. Если для таблицы определены ключевые поля, то Microsoft Access предотвращает дублирование или ввод пустых значений в ключевое поле. Ключевые поля используются для быстрого поиска и связи данных из разных таблиц при помощи запросов, форм и отчетов.
В Microsoft Access можно выделить три типа ключевых полей: счетчик, простой ключ и составной ключ. Рассмотрим каждый из этих типов.
Для создания ключевого поля типа Счетчик необходимо в режиме Конструктора таблиц:
Если до сохранения созданной таблицы ключевые поля не были определены, то при сохранении будет выдано сообщение о создании ключевого поля. При нажатии кнопки Да (Yes) будет создано ключевое поле счетчика с именем Код (ID) и типом данных Счетчик (AutoNumber).
Для создания простого ключа достаточно иметь поле, которое содержит уникальные значения (например, коды или номера). Если выбранное поле содержит повторяющиеся или пустые значения, его нельзя определить как ключевое. Для определения записей, содержащих повторяющиеся данные, можно выполнить запрос на поиск повторяющихся записей. Если устранить повторы путем изменения значений невозможно, следует либо добавить в таблицу поле счетчика и сделать его ключевым, либо определить составной ключ.
Составной ключ необходим в случае, если невозможно гарантировать уникальность записи с помощью одного поля. Он представляет собой комбинацию нескольких полей. Для определения составного ключа необходимо:
Для составного ключа существенным может оказаться порядок образующих ключ полей. Сортировка записей осуществляется в соответствии с порядком ключевых полей в окне Конструктора таблицы. Если необходимо указать другой порядок сортировки без изменения порядка ключевых полей, то сначала нужно определить ключ, а затем нажать кнопку Индексы (Indexes) на панели инструментов Конструктор таблиц (Table Design). Затем в появившемся окне Индексы (Indexes) нужно указать другой порядок полей для индекса с именем Ключевое поле (Primary Key).
Рассмотрим в качестве примера применения составного ключа таблицу «Заказано» (OrderDetails) базы данных (Northwind) (рис. 2.23).
В данном случае в качестве составного ключа используются поля «Код заказа» (OrderlD) и «КодТовара» (ProductID), т. к. ни одно из этих полей в отдельности не гарантирует уникальность записи. При этом в таблице выводится не код товара, а наименование товара, т. к. поле «КодТовара» (ProductID) данной таблицы содержит подстановку из таблицы «Товары» (Products), а значения полей «КодТовара» (ProductID) этих таблиц связаны отношением «один-ко-многим» (одной записи таблицы «Товары» (Products) может соответствовать несколько записей таблицы «Заказано» (OrderDetails)). Оба поля могут содержать повторяющиеся значения. Так, один заказ может включать в себя несколько товаров, а в разные заказы могут включаться одинаковые товары. В то же время сочетание полей «КодЗаказа» (OrderlD) и «КодТовара» (ProductID) однозначно определяет каждую запись таблицы «Заказы» (OrderDetails).
Чтобы изменить ключ, необходимо:
Чтобы удалить ключ, необходимо:
Иллюстрированный самоучитель по Microsoft Access 2002
Определение ключевых полей
Выше неоднократно упоминалось понятие ключевого поля. Ключевое поле – это одно или несколько полей, комбинация значений которых однозначно определяет каждую запись в таблице. Если для таблицы определены ключевые поля, то Microsoft Access предотвращает дублирование или ввод пустых значений в ключевое поле. Ключевые поля используются для быстрого поиска и связи данных из разных таблиц при помощи запросов, форм и отчетов.
В Microsoft Access можно выделить три типа ключевых полей: счетчик, простой ключ и составной ключ. Рассмотрим каждый из этих типов.
Для создания ключевого поля типа Счетчик необходимо в режиме Конструктора таблиц:
Если до сохранения созданной таблицы ключевые поля не были определены, то при сохранении будет выдано сообщение о создании ключевого поля. При нажатии кнопки Да (Yes) будет создано ключевое поле счетчика с именем Код (ID) и типом данных Счетчик (AutoNumber).
Для создания простого ключа достаточно иметь поле, которое содержит уникальные значения (например, коды или номера). Если выбранное поле содержит повторяющиеся или пустые значения, его нельзя определить как ключевое. Для определения записей, содержащих повторяющиеся данные, можно выполнить запрос на поиск повторяющихся записей. Если устранить повторы путем изменения значений невозможно, следует либо добавить в таблицу поле счетчика и сделать его ключевым, либо определить составной ключ.
Составной ключ необходим в случае, если невозможно гарантировать уникальность записи с помощью одного поля. Он представляет собой комбинацию нескольких полей. Для определения составного ключа необходимо:
Замечание
Для составного ключа существенным может оказаться порядок образующих ключ полей. Сортировка записей осуществляется в соответствии с порядком ключевых полей в окне Конструктора таблицы. Если необходимо указать другой порядок сортировки без изменения порядка ключевых полей, то сначала нужно определить ключ, а затем нажать кнопку Индексы (Indexes) на панели инструментов Конструктор таблиц (Table Design). Затем в появившемся окне Индексы (Indexes) нужно указать другой порядок полей для индекса с именем Ключевое поле (Primary Key).
Рассмотрим в качестве примера применения составного ключа таблицу «Заказано» (OrderDetails) Базы данных (Northwind) (рис. 2.23).
В данном случае в качестве составного ключа используются поля «КодЗаказа» (OrderlD) и «КодТовара» (ProductID), т. к. ни одно из этих полей в отдельности не гарантирует уникальность записи. При этом в таблице выводится не код товара, а наименование товара, т. к. поле «КодТовара» (ProductID) данной таблицы содержит подстановку из таблицы «Товары» (Products), а значения полей «КодТовара» (ProductID) этих таблиц связаны отношением «один-ко-многим» (одной записи таблицы «Товары» (Products) может соответствовать несколько записей таблицы «Заказано» (OrderDetails)). Оба поля могут содержать повторяющиеся значения. Так, один заказ может включать в себя несколько товаров, а в разные заказы могут включаться одинаковые товары. В то же время сочетание полей «КодЗаказа» (OrderlD) и «КодТовара» (ProductID) однозначно определяет каждую запись таблицы «Заказы» (OrderDetails).
Чтобы изменить ключ, необходимо:
Рис. 2.23. Пример таблицы с использованием составного ключа
Чтобы удалить ключ, необходимо:
Ключевые поля. Типы используемых ключевых полей
Базы данных, такие как Microsoft Access, могут быстро найти и связать данные из разных таблиц при помощи запросов, форм и отчетов. Для этого каждая таблица должна содержать одно или несколько полей, однозначно идентифицирующих каждую запись в таблице. Это называется ключевым полем таблицы. Если для таблицы обозначены ключевые поля, то Microsoft Access предотвращает дублирование или ввод пустых значений в ключевое поле.
В Microsoft Access можно выделить три типа ключевых полей: счетчик, простой ключ и составной ключ.
Поле счетчика можно задать таким образом, чтобы добавлении каждой записи в таблицу в это поле автоматически вносилось порядковое число. Указание такого поля в качестве ключевого является наиболее простым способом создания ключевых полей. Если до сохранения созданной таблицы ключевые поля не были определены, то при сохранении будет выдано сообщение о создании ключевого поля. При нажатии кнопки Да будет создано ключевое поле счетчика.
Простой ключ. Если поле содержит уникальные значения, такие как коды или инвентарные номера, то это поле можно определить как ключевое. Если выбранное поле содержит повторяющиеся или пустые значения, то оно не будет определено как ключевое. Для определения записей, содержащих повторяющиеся данные можно выполнить запрос на поиск повторяющихся записей. Если устранить повторы путем изменения значений невозможно, то следует либо добавить в таблицу поле счетчика и сделать его ключевым, либо определить составной ключ.
Составной ключ. В случаях, когда невозможно гарантировать уникальность значений каждого поля, существует возможность создать ключ, состоящий из нескольких полей. Чаще всего такая ситуация возникает для таблицы, используемой для связывания двух таблиц в отношении “многие-ко-многим”. Примером такой таблицы может служить таблица “Заказано”, связывающая таблицы “Заказ” и “Товар”. Ключ в этой таблице состоит из двух полей: “КодЗаказа” и “КодТовара”. В таблице “Заказано” может быть представлено много товаров и много заказов, но каждый товар включается в заказ только один раз, поэтому комбинация значений полей “КодЗаказа” и “КодТовара” достаточна для образования ключа.
Принципы организации связей между таблицами
Связь между таблицами устанавливается через уникальный индекс главной таблицы (В качестве главной таблицы принимается таблица, в которой отсутствуют ссылки на другие таблицы), который необходимо ввести в связуемую таблицу при ее создании (через создание поля аналогичного в главной таблице), либо передать при введении столбца подстановок в связуемую таблицу (последнее делается автоматически при введении столбца подстановок). Таким образом, можно в связуемую таблицу вводить любое поле главной таблицы, при этом имя ключевого поля главной таблицы присваивается имени поля столбца подстановок, а ключевой столбец делается скрытым.
Предпочтительным является второй способ. При первом способе придется постоянно следить, чтобы данные полей, через которые обеспечивается связь были постоянно одинаковы. Это значит, что при необходимости введения нового данного в поле, связанного с главной таблицей необходимо будет сначала ввести эти данные в главную таблицу, затем их вводить в связуемой таблице полностью идентичными.
Рассмотрим пример, изображенный на Рисунке 1.
3. СОДЕРЖАНИЕ РАБОТЫ
1) Изучить основные понятия СУБД.
2) Выбрать предметную область (самостоятельно), которая будет отражена в проектируемой базе данных (данные об электродвигателях, радиоэлектронные устройства, о полупроводниковых устройствах и т.п.).
3) Выполнить задание согласно методическим указаниям.
4) Распечатать полученные отчеты (с помощью PrintScreen).
6) Оформить контрольную работу.
1. Дубнов П.Ю. Access 2002.- М.: ДКМ Пресс, 2004.- 313 с.
2.Карчевский Е.М., Филиппов И.Е. Access 2010 в примерах: Учебно-методическое пособие.- Казань: Казанский федеральный университет, 2011. – 118 с.
Общие условия выбора системы дренажа: Система дренажа выбирается в зависимости от характера защищаемого.
Организация стока поверхностных вод: Наибольшее количество влаги на земном шаре испаряется с поверхности морей и океанов (88‰).
Механическое удерживание земляных масс: Механическое удерживание земляных масс на склоне обеспечивают контрфорсными сооружениями различных конструкций.
Добавление и изменение первичного ключа таблицы в Access
Первичный ключ — это поле или набор полей со значениями, которые являются уникальными для всей таблицы. Значения ключа могут использоваться для обозначения всех записей, при этом каждая запись имеет отдельное значение ключа. Каждая таблица может содержать только один первичный ключ. Access может автоматически создавать поле первичного ключа при создании таблицы. Вы также можете самостоятельно указать поля, которые нужно использовать в качестве первичного ключа. В этой статье объясняется, как и зачем использовать первичные ключи.
Чтобы задать первичный ключ таблицы, откройте таблицу в режиме конструктора. Выберите нужное поле (или поля), а затем на ленте щелкните Ключевое поле.
Примечание: Эта статья относится только к классическим базам данных Access. В веб-приложениях Access и веб-базах данных первичный ключ для новых таблиц назначается автоматически. Несмотря на то что автоматические первичные ключи можно менять, делать это не рекомендуется.
В этой статье
Общие сведения о первичных ключах в Access
Используя поля первичных ключей, Access быстро связывает данные из нескольких таблиц и объединяет их понятным образом. Вы можете добавить поля первичных ключей в другие таблицы, чтобы ссылаться на таблицу, которая является источником первичного ключа. В других таблицах поля называются внешними ключами. Например, поле «ИД клиента» в таблице «Клиенты» также может отображаться в таблице «Заказы». В таблице «Клиенты» оно является первичным ключом. В таблице «Заказы» оно называется внешним ключом. Проще говоря, внешний ключ — это первичный ключ другой таблицы. Дополнительные сведения см. в статье Основные сведения о создании баз данных.
При переносе существующих данных в базу данных в них уже может существовать поле, которое можно использовать как первичный ключ. Часто в роли первичного ключа таблицы выступает уникальный идентификационный номер, например порядковый или инвентарный номер или код. Например, в таблице «Клиенты» для каждого клиента может быть указан уникальный код клиента. Поле кода клиента является первичным ключом.
Для первичного ключа автоматически создается индекс, ускоряющий выполнение запросов и операций. Кроме того, приложение Access проверяет наличие и уникальность значений в поле первичного ключа.
При создании таблицы в режиме таблицы Access автоматически создает первичный ключ с именем «Код» и типом данных «Счетчик».
Создание приемлемого первичного ключа
Чтобы правильно выбрать первичный ключ, следует учитывать несколько характеристик.
Ключ должен однозначно определять каждую строку.
В нем не должно быть пустых или отсутствующих значений — он всегда содержит значение.
Ключ крайне редко изменяется (в идеале — никогда).
Если не удается определить приемлемый ключ, создайте для него поле с типом данных «Счетчик». Поле «Счетчик» заполняется автоматически созданными значениями при первом сохранении каждой записи. Таким образом, поле «Счетчик» соответствует всем трем характеристикам приемлемого первичного ключа. Дополнительные сведения о добавлении поля «Счетчик» см. в статье Добавление поля счетчика в качестве первичного ключа.
Поле с типом данных «Счетчик» является хорошим первичным ключом.
Примеры неудачных первичных ключей
Любое поле, не имеющее одной или нескольких характеристик подходящего первичного ключа, не следует выбирать в качестве первичного ключа. Ниже представлено несколько примеров полей, которые не годятся на роль первичного ключа в таблице «Контакты», и пояснения, почему их не следует использовать.
Неподходящий первичный ключ
Может быть не уникальным и может изменяться
Типы используемых ключевых полей
Сила реляционных баз данных заключается в том, что они могут быстро найти и связать данные из разных таблиц при помощи запросов, форм и отчетов. Для этого каждая таблица должна содержать одно или несколько полей, однозначно идентифицирующих каждую запись в таблице. Это называется ключевым полем таблицы. Если для таблицы обозначены ключевые поля, то БД предотвращает дублирование или ввод пустых значений в ключевое поле.
Можно выделить три типа ключевых полей: счетчик, простой ключ и составной ключ.
Поле счетчика. Можно задать таким образом, чтобы при добавлении каждой записи в таблицу в это поле автоматически вносилось порядковое число. Указание такого поля в качестве ключевого является наиболее простым способом создания ключевых полей.
Простой ключ. Если поле содержит уникальные значения, такие как коды или инвентарные номера, то это поле можно определить как ключевое. Если выбранное поле содержит повторяющиеся или пустые значения, то оно не будет определено как ключевое. Для определения записей, содержащих повторяющиеся данные, можно выполнить запрос на поиск повторяющихся записей. Если устранить повторы путем изменения значений невозможно, то следует либо добавить в таблицу поле счетчика и сделать его ключевым, либо определить составной ключ.
Составной ключ. В случаях, когда невозможно гарантировать уникальность значений каждого поля, существует возможность создать ключ, состоящий из нескольких полей. Примером может служить база данных по складским запасам, в которой используются один основной и один или несколько вспомогательных инвентарных номеров.
Не рекомендуется определять ключ по полям «Имена» и «Фамилии», поскольку нельзя исключить повторения этой пары значений для разных людей.
Допускается назначение ключевым полем поля, содержащие данные, однако, если в этом поле имеются повторяющиеся или пустые значения, будет выведено сообщение об ошибке.
Для составного ключа существенным может оказаться порядок образующих ключ полей.
Выбор полей для индексирования. В основном требуется индексировать поля, для которых часто осуществляется поиск, сортировка или поля, объединенные с полями из других таблиц в запросах. Однако иногда при использовании индексов действие замедляется, например, при добавлении запросов составные индексы должны обновляться.
Ключевые поля таблицы индексируются автоматически. Нельзя индексировать поля с типом данных поле МЕМО, гиперссылка или объект OLE.
Составные индексы. Если предполагается, что сортировка или поиск двух и более полей одновременно будет часто выполняться, можно создать составной индекс. Например, если для одного и того же запроса часто устанавливается критерий для полей «Имя» и «Фамилия», то для этих двух полей имеет смысл создать составной индекс.
При сортировке таблицы по составному индексу сначала осуществляется сортировка по первому полю, определенному для данного индекса. Если в первом поле содержатся записи с повторяющимися значениями, то сортировка осуществляется по второму полю, определенному для данного индекса, и так далее.
Предотвращение ввода в поле повторяющихся значений. Использование ключевого поля (для одного поля) запрещает ввод в него повторяющихся значений, тем самым обеспечивая для каждой записи уникальный идентификатор.
Определение в базе данных связей между таблицами. После создания различных таблиц, разработчик должен продумать, каким образом будет объединять эти данные при их извлечении из базы данных. Первым шагом при этом является определение связей между таблицами. После этого становится возможным создание запросов, форм и отчетов, в которых выводятся данные из нескольких таблиц сразу.
Связь между таблицами устанавливает отношения между совпадающими значениями в ключевых полях, обычно между полями разных таблиц, имеющими одинаковые имена. В большинстве случаев с ключевым полем одной таблицы, являющимся уникальным идентификатором каждой записи, связывается внешний ключ другой таблицы.
Отношение «один-ко-многим». Связь с отношением «один-ко-многим» является наиболее часто используемым типом связи между таблицами. В такой связи каждой записи в таблице A могут соответствовать несколько записей в таблице B, а запись в таблице B – не может иметь более одной соответствующей ей записи в таблице A.
Отношение «многие-ко-многим». При отношении «многие-ко-многим» одной записи в таблице A могут соответствовать несколько записей в таблице B, а одной записи в таблице B – несколько записей в таблице A. Такая схема реализуется только с помощью третьей (связующей) таблицы, ключ которой состоит из по крайней мере двух полей, которые являются полями внешнего ключа в таблицах A и B.
Отношение «один-к-одному». При отношении «один-к-одному» запись в таблице A может иметь не более одной связанной записи в таблице B и наоборот. Этот тип связи используют не очень часто, поскольку такие данные могут быть помещены в одну таблицу.
Определение связей между таблицами.
Тип создаваемой связи зависит от полей, для которых определяется связь:
– отношение «один-ко-многим» создается в том случае, когда только одно из полей является ключевым или имеет уникальный индекс;
– отношение «один-к-одному» создается в том случае, когда оба связываемых поля являются ключевыми или имеют уникальные индексы;
– связь с отношением «многие-ко-многим» фактически является двумя связями с отношением «один-ко-многим» через третью таблицу, ключ которой состоит из по крайней мере двух полей, которые являются полями внешнего ключа в двух других таблицах.
Что означает целостность данных?
Целостность данных обеспечивает защиту от случайного удаления или изменения связанных данных. Установить целостность данных можно, если выполнены следующие условия.
1. Связанное поле главной таблицы является ключевым полем или имеет уникальный индекс.
2. Связанные поля имеют один тип данных.
Установив целостность данных, необходимо следовать следующим правилам.
1. Невозможно ввести в поле внешнего ключа связанной таблицы значение, не содержащееся в ключевом поле главной таблицы.
2. Не допускается удаление записи из главной таблицы, если существуют связанные с ней записи в подчиненной таблице.
3. Невозможно изменить значение ключевого поля в главной таблице, если существуют записи, связанные с данной.
Чтобы наложить эти правила на конкретную связь, при ее создании следует установить флажок “Обеспечение целостности данных”.
Чтобы преодолеть ограничения на удаление или изменение связанных записей, сохраняя при этом целостность данных, следует установить флажки “Каскадное обновление связанных полей” и “Каскадное удаление связанных полей”. Если установлен флажок “Каскадное обновление связанных полей”, то при изменении ключевого поля главной таблицы автоматически изменяются и соответствующие значения связанных записей. Если установлен флажок “Каскадное удаление связанных полей”, то при удалении записи в главной таблице удаляются и все связанные записи в подчиненной таблице.
Выбор типа поля счетчика. Для создания полей, в которые при добавлении записи автоматически вводится число, существует тип данных счетчика. Созданный для записи номер уже не может быть удален или изменен. Наиболее часто используется счетчик последовательно возрастающих чисел. Такой тип счетчика удобно использовать как ключевое поле таблицы.
Данные, используемые в поле таблицы (табл. 2).
При выборе типа данных, используемых в поле, необходимо учитывать следующее:
1) какие значения должны отображаться в поле. Например, нельзя хранить текст в поле, имеющем числовой тип данных;
2) сколько места необходимо для хранения значений в поле;
3) какие операции должны производиться со значениями в поле. Например, суммировать значения можно в числовых полях и в полях, имеющих валютный формат, а значения в текстовых полях и полях объектов OLE нельзя;
4) нужна ли сортировка или индексирование поля. Сортировать и индексировать поля MЕМО, гиперссылки и объекты OLE невозможно;
5) необходимо ли использование полей в группировке записей в запросах или отчетах. Поля MЕМО, гиперссылки и объекты OLE использовать для группировки записей нельзя;
6) каким образом должны быть отсортированы значения в поле. Числа в текстовых полях сортируются как строки чисел (1, 10, 100, 2, 20, 200 и т.д.), а не как числовые значения. Для сортировки чисел как числовых значений используйте числовые поля или поля, имеющие денежный формат. Также многие форматы дат невозможно отсортировать надлежащим образом, если они были введены в текстовое поле. Для обеспечения сортировки используйте поле типа «Дата / время».
Текст или комбинация текста и чисел, например адрес, номера телефонов, почтовый индекс
До 255 символов. Хранятся только введенные в поле символы; позиции, не использованные в текстовом поле, не хранятся
Длинный текст или числа, например пометки или описание
Числовые данные, используемые для математических вычислений
Автоматическая вставка последовательных (отличающихся на 1) или случайных чисел при добавлении записи
Поля, содержащие только одно или два значения, таких как «Да/Нет», «Истина/Ложь», «Включено/Выключено»
Объекты (например документы Microsoft Word, электронные таблицы Microsoft Excel, рисунки, звуки и другие данные), созданные в других программах, использующих протокол OLE
До 1 гигабайта (ограничено объемом диска)
Поле, в котором хранятся гиперссылки
Нормализация баз данных. Для оптимизации работы баз данных их приводят к так называемой нормальной форме. Существует несколько видов нормальных форм. Основное значение приведения к нормальному виду заключается в том, чтобы логические группы данных были расположены не более чем в одной таблице. Это дает следующие преимущества:
– данные легко обновлять или удалять;
– исключается возможность рассогласования копий данных;
– уменьшается возможность введения некорректных данных.