Классика баз данных - статьи



Горизонтальная декомпозиция - часть 4


CREATE VIEW r2 AS SELECT tmp.* FROM ( (SELECT does_job.id, does_job.job AS JOB FROM does_job) UNION (SELECT job_unk.id, job_unk.reason FROM job_unk) ) AS tmp GO

CREATE VIEW personal_info_v AS SELECT r1.id, called.name, r2.job, r1.sal FROM ((r1 JOIN r2 ON r1.id = r2.id) JOIN called ON r2.id = called.id) GO

DROP VIEW r1

DROP VIEW r2

Рис. 7. Фрагмент кода, реализующий определение представления PERSONAL_INFO_V на основе таблиц, полученных в результате горизонтальной декомпозиции, в синтаксисе диалекта SQL MS SQL Server.

Рис. 8. Представление PERSONAL_INFO_V после соединения таблиц

Рис. 9. Начальный вариант таблицы publishers БД Pubs.
Поле “state” этой таблицы содержит как значение штата, так и NULL в значении “неизвестно” в строке с pub_id = 9998, и NULL в значении “не применимо” в строках с pub_id = 9901, 9999.

Действуя по этой технологии, таблица publishers БД Pubs, начальный вариант которой рассмотрен на Рис. 9, превратится в набор таблиц:

  • PUBLISHERS

    { pub_id, pub_name, city, country }

  • STATE

    { pub_id, state }

  • STATE_UNK

    { pub_id }

  • STATE_NONE

    { pub_id }.




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