|
Программирование >> Исключение дубликатов строк
Agents Compensation
Рис. 1.5. Пример связи одиНК-одному где он становится внешним ключом. Это особый тип связи, поскольку во многих случаях внешний ключ также является первичным ключом вторичной таблицы. Пример типичной связи один-к-одному представлен на рис. 1.5, где Agents (Агенты) является первичной таблицей, а Compensation (Заработная плата) - вторичной таблицей. Связь между этими таблицами такова, что отдельная запись в таблице Agents может быть связана только с одной записью в таблице Compensation, а отдельная запись в таблице Compensation - только с одной записью в таблице Agents. AgentID является не только первичным ключом в обеих таблицах, но и внешним ключом во вторичной таблице. Выбор таблицы, которая будет играть роль первичной в этом типе связи, совершенно произвольный. Связь один-к-одному не является очень распространенной и обычно встречается в случаях, когда таблица разбивается на две части в целях обеспечения конфиденциальности. Связь один-ко-многим Когда пара таблиц связана между собой по типу один-ко-многим, то одна запись в первой таблице может быть связана с несколькими записями во второй таблице, но одна запись во второй таблице может быть связана только с одной записью в первой таблице. При установлении такой связи берется первичный ключ в таблице со стороны один и вставляется в таблицу со стороны многие , в которой он становится внешним ключом. Типичная связь один-ко-многим показана на рис. 1.6. В этом примере одна запись в таблице Artists может быть связана с несколькими записями в таблице Engagements, но одна запись в таблице Engagements может быть связана только с одной записью в таблице Artists. Как можно уже предположить, ArtistID является внешним ключом в таблице Engagements. Artists Engagements
Рис. 1.6. Пример связи один-ко-многим Связь многие-ко-многим Две таблицы связаны отношением многие-ко-многим, когда одна запись в первой таблице может быть связана с несколькими записями во второй таблице, а одна запись во второй таблице может быть связана с несколькими записями в первой таблице. Чтобы установить эту связь, необходимо создать так называемую связывающую таблицу, которая обеспечит легкий способ сопоставления записей из одной таблицы с записями другой и поможет гарантировать отсутствие проблем при добавлении, удалении или модификации любых связанных данных. При определении связываюпдей таблицы копия первичного ключа каждой таблицы используется для образования структуры новой таблицы. Эти поля в действительности выполняют две различные роли: вместе они образуют составной первичный ключ связываюпдей таблицы, а по отдельности каждое из них является внешним ключом. Связь многие-ко-многим, которая не была установлена надлежаи;им образом, обычно называется неразрешенной. На рис. 1.7 представлен понятный пример неразрешенной связи многие-ко-многим. В этом случае одна запись в таблице Artists может быть связана с несколькими записями в таблице Recordings, а отдельная запись в таблице Recordings может быть связана с несколькими записями в таблице Artists. Эта связь является неразрешенной вследствие унаследованной проблемы связи многие-ко-многим. Вопрос состоит в том, как npou;e связать записи из первой таблицы с записями во второй таблице. Перефразируем вопрос в терминах таблиц, показанных на рис. 1.7. Как соотнести некоторого артиста с несколькими звукозаписями или конкретную звукозапись с несколькими артистами? Вставляется ли несколько полей из Artists в таблицу Recordings? Или добавляется ли несколько полей из Recordings в таблицу Artists? Любой из этих вариантов создаст множество проблем при попытке работать со связанными данными, в частности относительно Глава 1 Что такое *реляи,ионныи*? Artists
Recordings
1104 1105 Love Me, Doni Leave Me Midnight Breeze 1106 No Puede Ver Рис. 1.7. Неразрешенная связь многие-ко-многим целостности данных. Решение этой дилеммы заключается в создании связывающей таблицы ранее описанным способом. Посредством создания и использования связывающей таблицы можно надлежащим образом разрешить связь многие-ко-многим. На рис 1.8 это решение представлено на практике. Artfsts
ArtistRecordings (таблица связей)
Recordings / Г - 3
Рис. 1.8. Связь многие-ко-многим, разрешенная надлежащим образом
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |