- •Раздел 6. Компьютерные технологии использования систем управления
- •1. История создания баз данных.
- •1.1. Нулевое поколение: менеджеры записей (4000 г. До н.Э. – 1900 г.)
- •1.2. Первое поколение: менеджеры записей (1900 г. – 1955 г.).
- •1.3. Второе поколение: программируемое оборудование обработки записей (1955 г. – 1970 г.)
- •1.3.1. Архитектура субд.
- •Отдельные
- •Администратор
- •Описание на языке конкретной субд
- •Описание хранимых данных
- •1.4. Третье поколение: оперативные сетевые базы данных (1965 г.–1980 г.)
- •1.4.1. Иерархические субд.
- •1.4.2. Сетевые базы данных.
- •1.5. Четвертое поколение: реляционные базы данных (1980 г. – 1995 г.).
- •1.5.1. Таблицы.
- •Office city region mgr target sales
- •1.5.2. Первичные ключи.
- •1.5.3. Отношения предок/потомок.
- •Office cyti region
- •Empl_num name age rep_office
- •1.5.4. Внешние ключи.
- •2. Язык aql как стандартный язык базы данных.
- •2.1. Язык sql.
- •2.2. Роль sql.
- •2.3. Достоинства sql.
- •2.3.1. Независимость от конкретных субд.
- •2.3.2. Переносимость с одной вычислительной системы на другие.
- •2.3.3. Стандарты языка sql.
- •2.3.4. Протокол odbc и компания Microsoft.
- •2.3.5. Реляционная основа.
- •2.3.6. Высокоуровневая структура, напоминающая английский язык.
- •2.3.7. Интерактивные запросы.
- •2.3.8. Программный доступ к базе данных.
- •2.3.9. Различные представления данных.
- •2.3.10. Полноценный язык для работы с базами данных.
- •2.3.11. Динамическое определение данных.
- •2.3.12. Архитектура клиент/сервер.
- •2.4. Пятое поколение: мультимедийные базы данных (1995 г. - …)
- •People Name Adress
- •People Name Adress Papers Picture Voice
- •2.5. Основные требования.
- •2.5.1. Расширяемость.
- •2.5.2. Производительность.
- •2.5.3. Сопровождение в оперативном режиме.
- •2.5.4. Устойчивость.
- •3. Технология хранения данных. Корпоративные базы данных.
- •3.1. Современные требования к корпоративным базам данных.
- •3.2. Потребность в анализе данных.
- •3.3. Хранилища данных.
- •3.4. Хранилища и киоски данных.
- •3.5. Анализ данных в корпоративных системах.
- •3.5.1. Olap - передовая технология анализа.
- •3.5.2. Многомерное представление.
- •3.5.3. Хранение данных olap.
- •3.5.4. Разновидности olap.
- •3.6. Размышления и предсказания.
1.5.3. Отношения предок/потомок.
Одним из отличий реляционной модели от первых моделей представления данных было то, что в ней отсутствовали явные указатели. Используемые для реализации отношений предок/потомок в иерархической модели данных. Однако вполне очевидно, что отношения предок/потомок существуют и в реляционной модели данных. Например, в нашей базе данных каждый из служащих закреплен за конкретным офисом, поэтому ясно, что между строками таблицы OFFICES и таблицы SALESREPS существует отношение. Не приводит ли отсутствие явных указателей в реляционной модели к потере информации?
Как следует из рис.6.8, ответ на этот вопрос должен быть отрицательным. На рисунке изображено несколько строк из таблицы OFFICES и SALESREPS. Обратим внимание на то, что в столбце REP_OFFICE таблицы SALESREPS содержится идентификатор офиса, в котором работает служащий. Доменом этого столбца (множеством значений, которые могут в нем храниться) является множество идентификаторов офисов, содержащихся в столбце OFFICE таблицы OFFICES. То, в каком офисе работает Мэри Джонс (Mary Jones), можно узнать, определив значение столбца REP_OFFICE в строке таблицы SALESREPS для Мэри Джонс (число 11) и затем отыскав в таблице OFFICES строку с таким же значением в столбце OFFICE (это для офиса в Нью-Йорке). Таким образом, чтобы найти всех служащих нью-йоркского офиса, следует запомнить значение столбца OFFICE для Нью-Йорка (число 11), а потом просмотреть таблицу SALESREPS и найти все строки, в столбце REP_OFFICE которых содержится число 11 (это строки для Мэри Джонс и Сэма Кларка (Sam Clark)).
Таблица OFFICES
22
Denver Western 11
New York Eastern 12
Chicago EasternOffice cyti region
Таблица SALESREPS
105
Bill Adams 37 18 109
Mary Jones 31 11 102
SUE Smith 48 21 106
Sam Clark 52 11Empl_num name age rep_office
Рис.6.8 - Отношение предок/потомок в реляционной базе данных.
Отношение предок/потомок, существующее между офисами и работающими в них людьми, в реляционной модели не потеряно; просто оно реализовано в виде одинаковых значений данных, хранящихся в двух таблицах, а не в виде явного указателя. Все отношения, существующие между таблицами реляционной базы данных, реализуются в таком виде.
1.5.4. Внешние ключи.
Столбец одной таблицы, значения в котором совпадают со значениями столбца, являющегося первичным ключом другой таблицы, называется внешним ключом. На рис.6.9 столбец REP_OFFICE представляет собой внешний ключ для таблицы OFFICES. Значения, содержащиеся в этом столбце, представляют собой идентификаторы офисов. Эти значения соответствуют значениям в столбце OFFICE, который является первичным ключом таблицы OFFICES. Совокупно первичный и внешний ключи создают между таблицами, в которых они содержатся, такое же отношение предок/потомок, как и в иерархической базе данных.
Таблица CUSTOMERS Таблица SALESREPS Таблица PRODUCTS
CUST_NUM
COMPANY
… J.P.Sinclair … MRF_ID
PRODUCT_ID DESCRIP
ON … REI
2A44L Left Hing …
EMPL_NUM
NAME
… Sam
Clark …
Таблица ORDERS
ORDER_NUM
ORDER_DATE CUST REP MRF PRODUCT
… 112967
17-DEC-99 2117 106 REI 2A44L …
Рис.6.9 - Множественные отношения предок/потомок в реляционной базе данных.
Внешний ключ, как и первичный ключ, тоже может представлять собой комбинацию столбцов. На практике внешний ключ всегда будет составным (состоящим из нескольких столбцов), если он ссылается на составной первичный ключ в другой таблице. Очевидно, что количество столбцов и их типы данных в первичном и внешнем ключах совпадают.
Если таблица связана с несколькими другими таблицами, она может иметь несколько внешних ключей. На рис.6.9 показаны три внешних ключа таблицы ORDERS из учебной базы данных:
- столбец REP является внешним ключом для таблицы SALESREPS и связывает каждый заказ со служащим, принявшим его;
- столбец CUST является внешним ключом для таблицы CUSTOMES и связывает каждый заказ с клиентом, разместившим его;
- столбцы MRF и PRODUCT совокупно представляют собой внешний ключ для таблицы PRODUCTS, который связывает каждый заказ с заказанным товаром.
Отношения предок/потомок, созданные с помощью трех внешних ключей в таблице ORDERS, могут показаться знакомыми. И действительно, это те же самые отношения, что и в сетевой базе данных, представленной на рис.6.4. Как показывает пример, реляционная модель данных обладает всеми возможностями сетевой модели по части выражения сложных отношений.
Внешние ключи являются неотъемлемой частью реляционной модели, поскольку реализуют отношения между таблицами базы данных. К несчастью, как и в случае с первичными ключами, поддержка внешних ключей отсутствовала в первых реляционных СУБД. Она была введена в системе DB2 Version 2 и теперь имеется во всех коммерческих СУБД.