Программирование >>  Исключение дубликатов строк 

1 ... 11 12 13 [ 14 ] 15 16 17 ... 152


Связь многие-ко-многим всегдо разрешается использованием связывающей таблицы. В данном примере Pllot Cer+ificatlons является связывающей таблицей. Теперь отдельный летчик может иметь любое количество допусков, а отдельный допуск может быть поставлен в соответствие любому количеству летчиков.

Pilots

......................

j Certifications

L...................................j

Pilot ID

i f

f r i Certification ID PK i

i

I RLOT OEFrnRCATIONs!

PilotID

Certification ID

CPK I CPK \

Рис. 2.17. Представление в виде диаграммы связи многие-ко-многим


Связь многие-ко-многим устанавливается путем создания связывающей таблицы. Для этого берется копия первичного ключа каждой таблицы и используется для формирования структуры новой таблицы. Эти поля обычно служат двум целям: вместе они образуют составной первичный ключ связывающей таблицы; пб отдельности каждый из них служит внешним ключом. Диаграмма этой связи представлена на рис. 2.17.

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

Прежде чем начать обсуждение характеристик связи, необходимо уточнить один момент. Приведенные ниже характеристики представлены в пределах родового и логического фрейма связи. Эти характеристики важны, поскольку они позволяют усилить реляционную целостность. Однако способ их реализации изменяется в зависимости от программного обеспечения базы данных. Необходимо изучить документацию по программному обеспечению базы данных, чтобы определить, поддерживаются ли эти характеристики, и если да, то как их можно реализовать.

Определение пропило удоленип

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





Можно установить два типа правил удаления для связи: ограничивающее и каскадное.

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

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

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

Этот вопрос поставлен в общем смысле, чтобы можно было понять предпосылки, стоящие за мим. Чтобы применить этот вопрос в действительном смысле, замените фразы, заключенные в квадратные скобки, на имена таблиц. Вопрос будет выглядеть, возможно, так: Если удаляется запись в таблице Committees, должны ли также удаляться зависимые записи в таблице Committee Members?

Если ответ нет , то используйте ограничивающее правило удаления; в противном случае используйте каскадное правило. В конечном счете ответ на этот вопрос в большой мере зависит от того, как используются данные, сохраненные в базе данных. Именно поэтому следует тщательно изучить связи и убедиться, что выбрано верное правило. На рис. 2.18 показано, как изобразить на диаграмме правило удаления для этой связи. Для ограничивающего правила удаления используется обозначение (R), а для каскадного - (С).

Committees

.........................................

Committee ID PK

Committee Members

j employee Ю CPK


Этот символ указывает, что зависимые записи в тоблице CommltteeMembers

будут удаляться при удалении записи в таблице Committees.

Рис. 2.18. Представление на диаграмме правил удаления

для таблиц Committees и Сommittee Members



Устоновко типо учостил

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

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

Необязательный - Отсутствует требование о наличии любых записей в этой таблице до внесения каких-либо записей в другую таблицу.



Тип участия, выбираемый для пары таблиц, зависит главным образом от логической схемы деятельности вашей организации. Предположим, вы работаете в большой компании, состоящей из нескольких отделов. В созданной вами БД имеются таблицы Employees (Сотрудники), Departments (Отделы) и Department Employees

Employees

lllillisil

7004

Peacock

Samuel

Chico

a*

7005

Kennedy

John

Portland

i

7006

Thompson

Sarah

Lubbock

fl

7007

Callahan

David

Salem

(>

7008

Buchanan

Andrea

Medford

7009

Smith

David

Fremont

7010

Patterson

Neil

San Diego

7011

Vscas

Michael

Redmond

DepartmentEmpioyees

Departments

7004

1000

Head

7005

1000

Fbater

7005

1001

Floater

7007

1001

Staff

7008

1001

Head

7009

1003

Floater

7010

1002

Head

7011

1(Ю4

Head

Acuntir

1001

Administration

1002

HumanResources

1003

InformationServices

1004

legal

Рис. 2.19. Таблицы Employees, Departments и Department Employees



1 ... 11 12 13 [ 14 ] 15 16 17 ... 152

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика