Теория баз данных



         

Внешние объединения - часть 3


/p>

ФИО

Дисциплина

Оценка

Уткина Н. В.

Сети и телекоммуникации

5

Трофимов П. А.

Английский язык

5

Иванова Е. А.

Английский язык

3

Уткина Н. В.

Английский язык

Null

Рассмотрим еще один пример, для этого возьмем БД «Библиотека». Она состоит из трех отношений, имена атрибутов здесь набраны латинскими буквами, что является необходимым в большинстве коммерческих СУБД.

BOOKS(ISBN, TITL. AUTOR. COAUTOR. YEARJZD, PAGES)

READER(NUM_READER. NAME_READER, ADRESS. HOOM_PHONE. WORK_PHONE. BIRTH_DAY)

EXEMPLARE (INV, ISBN, YES_NO. NUM_READER. DATE_IN. DATE_DUT)

Здесь таблица BOOKS описывает все книги, присутствующие в библиотеке, она имеет следующие атрибуты:

  • ISBN — уникальный шифр книги;

  • TITL — название книги;

  • AUTOR — фамилия автора;

  • COAUTOR — фамилия соавтора;

  • YEARIZD — год издания;

  • PAGES — число страниц.

    Таблица READER хранит сведения обо всех читателях библиотеки, и она содержит следующие атрибуты:

  • NUM_READER — уникальный номер читательского билета;

  • NAME_READER — фамилию и инициалы читателя;

  • ADRESS — адрес читателя;

  • HOOM_PHONE — номер домашнего телефона;

  • WORK_PHONE — номер рабочего телефона;

  • BIRTH_DAY — дату рождения читателя.

    Таблица EXEMPLARE содержит сведения о текущем состоянии всех экземпляров всех книг. Она включает в себя следующие столбцы:

  • INV — уникальный инвентарный номер экземпляра книги;

  • ISBN — шифр книги, который определяет, какая это книга, и ссылается на сведения из первой таблицы;

  • YES_NO — признак наличия или отсутствия в библиотеке данного экземпляра в текущий момент;

  • NUM_READER — номер читательского билета, если книга выдана читателю, и Null в противном случае;

  • DATE_IN — если книга у читателя, то это дата, когда она выдана читателю; a DATE_OUT — дата, когда читатель должен вернуть книгу в библиотеку.

    Определим перечень книг у каждого читателя; если у читателя нет книг, то номер экземпляра книги равен NULL. Для выполнения этого поиска нам надо использовать левое внешнее объединение, то есть мы берем все строки из таблицы READER и соединяем со строками из таблицы EXEMPLARE, если во второй таблице нет строки с соответствующим номером читательского билета, то в строке результирующего отношения атрибут EXEMPLARE.INV будет иметь неопределенное значение NULL:



    Содержание  Назад  Вперед