Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
97
Добавлен:
23.11.2017
Размер:
76.29 Кб
Скачать

7.2.8. Деление

Операция определена для отношений R(X, Y) и S(Z), где X, Y , Z - множества атрибутов отношений R и S, причем Y=Z. Результат деления R[YZ]S является отношением, в котором множество кортежей r[X] таково, что r[X],sR(X,Y), где s  S(Z):

R[YZ]S={ r[X] | r[X],sR(X,Y)  s  S(Z) }.

Справедливо следующее выражение:

(R[YZ]S  S)  R.

X Y Z

Например, если

G2

G1

F1

G1

F1

A

d

3

d

3

R =

A

h

7

, S =

h

7

,

B

r

3

B

h

7

C

h

7

то

G2

R[YZ]S =

A

.

B

Значение С поля G2 не вошло в результат, поскольку в R отсутствует кортеж < C, d, 3>. Дополнительно проверить правильность отсутствия значения С в результате можно умножением:

G2

G1

F1

G2

G1

F1

a)

A

d

3

=

A

d

3

B

h

7

A

h

7

 R;

C

B

d

3

B

h

7

C

d

3

C

h

7

б) (R[YZ]S  S)  R.

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

Нормализация проводится с целью удаления избыточных данных из каждой таблицы в БД.

7.3. Примеры запросов на реляционном языке

Год рождения жителя с номером 199 определяется запросом

(person[nom=199])[Rdate]

Сведения о жителях, проживающих в квартире с адресом 901-15, можно получить по запросу

person[Adr=‘901-15’]

Все сведения о жителе №199 определяется запросом

((((person[nom=199])[Adr=Adr]tphone)[nom=nom]Have_D)[Id=Id]Profit)

Список дат рождения и адресов для всех жителей обеспечивается запросом

person[Rdate, Adr].

Определить для каждого жителя источник дохода, дающий больше 500 рублей, можно с помощью запроса

((Have_D[Id=Id]Profit)[money>500]))[nom, source]

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

Как правило, реляционная алгебра используется для внутреннего представления запросов, а для взаимодействия с БД были разработаны языки запросов, ориентированные на пользователя, например, QBE (Query-By-Example) и SQL. Наиболее популярным языком является SQL, ставший стандартом для реляционных СУБД.

Вопросы для самоконтроля

  1. Дайте математическое определение и приведите пример выполнения операции проекции над отношением.

  2. Дайте математическое определение и приведите пример выполнения операции выборки над отношением.

  3. Дайте математическое определение и приведите пример выполнения операции соединения над отношениями.

  4. Дайте математическое определение и приведите пример выполнения операции объединения над отношениями.

  5. Дайте математическое определение и приведите пример выполнения операции пересечения над отношениями.

  6. Дайте математическое определение и приведите пример выполнения операции вычитания над отношениями.

  7. Дайте математическое определение и приведите пример выполнения операции умножения над отношениями.

  8. Используя операции реляционной алгебры, для учебной базы данных, рассмотренной как пример в теоретических сведениях к самостоятельной работе №6, написать запросы, которые извлекают следующую информацию:

а) список фамилий, имен, отчеств и дат рождения для всех жителей квартиры с адресом 901-15;

б) список жителей, имеющих телефоны;

в) список названий источников дохода, имеющихся у жителей квартиры с адресом 901-15.

Соседние файлы в папке БД лабы