Консультация № 79434
22.03.2007, 22:57
0.00 руб.
0 2 2
Здраствуйте, уважаемые эксперы.
В MS Access надо связать поля 2-х таблиц, чтобы при изменении данных в одном столбце таблицы данные менялись в другой таблице. Включены обновления, удаления, целостность, появляется ошибка нет уникального индекса, если менять ключевые поля идет ошибка индекс или ключ не может содержать пустое значение. Как связать 2 таблицы ?
Связь создал но не понял как ((((. Чёрная линия появилась, соединила 2 столбца, при этом ключевые поля в 2-х таблицах находятся у разных столбцов.

Обсуждение

Неизвестный
23.03.2007, 00:07
общий
это ответ
Здравствуйте, Nell!

У Вас связь создана верно. Вы правильно создали связь <b>одно</b> поле в связи является <b>ключом</b>, а другое нет, а если Вы пытаетесь соединить вда ключевых поля то у Вас ничего не получиться. Так же при создании связи обязательно <b>типы данных должны совпадать</b>, если типы различны связь с целостностью не создастся!!! Например:
<code>текстовый и текстовый
числовой и числовой
счетчик и числовой
денежный и денежный</code>

И на последок немного теории о типах связей в Microsoft Access.
Тип отношения в создаваемой Microsoft Access связи зависит от способа определения связываемых полей.

<b>Отношение «один-ко-многим»</b>
Отношение «один-ко-многим» является наиболее часто используемым типом связи между таблицами. В отношении «один-ко-многим» каждой записи в таблице A могут соответствовать несколько записей в таблице B, но запись в таблице B не может иметь более одной соответствующей ей записи в таблице A.

<b>Отношение «один-к-одному»</b>
При отношении «один-к-одному» запись в таблице A может иметь не более одной связанной записи в таблице B и наоборот. Отношения этого типа используются не очень часто, поскольку большая часть сведений, связанных таким образом, может быть помещена в одну таблицу. Отношение «один-к-одному» может использоваться для разделения очень широких таблиц, для отделения части таблицы по соображениям защиты, а также для сохранения сведений, относящихся к подмножеству записей в главной таблице.

<b>Отношение «многие-ко-многим»</b>
При отношении «многие-ко-многим» одной записи в таблице A могут соответствовать несколько записей в таблице B, а одной записи в таблице B несколько записей в таблице A. Этот тип связи возможен только с помощью третьей (связующей) таблицы, первичный ключ которой состоит из двух полей, которые являются внешними ключами таблиц A и B. Отношение «многие-ко-многим» по сути дела представляет собой два отношения «один-ко-многим» с третьей таблицей. <a href=http://bsu.edu.ru:8801/projects/inf/access/access03.htm><font color=grey><small>(http://bsu.edu.ru:8801/projects/inf/access/access03.htm)</small></font></a>
Good Luck!!!
Неизвестный
23.03.2007, 07:06
общий
это ответ
Здравствуйте, Nell!
Вы, наверное, неправильно связали поля таблицы, раз появилась черная линия, там должна появиться стрелка. Дело в том, что связи в Acces строятся не по ключевым полям, а по индексам!!!!! То есть к примеру есть таблица сотрудники (Порядковый номер сотрудника, табельный номер сотрудника, ФИО), в нем будет ключевое поле порядковый номер сотрудника, а индексное поле табельный номер, которое будет иметь уникальное значение и не содержатьть повторений (это в свойствах индекса). Вторая таблица пусть содержит рабочее место, закрепленное за сотрудником: Порядковый номер рабочего места (ключевое поле), инвентарный номер оборудования (индексное поле, которое, как и в первом примере не будет повторяться), стоимость рабочего места и т.д. Когда созданы таблицы закрываем их, заходим в меню Сервис\Схемы данных\ Выбираем названия обоих таблиц. Когда отбразятся таблицы тянем от индексного поля табельный номер сотрудника к индексному полю инвентарный номер оборудования. Появится окно связи, где Вы, как уже сами говорили, выставляете галочки целостности, удаления, обновления, жмете ОК, у Вас должна появиться стрелочка (не линия) со значениями 1 к 1, т.к. в нашем примере один сотрудник имеет только одно рабочее место. То есть поля всегда связываются по индексному полю, которое в свою очередь жестко связано с ключевым полем счетчик, а связь определяется по индексному значению, связывающему таблицу (повторяется или нет)!!!

Удачи. По возникающим вопросам ко мне в личку
Форма ответа