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

1 2 3 4 [ 5 ] 6 7 8 ... 152


Agents

Compensation

AglntUsrName

DateolHire

AgeniHwiePhdne

Stella

Rosaies

1994-07-11

299-5764

1002

Steve

Pundi

1994-05-01

515-5762

* It*

1003

Randi

Nathanson

1994-09П1

998-3882

AgentiD 1

HmtlyRate

ComrrwssionRate

foot

21.50

4.5%

♦ * *

1002

25J5

3.0%

1O03

20,00

4.5%

ь

Рис. 1.5. Пример связи одиНК-одному

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

Пример типичной связи один-к-одному представлен на рис. 1.5, где Agents (Агенты) является первичной таблицей, а Compensation (Заработная плата) - вторичной таблицей. Связь между этими таблицами такова, что отдельная запись в таблице Agents может быть связана только с одной записью в таблице Compensation, а отдельная запись в таблице Compensation - только с одной записью в таблице Agents. AgentID является не только первичным ключом в обеих таблицах, но и внешним ключом во вторичной таблице.

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

Связь один-ко-многим

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

Типичная связь один-ко-многим показана на рис. 1.6. В этом примере одна запись в таблице Artists может быть связана с несколькими записями в таблице Engagements, но одна запись в таблице Engagements может быть связана только с одной записью в таблице Artists. Как можно уже предположить, ArtistID является внешним ключом в таблице Engagements.



Artists

Engagements

jllllll

Mtk6

HernafKlez

The Mike Hetrrnkz Trio

67002

Zachary

Ehrlich

Jazz Times

67003

Gerry

Greer

The Country Squires

1001

67003

1098-09-10

1998-09 12

1002

ill

1998-09-11

1998-09-12

< <<

1003

1998*<B15

1998-09-19

* *<

Рис. 1.6. Пример связи один-ко-многим

Связь многие-ко-многим

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

Связь многие-ко-многим, которая не была установлена надлежаи;им образом, обычно называется неразрешенной. На рис. 1.7 представлен понятный пример неразрешенной связи многие-ко-многим. В этом случае одна запись в таблице Artists может быть связана с несколькими записями в таблице Recordings, а отдельная запись в таблице Recordings может быть связана с несколькими записями в таблице Artists.

Эта связь является неразрешенной вследствие унаследованной проблемы связи многие-ко-многим. Вопрос состоит в том, как npou;e связать записи из первой таблицы с записями во второй таблице. Перефразируем вопрос в терминах таблиц, показанных на рис. 1.7. Как соотнести некоторого артиста с несколькими звукозаписями или конкретную звукозапись с несколькими артистами? Вставляется ли несколько полей из Artists в таблицу Recordings? Или добавляется ли несколько полей из Recordings в таблицу Artists? Любой из этих вариантов создаст множество проблем при попытке работать со связанными данными, в частности относительно



Глава 1 Что

такое *реляи,ионныи*?

Artists

? W U ,- ♦ C- f * J-

67001

Mike

Hernandez

The Mike Hernandez Trio

67002

Zdchaiy

EhHich

Jazz Times

67003

Gerry

Greer

The Ccimtry Squires

Recordings

1102

Jazz Round Midnight

1995

1103

Until i Return

1998

1104

1105

Love Me, Doni Leave Me

Midnight Breeze

1106

No Puede Ver


Рис. 1.7. Неразрешенная связь многие-ко-многим

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

Artfsts

1 !

Mike

Hernandez

The Mike Hernandez Trio

4

67002

Zachary

Ehrlich

Jazz Times

67003

Gerry

Greer

The Country Squires

ArtistRecordings (таблица связей)

ArtistID

RecordingiO

t J*** 1 -rf

1105

67002

i

67002

1106

67003

1104

Recordings

/ Г - 3

Jazz Round Midnight

1995

1103

Until 1 Return

1998

1104

Love Me. Dont Leave Me

1995

<

1105

Midnight Breeze

1996

1

1106

No Puede Ver

1994

1

Рис. 1.8. Связь многие-ко-многим, разрешенная надлежащим образом



1 2 3 4 [ 5 ] 6 7 8 ... 152

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