Как сделать составной ключ в access?

Определение ключевых полей

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

В Microsoft Access можно выделить три типа ключевых полей: счетчик, простой ключ и составной ключ. Рассмотрим каждый из этих типов.

Для создания ключевого поля типа Счетчик необходимо в режиме Конструктора таблиц:

  1. Включить в таблицу поле счетчика.
  2. Задать для него автоматическое увеличение на 1.
  3. Указать это поле в качестве ключевого путем нажатия на кнопку Ключевое поле (Primary Key) на панели инструментов Конструктор таблиц (Table Design).

Если до сохранения созданной таблицы ключевые поля не были определены, то при сохранении будет выдано сообщение о создании ключевого поля. При нажатии кнопки Да (Yes) будет создано ключевое поле счетчика с именем Код (ID) и типом данных Счетчик (AutoNumber).

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

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

  1. Открыть таблицу в режиме Конструктора.
  2. Выделить поля, которые необходимо определить как ключевые.
  3. Нажать кнопку Ключевое поле (Primary Key) на панели инструментов Конструктор таблиц (Table Design).

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

Рассмотрим в качестве примера применения составного ключа таблицу «Заказано» (OrderDetails) базы данных (Northwind) (рис. 2.23).

В данном случае в качестве составного ключа используются поля «Код заказа» (OrderlD) и «КодТовара» (ProductID), т. к. ни одно из этих полей в отдельности не гарантирует уникальность записи. При этом в таблице выводится не код товара, а наименование товара, т. к. поле «КодТовара» (ProductID) данной таблицы содержит подстановку из таблицы «Товары» (Products), а значения полей «КодТовара» (ProductID) этих таблиц связаны отношением «один-ко-многим» (одной записи таблицы «Товары» (Products) может соответствовать несколько записей таблицы «Заказано» (OrderDetails)). Оба поля могут содержать повторяющиеся значения. Так, один заказ может включать в себя несколько товаров, а в разные заказы могут включаться одинаковые товары. В то же время сочетание полей «КодЗаказа» (OrderlD) и «КодТовара» (ProductID) однозначно определяет каждую запись таблицы «Заказы» (OrderDetails).

Чтобы изменить ключ, необходимо:

  1. Открыть таблицу в режиме Конструктора.
  2. Выбрать имеющиеся ключевые поля.
  3. Нажать на кнопку Ключевое поле (Primary Key), при этом кнопка должна принять положение Выкл., а из области выделения должны исчезнуть значки ключевого поля.
  4. Выбрать поле, которое необходимо сделать ключевым.
  5. Нажать на кнопку Ключевое поле (Primary Key). При этом в области выделения должен появиться значок ключевого поля.

Чтобы удалить ключ, необходимо:

  1. Открыть таблицу в режиме Конструктора.
  2. Выбрать имеющееся ключевое поле (ключевые поля).
  3. Нажать на кнопку Ключевое поле (Primary Key), при этом кнопка должна принять положение Выкл., а из области выделения должен исчезнуть значок (значки) ключевого поля.

MS Access как сделать составные первичные ключи

Я столкнулся с вопросом, касающимся составных первичных ключей в MS Access.
У меня есть две таблицы, tblDevices и tblParameter .

tblDevices имеет два атрибута:

  • numDevice_TAN (он же номер статьи; это номер) и
  • numDevice_SN (серийный номер, это тоже номер).

tblParameter имеет следующие атрибуты::

  • ID (автоинкремент) — это первичный ключ
  • idDevice_TAN (число) должен быть внешним ключом
  • idDevice_SN (число) должен быть внешним ключом
  • boolValidity (боол)
  • datStart_time (дата)
  • (. )

Теперь вот моя проблема: чтобы идентифицировать любое устройство, мне нужна комбинация TAN и SN. Но проблема в том, что могут быть дубликаты числа TAN, поэтому я должен установить параметр «indexed» в Yes(с дубликатами) и число SN в Yes(без дубликатов).
Если я установил внешний ключ (numDevice_SN 1:n idDevice_SN) для числа SN, он работает полностью нормально, но я не могу установить внешний ключ для числа TAN (numDevice_TAN 1:n idDevice_TAN), потому что могут быть дубликаты.

Есть ли у вас какие-либо идеи, как решить эту проблему?

Читать еще:  Как сделать базу данных в access 2013 пошагово?

Я думаю, что это недоразумение с вашей стороны. Вы говорите об индексе на numDevice_TAN и индексе на numDevice_SN , но то, что вы действительно хотите, — это внешний ключ на комбинации этих двух.

Вы говорите, что вам нужно как numDevice_TAN , так и numDevice_SN для идентификации устройства. Таким образом, ни один из столбцов не является уникальным в таблице tblDevices ; оба могут иметь дубликаты. Вы делаете два столбца первичным ключом. (SElect оба столбца, щелкните правой кнопкой мыши, выберите «Primary Key».) Таким образом, таблица состоит только из двух полей, которые до сих пор являются первичным ключом.

Записи в таблице tblParameter ссылаются на записи в таблице tblDevices . Так что вам нужны оба столбца numDevice_TAN и numDevice_SN в tblParameter , тоже. Вы могли бы использовать два плюс некоторый рабочий номер для первичного ключа здесь, но вы решили работать с техническим ID вместо этого. Ничего страшного. В любом случае вы создаете внешний ключ на комбинированных coloumns (на вкладке отношения MS Access: выберите оба столбца в tblDevices и перетащите падение в tblParameter . Сделайте поля совпадающими и нажмите кнопку «ссылочная целостность»).

Я избегаю составного первичного ключа, когда это возможно. Вы можете использовать autonumber в качестве PK / FK для связывания связанных записей, но использовать поля TAN и SN в запросах для фильтрации и сортировки. Можно установить два поля в качестве составного индекса в tblDevices, чтобы предотвратить дублирование пар. Поэтому сохраните tblDevices autonumber PK как FK в tblParameters и не сохраняйте TAN и SN.

Похожие вопросы:

У меня есть таблица foo , которая имеет только два поля: fooIdA и fooIdB (оба одного типа). Это составные первичные ключи, так что: primary key (fooIdA, fooIdB). Учитывая это, как я могу сделать.

Мне поручено перенести базу данных в средний класс ERP. Новая система использует составные первичные ключи здесь и там, и с прагматической точки зрения, почему? По сравнению с автогенерируемые IDs.

Похоже, что waterline-mysql не позволяет создавать составные первичные ключи. Есть ли способ обойти это, так как я создаю приложение поверх существующей базы данных?

У меня есть таблица с тремя столбцами, [ Id,QTY,Date ]. из этих трех, два столбца [id и дата], должны быть установлены в качестве первичных ключей, потому что мне нужно извлечь запись по одному, из.

Я немного смущен, если я должен использовать составные первичные ключи или суррогатные ключи. Первоначально я хотел использовать составные первичные ключи, когда они были необходимы, чтобы иметь.

Я пытаюсь использовать http://compositekeys.rubyforge.org/ для того, чтобы иметь составные первичные ключи в моих моделях activerecord. Я уже добавил gem ‘composite_primary_keys’, ‘=3.1.0’ в свой.

Я разрабатывал базу данных для системы интернет-магазинов. Вопрос , с которым я столкнулся, читая некоторые сообщения на этом сайте, заключается в том, что, хотя я могу использовать составные.

Я создал базу данных, которая имеет составные первичные ключи для Ruby на Rails. Создание миграции работает, но когда я начинаю заполнять базу данных, я все еще получаю предупреждение, что Active.

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

Полезно ли использовать многоколоночные (составные) первичные ключи для таблицы отношений многие ко многим при использовании Linq-SQL? Или я должен просто добавить столбец идентификаторов в качестве.

Замечание. Для составного ключа существенным может оказаться порядок образующих ключ полей

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

Рассмотрим в качестве примера применения составного ключа таблицу «Заказано» (OrderDetails) базы данных «Борей» (Northwind) (рис. 2.25).

В данном случае в качестве составного ключа используются поля «Код заказа» (OrderlD) и «КодТовара» (ProductID), т. к. ни одно из этих полей в отдельности не гарантирует уникальность записи. При этом в таблице выводится не код товара, а наименование товара, т. к. поле «КодТовара» (ProductID) данной таблицы содержит подстановку из таблицы «Товары» (Products), а значения полей «КодТовара» (ProductID) этих таблиц связаны отношением «один-ко-многим» (одной записи таблицы «Товары» (Products) может соответствовать несколько записей таблицы «Заказано» (OrderDetails)). Оба поля могут содержать повторяющиеся значения. Так, один заказ может включать в себя несколько товаров, а в разные заказы могут включаться одинаковые товары. В то же время сочетание полей «КодЗаказа» (OrderlD) и «КодТовара» (ProductID) однозначно определяет каждую запись таблицы «Заказы» (OrderDetails).

Чтобы изменить ключ, необходимо:

1. Открыть таблицу в режиме Конструктора.

2. Выбрать имеющиеся ключевые поля.

3. Нажать на кнопку Ключевое поле(Primary Key), при этом кнопка должна принять положение Выкл.,а из области выделения должны исчезнуть значки ключевого поля.

Читать еще:  Как сделать сводную в access?

4. Выбрать поле, которое необходимо сделать ключевым.

5. Нажать на кнопку Ключевое поле(Primary Key). При этом в области выделения должен появиться значок ключевого поля.

Рис. 2.25. Пример таблицы с использованием составного ключа

Чтобы удалить ключ, необходимо:

1. Открыть таблицу в режиме Конструктора.

2. Выбрать имеющееся ключевое поле (ключевые поля).

3. Нажать на кнопку Ключевое поле(Primary Key), при этом кнопка должна принять положение Выкл.,а из области выделения должен исчезнуть значок (значки) ключевого поля.

Создание и использование индексов

С целью ускорения поиска и сортировки данных в любой СУБД используются индексы. Индекс является средством, которое обеспечивает быстрый доступ киданным в таблице на основе значений одного или нескольких столбцов. Индекс представляет собой упорядоченный список значений и ссылок на те записи, в которых хранятся эти значения. Чтобы найти нужные записи, СУБД сначала ищет требуемое значение в индексе, а затем по ссылкам быстро отбирает соответствующие записи. Индексы бывают двух типов: простые и составные. Простые индексы представляют собой индексы, созданные по одному столбцу. Индекс, построенный по нескольким столбцам, называется составным. Примером составного индекса может быть индекс, построенный по столбцам «Фамилия» и «Имя».

Однако применение индексов приносит не только преимущества, но и недостатки. Главным среди них является тот, что при добавлении и удалении записей или при обновлении значений в индексном столбце требуется обновлять индекс, что при большом количестве индексов в таблице может замедлять работу. Поэтому индексы обычно рекомендуется создавать только для тех столбцов таблицы, по которым наиболее часто выполняется поиск записей. Во многих СУБД (например, FoxPro) индексы хранятся в отдельных файлах и являются предметом заботы разработчиков, т. к. при нарушении индекса поиск данных выполняется некорректно. В Microsoft Access индексы хранятся в том же файле базы данных, что и таблицы и другие объекты Access. Индексировать можно любые поля, кроме МЕМО-полей, полей типа Гиперссылка и объектов OLE.

Чтобы создать простой индекс, необходимо:

1. Открыть таблицу в режиме Конструктора.

2. Выбрать поле, для которого требуется создать индекс.

3. Открыть вкладку Общие(General) и выбрать для свойства Индексированное поле(Indexed) значение Да (Допускаются совпадения)(Yes (Duplicates OK)) или Да (Совпадения не допускаются)(Yes (No duplicates)) (рис. 2.26).

Рис. 2.26. Установка индекса для поля

Ключевое поле таблицы автоматически индексируется и свойству Индексированное поле(Indexed) присваивается значение Да (Совпадения не допускаются)(Yes (No duplicates)).

Составной индекс создается в специальном диалоговом окне. Чтобы создать составной индекс, необходимо:

1. Открыть таблицу в режиме Конструктора.

2. На панели инструментов Конструктор таблиц(Table Design) нажать кнопку Индексы(Indexes.)

3. В первой пустой строке (рис. 2.27) поля Индекс(Index Name) ввести имя индекса.

Рис. 2.27. Диалоговое окно Индексы

4. В поле Имя поля(Field Name) нажать на стрелку и выбрать первое поле, для которого необходимо создать индекс.

5. В следующей строке поля Имя поля(Field Name) указать второе индексируемое поле. (Для данной строки полеИндекс(Index Name) должно оставаться пустым.) Повторите эту операцию для всех полей, которые необходимо включить в индекс. В индексе может быть использовано до 10 полей

Дата добавления: 2015-06-10 ; просмотров: 811 ; ЗАКАЗАТЬ НАПИСАНИЕ РАБОТЫ

16. Ключи. Типы ключей, их назначение. Использование ключей.

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

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

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

Существуют основные правила, которые приняты для ключей в Access:

Для удобства ключевое поле обычно указывается в структуре таблицы первым;

Если для таблицы определен первичный ключ, программа Access автоматически блокирует ввод в это поле повторяющихся значений или значения Null (пусто);

Access автоматически сортирует записи таблицы по первичному ключу;

Поле первичного ключа является индексом, с помощью которого ускоряется сортировка и поиск записей.

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

В режиме конструктора выделите поле, которое будет играть роль первичного ключа;

Кликните по кнопке Ключевое поле панели инструментов Конструктора таблиц или выберите команду главного меню Правка – Ключевое поле (слева возле имени выделенного поля появится символ ключа);

Читать еще:  Как сделать запрос с параметром в access 2013?

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

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

17. Типы связей и их реализация. Ссылочная целостность и ее обеспечение.

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

Более правильным вариантом является вынесение сведений об издателях в отдельную таблицу «Издатели». При этом таблица «Книги» будет содержать ссылки на записи таблицы «Издатели».

Чтобы сохранить синхронизацию, следует обеспечить целостность данных между таблицами «Книги» и «Издатели». Связи с обеспечением целостности данных позволяют следить за тем, чтобы данные в одной таблице соответствовали данным в другой. Например, каждая книга в таблице «Книги» связана с определенным издателем в таблице «Издатели». Добавить в таблицу книгу для издателя, отсутствующего в базе данных, невозможно.

Виды связей между таблицами

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

Существует три вида связей между таблицами. Вид создаваемой связи зависит от того, как заданы связанные столбцы.

Связи «один ко многим»

Связь «один ко многим» — наиболее распространенный вид связи. При такой связи каждой строке таблицы А может соответствовать множество строк таблицы Б, однако каждой строке таблицы Б может соответствовать только одна строка таблицы А. Например, между таблицами «Издатели» и «Книги» установлена связь «один ко многим»: каждый из издателей может опубликовать множество книг, однако каждая книга публикуется лишь одним издателем.

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

В Microsoft Access сторона связи «один ко многим», которой соответствует первичный ключ, обозначается символом ключа. Сторона связи, которой соответствует внешний ключ, обозначается символом бесконечности.

Связи «многие ко многим»

При установлении связи «многие ко многим» каждой строке таблицы А может соответствовать множество строк таблицы Б и наоборот. Такая связь создается при помощи третьей таблицы, называемой соединительной, первичный ключ которой состоит из внешних ключей, связанных с таблицами А и Б. Например, между таблицами «Авторы» и «Книги» установлена связь вида «многие ко многим», задаваемая с помощью связей вида «один ко многим» между каждой из этих таблиц и таблицей «АвторыКниг». Первичный ключ таблицы «АвторыКниг» — это сочетание столбцов «ИД_автора» (первичного ключа таблицы авторов) и «ИД_книги» (первичного ключа таблицы заголовков).

Связи «один к одному»

При установлении связи «один к одному» каждой строке таблицы А может соответствовать только одна строка таблицы Б и наоборот. Связь «один к одному» создается в том случае, когда оба связанные столбца являются первичными ключами или на них наложены ограничения уникальности.

Этот вид связи используется редко, поскольку в такой ситуации связываемые данные обычно можно хранить в одной таблице. Использовать связь вида «один к одному» можно в указанных ниже случаях.

• Чтобы разделить таблицу, содержащую слишком много столбцов.

• Чтобы изолировать часть таблицы по соображениям безопасности.

• Для хранения данных кратковременного использования, удалить которые проще всего путем очистки таблицы.

• Для хранения данных, имеющих отношение только к подмножеству основной таблицы.

В Microsoft Access сторона связи «один к одному», которой соответствует первичный ключ, обозначается символом ключа. Сторона связи, которой соответствует внешний ключ, также обозначается символом ключа.

Создание связей между таблицами

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

Ссылка на основную публикацию
Adblock
detector