merged
.pdf13 Вариант
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 ):