русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Типы межтабличных связей


Дата добавления: 2015-07-04; просмотров: 6124; Нарушение авторских прав


1. Связь M:N, «многие-ко-многим». Эта связь означает, что одному объекту первого типа соответствует несколько объектов второго типа и каждому объекту второго типа соответствует несколько объектов первого типа. Для представления отношения «многие-ко-многим», создается третий (связующий) тип, в котором отношение «многие-ко-многим» разбивается на два отношения «один-ко-многим». В результате в третий тип входит несколько свойств от одного и от второго типа. Обратите внимание, что для обнаружения существующего отношения между таблицами важно рассмотреть обе его стороны.

Рассмотрим связь между таблицами Читатели и Книги. Один читатель может заказать несколько книг, с другой стороны, одну книгу могут заказать несколько читателей (при этом учитывается дата заказа и дата возврата книги). Следовательно, для каждой записи таблицы Книги может существовать несколько записей в таблице Читатели и наоборот.

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

Читатели
Книги
N
M
Заказ книги

Рисунок 2. Связь "многие ко многим"

Например, давайте представим, что произойдет, если создать связь между двумя таблицами путем добавления поля с Инв№ (инвентарным номером) книги в таблицу читателей. Чтобы читатель мог заказать несколько книг, каждый читатель в таблице должен включать несколько записей. В этом случае сведения о читателе должны повторяться в каждой строке таблицы Читатели, что может привести к неэффективности структуры таблицы и неточности данных. Такая же трудность возникает при создании поля с номером читательского билета читателя в таблице книги — для каждой книги в таблице существует несколько записей. Как решить эту проблему?Решением является создание третьей, связующей, таблицы, в которой отношение «многие-ко-многим» разбивается на два отношения «один-ко-многим». Первичные ключи двух таблиц вставляются в третью таблицу. В результате в третьей таблице сохраняются все экземпляры отношения.



Каждая запись в таблице Заказ книги представляет собой отдельный элемент строки книги. Первичный ключ таблицы состоит из двух полей — внешних ключей таблиц Читатели и Книги. Невозможно использовать для первичного ключа этой таблицы только поле с Инв№ книги, т. к. одна книга может содержать много элементов строк. Инв№ книги повторяется для каждого элемента строки, поэтому это поле не содержит уникальных значений. Невозможно также использовать только поле с номером читательского билета читателя, т. к. один читатель может заказать множество книг. Однако использование двух полей позволяет получить уникальное значение для каждой записи.

В данном случае таблицы Книги и Читатели не имеют непосредственной связи. Они связаны опосредованно через таблицу Заказ книги. Отношение «многие-ко-многим» между таблицами Книги и Читатели представлено в базе данных двумя отношениями «один-ко-многим»:

Таблицы Книги и Заказ книги связаны отношением «один-ко-многим». Каждая книга содержит несколько элементов строк, но каждый элемент связан только с одной книгой. О связи «один-ко-многим» читайте дальше.

Таблицы Читатели и Заказ книги связаны отношением «один-ко-многим». Каждый читатель может быть связан с несколькими элементами строк, но каждый элемент связан только с одним читателем.

В таблице Заказ книг можно определить книги для конкретного читателя. Можно также определить читателей для конкретной книги.

После создания таблицы Заказ книги список таблиц и полей может выглядеть следующим образом:

Читатели Номер Фамилия Кафедра Телефон
Книги Инв№ Шифр Автор Название Издательство Город Год Стоимость Аннотация
Заказ книги Номер Инв№ Дата выдачи Дата возврата Примечание
Рисунок 3. Таблицы с полями базы данных «Библиотека»

Отсюда видно, что таблица Заказ книги содержит внешний ключ Номер на первичный ключ таблицы Читатели и внешний ключ Инв№ на первичный ключ таблицы Книги.

2. Связь 1:N, «один-ко-многим»(или N:1, «многие-к-одному»). Эта связь означает, что одному объекту первого типа соответствует несколько объектов второго типа, но каждому объекту второго типа соответствует только один объект первого типа. В такое отношение вступают несколько объектов – один объект первого типа, остальные второго, и если какой-то объект второго типа уже входит в отношение с каким-то объектом первого типа, то он уже не может входить в такое же отношение с другим объектом первого типа.

Как уже описывалось выше, что связь «многие-ко-многим» разбивается на два отношения «один-ко-многим», в нашем случае получаем, что таблицы Читатели и Книги связаны третьей таблицей Заказ книги. Тип связей будет «один-ко-многим». Рассмотрим связь между таблицами Читатели и Заказ книги. Один читатель может делать несколько заказов на книги, но один и тот же заказ не может быть у нескольких читателей. Аналогично, связь между сущностями Книги и Заказ книги.

Читатель
Заказ книги
делает
N

Рисунок 4. Связь один ко многим

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

Внешний ключ — это первичный ключ другой таблицы. Столбец Номер в таблице Заказ книги является внешним ключом, т. к. он является также первичным ключом таблицы Читатели.

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

Читатели Номер Фамилия Кафедра Телефон
Заказ книги Номер Инв№ Дата выдачи Дата возврата Примечание

Рисунок 5. Связь между таблицами Читатели и Заказ книги

Основой для связывания таблиц является объединение первичных и внешних ключей в пары. Если не удается определить таблицы с общим столбцом, создание отношения «один-ко-многим» обеспечивает необходимость общего столбца для двух таблиц.

3. Связь 1:1, «один-к-одному». Эта связь означает, что каждому объекту первого типа соответствует ровно один объект второго типа и, наоборот, каждому объекту второго типа соответствует ровно один объект первого типа. В отношение вступают два объекта разных типов.

Предположим, к книге прилагается какой-либо носитель (диск, дискета и т.п.) с дополнительной информацией. Тогда появится еще одна таблица Приложение, которая как минимум будет содержать поле тип приложения и описание. В результате получим связь «один-к-одному» между таблицами Книги и Приложение. Книга может иметь только одно Приложение, а Приложение может прилагаться только к одной Книге.

Книга
Приложение с доп. информацией
содержит
Рисунок 6. Связь "один-к-одному"

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

Если возникает необходимость в создании в базе данных отношения «один-к-одному», рассмотрите возможность объединения данных в одну таблицу. Если этот вариант неприемлем, например, по причине возникновения пустых полей, используйте приведенный, ниже список для определения отношения в структуре базы данных:

· если таблицы объединены одной темой, отношение можно создать посредством использования общего первичного ключа;

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

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



<== предыдущая лекция | следующая лекция ==>
Зачем создавать межтабличные связи? | Усовершенствование структуры


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.596 сек.