Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

merged

.pdf
Скачиваний:
10
Добавлен:
01.03.2016
Размер:
10.39 Mб
Скачать

13 Вариант

1.Взаємозв’язки між об’єктами у предметному середовищі: 1:1, 1:M, M:N.

Ассоциация 1:1 имеет место, когда каждому экземпляру первого объекта (А) соответствует только один экземпляр второго объекта (В)и наоборот, каждому экземпляру второго объекта (В)

соответствует только один экземпляр первого объекта (А).

Ассоциация 1:М - это такая связь, когда экземпляру одного объекта (А) может соответствовать несколько экземпляров другого объекта (В), а каждому экземпляра второго объекта (В) может соответствовать только один экземпляр первого объекта (А).

Ассоциация M:N - это когда каждому экземпляру одного объекта (А) могут соответствовать несколько экземпляров второго объекта (В) и наоборот, каждому экземпляру второго объекта (В) может соответствовать тоже несколько экземпляров первого объекта (А)

2.Операція вибірки SELECT. Вкладені та корельовані підзапити.

Основной операцией в языке SQL является операция чтения (выборки, отображения) данных – SELECT. В предложении SELECT, с которого начинаются все операторы SELECT, необходимо указать элементы данных, которые будут возвращены в результате запроса. Эти элементы задаются в виде списка возвращаемых столбцов, разделенных запятыми. Для каждого элемента из этого списка в таблице результатов запроса будет создан один столбец. Столбцы в таблице результатов

будут расположены в том же порядке, что и элементы списка возвращаемых столбцов. Существуют разные способы указания возвращаемых столбцов.

Первое, это явно указать названия столбцов, которые нужно вывести. Эти столбцы должны быть в таблицах, которые перечислены в предложении FROM.

Чаще всего вложенные запросы указываются в предложении WHERE оператора SQL. Когда вложенный запрос содержится в данном предложении, он участвует в процессе отбора строк.

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

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

14 вариант

1.Iнформаційне моделювання структурованих об’єктів.

1 задание с 13 варианта +

2.Операція вибірки SELECT. Квантор існування EXISTS.

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

1

ЕКЗАМЕНАЦІЙНИЙ БІЛЕТ № 15

1.Реляційна алгебра. Приклади використання.

Реляционная алгебра — замкнутая система операций над отношениями в реляционной модели

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

Операции реляционной алгебры Основные восемь операций реляционной алгебры были предложены Э.Коддом.

Объединение

Пересечение

Вычитание

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

Выборка

Проекция

Соединение

Деление

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

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

ID

 

 

 

SELLER

 

 

 

 

 

 

 

 

123

 

 

 

OOO “Дарт”

 

 

 

 

 

 

 

 

156

 

 

 

ОАО ”Ведро”

 

 

 

 

 

 

 

 

235

 

 

 

ЗАО “Овоще База”

 

 

 

 

 

 

 

 

623

 

 

 

ОАО ”Фирма”

 

 

 

 

 

 

 

 

 

таблица PRODUCTS

 

 

 

 

ID

NAME

 

COMPANY

PRICE

 

 

 

 

 

123

Печеньки

 

ООО ”Темная сторона”

190

 

 

 

 

 

156

Чай

 

ООО ”Темная сторона”

60

 

 

 

 

 

235

Ананасы

 

ОАО ”Фрукты”

100

 

 

 

 

 

623

Томаты

 

ООО ”Овощи”

130

 

 

 

 

 

 

 

Условимся, что в этой таблице ID это внешний ключ, связанный с первичным ключом таблицы

PRODUCTS.

Для начала рассмотрим самую простую операцию — имя отношения. Её результатом будет такое же отношение, то есть выполнив операцию PRODUCTS, мы получим копию отношения PRODUCTS.

2

Проекция

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

Для примера сделаем проекцию на таблице PRODUCTS выбрав из нее ID и PRICE. Синтаксис операции:

π(ID, PRICE) PRODUCTS

В результате этой операции получим отношение:

ID

PRICE

 

 

123

190

 

 

156

60

 

 

235

100

 

 

623

130

 

 

Выборка

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

Синтаксис операции:

σ(PRICE>90) PRODUCTS

ID

NAME

COMPANY

PRICE

 

 

 

 

123

Печеньки

ООО ”Темная сторона”

190

 

 

 

 

235

Ананасы

ОАО ”Фрукты”

100

 

 

 

 

623

Томаты

ООО ”Овощи”

130

 

 

 

 

Умножение

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

Получим декартово произведения таблиц PRODUCTS и SELLERS. Синтаксис операции:

PRODUCTS × SELLERS

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

Для краткости перемножим не полные отношения, а выборки с условием ID<235

(цветом выделены одни и те же кортежи)

PRODUCTS.ID

NAME

COMPANY

PRICE

SELLERS.ID

SELLER

 

 

 

 

 

 

3

123

Печеньки

ООО ”Темная сторона”

190

123

OOO “Дарт”

 

 

 

 

 

 

156

Чай

ООО ”Темная сторона”

60

156

ОАО ”Ведро”

 

 

 

 

 

 

123

Печеньки

ООО ”Темная сторона”

190

156

ОАО ”Ведро”

 

 

 

 

 

 

156

Чай

ООО ”Темная сторона”

60

123

OOO “Дарт”

 

 

 

 

 

 

Соединение и естественное соединение

Операция соединения обратна операции проекции и создает новое отношение из двух уже существующих. Новое отношение получается конкатенацией кортежей первого и второго отношений, при этом конкатенации подвергаются отношения, в которых совпадают значения заданных атрибутов. В частности, если соединить отношения PRODUCTS и SELLERS, этими атрибутами будут атрибуты доменов

ID.

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

PRODUCTS.ID и SELLERS.ID.

Попробуем соединить отношения PRODUCTS и SELLERS и получим отношение.

PRODUCTS.ID

NAME

COMPANY

PRICE

SELLERS.ID

SELLER

 

 

 

 

 

 

 

 

ООО ”Темная

 

 

 

123

Печеньки

сторона”

190

123

OOO “Дарт”

 

 

 

 

 

 

 

 

ООО ”Темная

 

 

 

156

Чай

сторона”

60

156

ОАО ”Ведро”

 

 

 

 

 

 

 

 

 

 

 

ЗАО “Овоще

235

Ананасы

ОАО ”Фрукты”

100

235

База”

 

 

 

 

 

 

623

Томаты

ООО ”Овощи”

130

623

ОАО ”Фирма”

 

 

 

 

 

 

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

Синтаксис операции:

PRODUCTS SELLERS;

Получится такое отношение:

PRODUCTS.ID

NAME

COMPANY

PRICE

SELLER

 

 

 

 

 

123

Печеньки

ООО ”Темная сторона”

190

OOO “Дарт”

 

 

 

 

 

156

Чай

ООО ”Темная сторона”

60

ОАО ”Ведро”

 

 

 

 

 

235

Ананасы

ОАО ”Фрукты”

100

ЗАО “Овоще База”

 

 

 

 

 

623

Томаты

ООО ”Овощи”

130

ОАО ”Фирма”

 

 

 

 

 

4

Пересечение и вычитание.

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

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

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

2. Операція вибірки SELECT. Квантор узагальнення ALL.

Выборка записей осуществляется с помощью команды SELECT. Давайте рассмотрим пример её использования:

SELECT id, login FROM users

Врезультате, будет возвращён result_set, который содержит все записи таблицы users. Обратите внимание, что мы указали только поля: "id" и "login". Если нам нужны значения всех полей, то тогда надо использовать такой SQL-запрос:

SELECT * FROM users

Вresult_set будут выведены все записи таблицы users со всеми полями и их значениями.

Как правило, требуется осуществлять выборку не таблицы целиком, а только записей, удовлетворяющих определённым критериям. Эти критерии можно описать в уже знакомой Вам конструкции "WHERE":

SELECT password FROM users WHERE login='TestUser'

В result_set попадут записи, поле "login" у которых имеет значение "TestUser".

Это всё, что нужно знать для выборки записей из базы данных. Однако, Вы должны понимать, что ключевой момент SQL-запроса на выборку записей - это "WHERE". Именно в ней описываются, какие записи нужно вытаскивать, а какие трогать не надо. В одной из следующих статей я обязательно познакомлю Вас с этой конструкцией поближе.

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

SELECT *

FROM Customers

WHERE rating > ALL

(SELECT rating

FROM Customers

WHERE city = Rome ):

 

=============== SQL Execution Log ============

 

|

 

 

 

 

 

|

| SELECT *

 

 

 

|

| FROM

Customers

 

 

 

|

| WHERE rating > ALL

 

 

 

|

| (SELECT rating

 

 

 

|

| FROM Customers

 

 

 

|

| WHERE city = 'Rome');

 

 

 

|

| =============================================

|

|

cnum

cname

city

rating

snum

|

|

-----

--------

----

------

------

|

|

2004

Grass

Berlin

300

1002

|

|

2008

Cisneros

San Jose

300

1007

|

=============================================

Рисунок 13.9: Использование оператора ALL Этот оператор проверяет значения оценки всех заказчиков в Риме. Затем он находит заказчиков с оценкой большей чем у любого из заказчиков в Риме. Сама высока оценка в Риме - у Giovanni( 200 ). Следовательно, выбираются только значения выше этих 200. Как и в случае с ANY, мы можем использовать EXISTS для производства альтернативной формулировки такого же запроса - ( вывод показан на Рисунке 13.10 ):

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]