русс | укр

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

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

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

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


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

Реляционная модель. Отношения. Терминология, ключи, реляционная алгебра. Реляционная целостность.


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


В реляционной модели данные и связи представлены в виде таблиц, каждая из которых имеет несколько столбцов с уникальными именами.

Реляционная модель основана на математическом понятии отношения, физическим представлением которого является таблица.

Отношение – плоская таблица, состоящая из столбцов и строк.

Атрибут – именованный столбец отношения.

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

Домен – набор допустимых значений одного или нескольких атрибутов. Каждый атрибут реляционной базы данных определяется на некотором домене. Домены могут отличаться для каждого из атрибутов, но два и более атрибутов могут определяться на одном и том же домене.

Кортеж – строка отношения. Элементами отношения являются кортежи, или строки, таблицы.

Степень отношения – количество атрибутов, которые оно содержит.

Кардинальность – количество кортежей, которые содержатся в отношении.

Отношение обладает следующими характеристиками:

· Отношение имеет имя, которое отличается от имен всех других отношений в реляционной схеме.

· Каждая ячейка отношения содержит только одно элементарное (неделимое) значение.

· Каждый атрибут имеет уникальное имя.

· Значения атрибута берутся из одного и того же домена.

· Каждый кортеж является уникальным, т.е. дубликатов кортежей быть не может (в современных СУБД данное требование, как правило, не учитывается).

· Порядок следования атрибутов не имеет значения.

· Порядок следования кортежей в отношении не имеет значения.

Суперключ (superkey) – атрибут или множество атрибутов, которое единственным образом идентифицирует кортеж данного отношения.

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



Первичный ключ – потенциальный ключ, который выбран для уникальной идентификации кортежей внутри отношения.

Внешний ключ – атрибут или множество атрибутов внутри отношения, которое соответствует потенциальному ключу некоторого (может быть, того же самого) отношения.

Реляционная целостность. Модель данных содержит набор ограничений целостности, которые гарантируют корректность данных.

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

- Целостность сущностей. В базовом отношении ни один атрибут первичного ключа не может содержать отсутствующих значений, обозначаемых как NULL.

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

- Корпоративные ограничения целостности. Дополнительные правила поддержки целостности данных, определяемые пользователями или администраторами базы данных.

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

а) Выборка.

Операция выборки (унарная операция) применяется к одному отношению R и определяет результирующее отношение, которое содержит только те кортежи (строки) из отношения R, которые удовлетворяют заданному условию (предикату).

Пример: составьте список всех сотрудников с зарплатой, превышающей 10000 фунтов стерлингов.

На языке SQL был бы написан запрос
select * from Staff
where salary > 1000

Более сложные предикаты могут быть созданы с помощью логических операций AND, OR, NOT.

б) Проекция.

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

Пример: создайте ведомость зарплаты всех сотрудников компании с указанием только атрибутов staffNo, fName, lName, salary.

SQL: select staffNo, fName, lName, salary from Staff

г) Объединение.

Объединение двух отношений R и S определяет новое отношение, которое включает все кортежи, содержащиеся только в R, только в S, одновременно в R и S, причем все дубликаты кортежей исключены. При этом отношения R и S должны быть совместимыми по объединению.

Пример: cоздайте список всех городов, в которых имеется отделение компании или объект недвижимости.

SQL:

(select city

from Branch)

UNION

(select city

from PropertyForRent)

д) Пересечение.

Операция пересечения определяет отношение, которое содержит кортежи, присутствующие как в отношении R, так и в отношении S. Отношения R и S должны быть совместимыми по объединению.

Пример: Создайте список всех городов, в которых есть отделение компании, а также по меньшей мере один объект недвижимости, сдаваемый в аренду.

SQL:

(select city

from Branch)

INTERSECT

(select city

from PropertyForRent)

е) Разность множеств.

Разность двух отношений R и S состоит из кортежей, которые имеются в отношении R, но отсутствуют в отношении S. Отношения R и S должны быть совместимыми по объединению.

Пример: создайте список всех городов, в которых есть отделение компании, но нет объектов недвижимости, сдаваемых в аренду.

SQL:

(select city

from Branch)

EXCEPT

(select city

from PropertyForRent)

в) Декартово произведение.

Операция декартова произведения определяет новое отношение, которое является результатом конкатенации (т.е. сцепления) каждого кортежа из отношения R с каждым кортежем из отношения S.

Пример: создайте список всевозможных пар арендаторов и сделанных комментариев (независимо от того, кем сделаны данные комментарии).

SQL:

select c.clientNo, fName, lName, v.clientNo, propertyNo, comment

from Client c, Viewning v

Результат:

Client.clientNo fName lName Viewing.clientNo propertyNo comment
John Kay Too small
John Kay Too remote
Aline Stewart Too small
Aline Stewart Too remote

Обратите внимание, что в результирующую таблицу попали все возможные комбинации записей независимо; для клиента отображаются даже комментарии, сделанные другими клиентами (те записи, где различаются значения в полях Client.clientNo и Viewing.clientNo). Для того, чтобы оставить только комментарии самих клиентов, необходимо добавить выборку:

SQL:

select c.clientNo, fName, lName, v.clientNo, propertyNo, comment

from Client c, Viewning v

where c.ClientNo = v.ClientNo

Комбинация декартова произведения и выборки может быть сведена к одной операции соединения (см. ниже).

ж) Тета-соединение

Операция тета-соединения определяет отношение, которое содержит кортежи из декартова произведения отношений R и S, удовлетворяющие предикату F. Предикат имеет вида , где вместо Q может быть указана одна из операций сравнения (<, <=, >, >=, = или ~=).

Обозначение тета-соединения можно переписать на основе базовых операций выборки и декартова произведения:

Пример: создайте список арендаторов и сделанных ими комментариев.

Помимо указанного выше способа с помощью тета-соединения можно записать так:

SQL:

select c.clientNo, fName, lName, v.clientNo, propertyNo, comment

from Client c join Viewning v

on c.ClientNo = v.ClientNo

з) Соединение по эквивалентности.

Если предикат F тета-соединения содержит только операцию сравнения по равенству (=), то соединение называется соединением по эквивалентности (equi-join). Приведенный выше пример как раз является примером соединения по эквивалентности.

и) Естественное соединение.

Естественным соединением называется соединение по эквивалентности двух отношений R и S, выполненное по всем общим атрибутам, из результатов которого исключается по одному экземпляру каждого общего атрибута.

Пример: создайте список арендаторов и сделанных ими комментариев.

SQL:

select c.clientNo, fName, lName, v.clientNo, propertyNo, comment

from Client c natural join Viewning v

Получилось похоже на пример, указанный в описании для тета-соединения, с той разницей, что, раз соединение производится по одноименным полям, условие можно не указывать. Результат различается тем, что в данном примере (с естественным соединением) поле clintNo будет только один раз, а в случае с тета-соединением дважды.

к) Внешнее соединение.

Левым внешним соединением называется соединение, при котором в результирующее отношение включаются также кортежи отношения R, не имеющие совпадающих значений в общих столбцах отношения S.

Пример: создайте полный список арендаторов и сделанных ими комментариев.

SQL:

select c.clientNo, fName, lName, v.clientNo, propertyNo, comment

from Client c left join Viewning v

on c.ClientNo = v.ClientNo

 

Client.clientNo fName lName Viewing.clientNo propertyNo comment
John Kay Too small
Aline Stewart Too remote
Mike Andrews NULL NULL NULL

В результате был выдан также клиент номер 3, не сделавший ни просмотра; в поля, которые должны были быть заполнены из таблицы Viewing, был проставлен NULL.

Существует также правое внешнее соединение ( ), когда в результат включаются также кортежи отношения S (правого отношения в выражении), не имеющие совпадающих значений в общих столбцах отношения R.

SQL:

select c.clientNo, fName, lName, v.clientNo, propertyNo, comment

from Client c right join Viewning v

on c.ClientNo = v.ClientNo

Еще один вариант – полное внешнее соединение ( ), когда в результат включаются все записи как отношения R, так и отношения S, даже если для них нет соответствующих записей в другом отношении.

SQL:

select c.clientNo, fName, lName, v.clientNo, propertyNo, comment

from Client c full join Viewning v

on c.clientNo = v.clientNo

л) Полусоединение.

Операция полусоединения определяет отношение, содержащее те кортежи отношения R, которые входят в соединение отношений R и S.

Пример: создайте отчет, содержащий полную информацию обо всех сотрудниках, работающих в отделении компании, расположенном в городе Glasgow.

SQL:

select c.clientNo, fName, lName

from Client c join Branch b

on c.branchNo = b.branchNo

where b.branchNo=’Glasgow’

м) Операция деления.

Схематично результат деления представлен ниже:

Предположим, что отношение R определено на множестве атрибутов А, а отношение S — на множестве атрибутов В, причем (т.е. В является подмножеством А). Пусть , т.е. С является множеством атрибутов отношения R, которые не являются атрибутами отношения S. Тогда определение операции деления будет выглядеть следующим образом.

Результатом операции деления является набор кортежей отношения R, определенных на множества атрибутов C, которые соответствуют комбинации всех кортежей отношения S.

Рассмотрим на примере, показанном на рисунке справа. Отношение V содержит 2 атрибута (A и B), отношение W содержит 1 атрибут B. Множество атрибутов отношения W является подмножеством атрибутов отношения V. Соответственно, результатом деления V на W будет отношение, содержащее единственный атрибут A из отношения V, которого нет в W.

Далее, в V у атрибута A есть 3 значения: a, b и c. В W у атрибута B есть 2 значения: 1 и 2. Столбец A из V и столбец B из W дают 6 комбинаций: a,1; a,2; b,1; b,2; c,1; c,2. Все комбинации, которые возможны для значения a, есть в отношении V, поэтому a оказалось в результате деления V на W; аналогично в V есть все комбинации для b, поэтому b оказалось в результате. Для c в V не хватает одной комбинации, поэтому c в результате нет.

Операция деления может быть определена через другие операции:

( – операция присваивания)

Пример: создайте список всех арендаторов, которые осмотрели все объекты недвижимости с тремя комнатами.

SQL (возможны варианты):

select distinct clientNo from Viewing v1

where not exists

(select propertyNo from PropertyForRent p

where not exists

(select * from Viewng v2

where v2.clientNo = v1.clientNo = and v2.propertyNo = p.propertyNo)

 




<== предыдущая лекция | следующая лекция ==>
Модели систем управления данными: сетевая, иерархическая, реляционная модель. Нормальные формы (1НФ, 2НФ, 3НФ, НФБК). | Язык SQL. Оператор SELECT: инструкции FROM, WHERE, GROUP BY, HAVING, ORDER BY, агрегатные функции.


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


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

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

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


 


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

 
 

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

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