
- •Архітектура систем з базами даних
- •Інформаційне моделювання предметних середовищ
- •Ієрархічна, мережна та реляційна моделі даних
- •Операції реляційної алгебри та їх реалізація на мові sql.
- •Операции над множествами.
- •Специальные реляционные операции.
- •Мова запитів sql. Операція вибірки select.
- •Вкладені та корельовані підзапити в мові sql, агрегатні функції та квантори.
- •Операції модифікації даних у мові sql: update, insert, delete.
- •Теорія нормалізації. Функціональна залежність між атрибутами. Аномалії модифікації у ненормалізованій бд. Переваги нормальних форм. Способи одержання нормальних форм.
- •Моделі взаємодії в архітектурі “клієнт-сервер” та субд, що їх підтримують.
- •Проблеми одночасного доступу користувачів до бд та використання транзакцій.
- •Інтерфейси доступу до бд з різних програмних середовищ.
- •Характеристика сучасних реляційних субд.
- •Еталонна модель взаємодії відкритих систем.
- •Організація доступу до спільного середовища передачі даних csma/cd
- •Стандарти мережі Ethernet на мідному кабелі.
- •Стандарти мережі Ethernet на оптоволоконному кабелі.
- •Організація бездротових комп'ютерних мереж та їх стандарти.
- •Об’єднання сегментів у мережі Ethernet за допомогою концентраторів, комутаторів та маршрутизаторів.
- •Структура та робота комутатора в мережах Ethernet.
- •Інтелектуальні комутатори та віртуальні лом на їх основі.
- •Класифікація лом у відповідності з ieee 802.
- •Аналіз функціонування обчислювальних мереж. Можливості мережних аналізаторів.
- •Призначення та можливості протоколів сімейства tcp/ip.
- •Мережні транспортні протоколи: ipx/spx, NetBios. Особливості та застосування.
- •Кадр инициализации сессии. Кадр подтверждения сессии. Кадр опознания имени.
- •Протокол udp. Структура дейтаграм, застосування.
- •Протокол тср. Структура сегментів, застосування. Встановлення та завершення з'єднання.
- •Адресація у мережних транспортних протоколах.
- •Поняття маршрутизації. Приклад статичної маршрутизації в невеликій мережі.
- •Класифікація протоколів динамічної маршрутизації.
- •Протокол icmp. Призначення, основні типи повідомлень.
- •Система доменних імен dns. Правила делегування зон в Інтернеті.
- •Налагодження системи імен dns для корпоративної мережі. Структура прямої та зворотньої зони dns.
- •Інтерфейс сокетів та його застосування при програмуванні мережних задач. Типи сокетів та сімейства адрес.
- •Передача даних через сокети у режимі дейтаграм.
- •Передача даних через сокети у режимі та сесій.
- •Моделі програмування серверних потокових сокетів.
- •Програмування комунікаційних протоколів прикладного рівня.
- •Архітектура систем з базами даних
Вкладені та корельовані підзапити в мові sql, агрегатні функції та квантори.
Коррелированный подзапрос. В SQL возможно выполнение подзапроса, вычисление которого зависит от текущего значения переменных текущего запроса. Внутренний подзапрос не может быть обработан раз и навсегда, прежде чем будет обрабатываться внешний запрос.
Пример : Получить фамилии студентов, сдавших экзамен с кодом 002
SELECT ФИО
FROM студент
WHERE “002” IN (SELECT код_гр FROM экзамен WHERE ном_зач=студент.ном_зач)
В этом случае происходит следующее: система СУБД выбирает первую строку из "Студент" при этом переменные Студент.номер_зч принимает определенное значение
СУБД обрабатывает внутренний подзапрос и находит список предметов который сдавал этот студент. СУБД завершает обработку первой строки внешнего подзапроса.
СУБД выбирает следующую строку из "Студент" и процесс повторяется
В SQL имеется возможность формировать вложенные запросы (структурирование).
Например, запрос 2 можно реализовать и так:
SELECT наименование предмета
FROM предмет
WHERE код_предм IN (SELECT код_предм FROM экзамен WHERE оценка <4)
При обработке всего запроса система обрабатывает вначале вложенный запрос. В результате образуется множество кодов предметов, по которым оценка <4, затем эти значения служат условием для выбора строк из таблицы предмет.
В SQL допускается любая вложенность запросов, однако конкретная реализация ограничивает вложенность. В подзапросе и во внешнем запросе может использоваться одна и та же таблица.
Оператор SELECT позволяет возращать (агрегированные) характеристики, подсчитанные по всем или указанным записям таблицы.
COUNT, DISTINCT, MIN, MAX, AVG, SUM
SUM(колонка) – сумма значений по столбцу
MAX(колонка)– максимальное значение в столбце
MIN(колонка) - минимальное значение в столбце
AVG(колонка) – среднее значение в столбце
COUNT(колонка) – число значений в столбце, можно указать "*" - любая колонка.
Для исключения дубликатов из результата в SQL используют – DISTINCT(исключение).
Пример: Получить перечень предметов по которым сдавали экзамен в 8 семестре.
Select distinct наименование
From предмет
Where код предмета in (select код предмета
From “экзамен”
Where семестр=8)
КВАНТОР СУЩЕСТВОВАНИЯ EXIST В ЯЗЫКЕ SQL.
В логике предикат с навешенным квантором существования Exist[P(x)] принимает значение ИСТИНА, когда существует такое значение Х, при котором предикат, зависящий от х (Р(х)), принимает значение ИСТИНА.
True,
если существует х, P(x) = true
Exist[xP(x)] =
False, если не существует х, P(x) = true
X: 1-10
Exists x (x<5) = True
Exists x (x>20) = False
В SQL предикат с квантором существования представляется:
Select…From…Where
Exists(Select*From…Where),
которое следует за фразой Where.
Такое выражение считается истинным, когда результат вычисления подзапроса представляет собой не пустое множество, т.е. существует хотя бы одна запись, возвращаемая подзапросом. На практике подзапрос всегда будет коррелированным подзапросом.
Пример. Получить фамилии студентов, сдавших экзамен с кодом 002
SELECT №зч,ФИО
FROM студент
WHERE EXISTS (SELECT *
FROM экзамен
WHERE ном_зач=студент,.ном_зач AND код предмета = “002”)
Фактически любой запрос, использующий оператор принадлежности IN, можно записать с помощью EXISTS (но не наоборот).
КВАНТОР ОБЩНОСТИ ALL В ЯЗЫКЕ SQL.
Предикат с навешенным квантором общности FORALL x [P(x)] принимает значение ИСТИНА, когда для любого значения х предикат P(x) принимает значение ИСТИНА.
TRUE,
P(x) = TRUE – для любого х
FORALL x [P(x)] =
FALSE, P(x) = TRUE - не для всех х
Х: 1-10
FORALL(x<100) = TRUE
FORALL(x<5) = FALSE
Квантор общности в SQL реализуется с помощью ключевого слова ALL, которое употребляется вместе с оператором сравнения. При этом предикат с ALL принимает значение ИСТИНА, если для всех значений, выбранных в подзапросе, выполняется условие, заданное в предикате внешнего запроса.
Пример. Получить список студентов, получивших стипендию большую, чем любой из студентов группы ОМ-962
SELECT *
FROM студент
WHERE стипендия > ALL (SELECT cтипендия
FROM студент
WHERE код_группы=”ОМ-962”)
Особенность предиката с ALL: в случае отсутствия данных в подзапросе весь предикат принимает значение ИСТИНА и в результат попадают все строки из основной таблицы.
Использование фразы ANY (SOME).
В SQL c операторами сравнеиня >,<,=,>=,<=, можно использовать ключевое слово ANY(SOME). Предикат с ANY принимает значение ИСТИНА, если для какого-нибудь значения, полученного в результате выполнения подзапроса, выполняется условие, заданное в предикате внешнего запроса.
Пример: Получить список студентов института, день рождения которых совпадает с днем рождения хотя бы одного из студентов ОМ-962.
SELECT *
FROM студент
WHERE Д_Р=ANY(SELECT Д_Р
FROM студент
WHERE код_группы=”ОМ-962”
AND код_группы “ОМ-962”)
Для исключения результата, условие во внешнем запросе необходимо дополнить < >”ОМ-962”. Если группа”х.х.х”, т.е. при отсутствии значений в подзапросе предикат с ANY автоматически возвращаетзначение ЛОЖЬ (в результат не попадает ни одна строка из внешнего запроса).
Особенности UNION в SQL
При объединении двух отношений, они должны быть совместными по объединению, т.е.:
Таблицы имеют одинаковое число студентов
i – cтолбец первой таблицы и i – ый столбец второй таблицы имеют одинаковый тип данных.
Пример Получить №зч студентов ,имеющих стипендию > 42гр. или сдавших экзамены в 7-ом семестре.
SELECT №зч “повышенная стипендия”
FROM студент
WHERE стипендия > 40
UNION
SELECT №зч, “Сдал экзамен”
FROM экзамен
WHERE семестр = 7
ORDER BY 1
Основные особенности операции UNION.
Дубликаты всегда исключаются из результата
С помощью UNION можно объединить любое число предложений SELECT
Для различения строк в результирующей таблицы, в результат полезно включать символьную константу, показывающую ее принадлежность
Если в запросе требуется упорядочивание, то фраза ORDER BY должна входить только в последнее предложение SELECT, причем в ней необходимо указывать порядковые номера столбцов, а не их названия.