- •1. Структура модулей и преимущества их использования
- •2. Описание объектных типов в языке программирования Pascal. Статические и виртуальные методы.
- •Нетипизированные файлы
- •Текстовые фалы
- •4. Моделирование линейных динамических информационных структур средствами высокого уровня
- •5. Рекурсивные процедуры обхода двоичных деревьев.
- •6. Представление разреженных матриц линейными массивами
- •8. Номенклатура сегментных регистров и способы адресации в младших моделях процессоров Intel.
- •8. Макросредства языка Assembler.
- •9. Основные типы ядра операционной системы
- •11. Семиуровневая модель взаимодействия открытых систем iso.
- •Уровни модели osi
- •12. Технология «клиент-сервер». Назначение прокси-сервера, сервера приложений, web-сервера и т.П.
- •13. Барьерная синхронизация. Флаги и управляющие процессы: крупномодульное решение.
- •15. Алгоритмы сортировки.
- •16. Нормализация. 1нф, н1нф, 2нф, 3нф, нфбк.
- •17. Транзакции. Тупики. Уровни изолированности пользователей.
- •II. Транзакции и параллельная работа
- •III. Транзакции, откаты и восстановление после сбоев
- •18. Язык sql. Таблицы. Запросы. Вставка, удаление и обновление.
- •19. Реляционная алгебра.
- •20. Классические и стандартные технологические процессы.
- •21. Основные технологические подходы.
- •3.5.2.4.
- •23. Создание mdi приложений в Delphi.
- •24. Методы описания языков программирования. Бнф. Классы грамматик языков. Общая схема трансляции. Функции отдельных блоков транслятора.
18. Язык sql. Таблицы. Запросы. Вставка, удаление и обновление.
Structured Query Language.
Стандарт языка SQL1, принятый ANSI в 1986 г., описывает только запросы. В настоящее время не используется. В промышленных СУБД используются следующие версии:
SQL2 (SQL-92) принят в 1992 г.;
SQL3 (SQL-99);
SQL-2003.
Выделяются следующие подъязыки:
Data Definition Language (DDL). Определяет структуру базы, задает хранимые объекты и привилегии доступа к ним.
Data Manipulation Language (DML). Вставляет, обновляет и удаляет данные и выполняет запросы к ним.
Data Control Language (DCL)
О терминологии SQL
Замечание: В РБД определен только язык запросов. Схема базы и данные в ней предполагаются заданными извне. Современный SQL существенно шире. В нем кроме выполнения запросов предусмотрены и работа с данными и построение схемы базы, включая таблицы, ограничения целостности, индексы, триггеры, последовательности, пользователей, а также механизм транзакций.
Базы, схемы, хранимые объекты базы
Хранимые объекты базы, образующие схему базы:
Таблицы
Представления (view)
Индексы (обычно B* и побитовые)
Триггеры
Последовательности (sequence)
Пользователи (user)
Современные СУБД имеют мощную процедурную часть. В них добавляются следующие хранимые объекты:
Процедуры (procedure)
Функции (function)
19. Реляционная алгебра.
В 1970 г. появилась работа Э.Ф.Кодда, в которой он применил к описанию баз данных алгебру отношений – реляционную алгебру. Появилась реляционная модель данных, представляющая базу данных как набор отношений, может быть связанных.
Реляционная модель данных
Очевидно, принадлежность записи к отношению определяется истинностью описывающего его предиката. Поэтому схема отношения определяется через задание предиката. Однако в реляционной модели принято говорить об именах отношений и атрибутах.
Отношения - это наборы однотипных объектов. Они имеют имя и набор свойств, называемых атрибутами.
Основные свойства отношений (в теории):
Кортежи не упорядочены;
Атрибуты не упорядочены;
Число кортежей в отношении конечно;
Любой атрибут отношения должен содержать данные одного типа;
Все используемые типы данных должны быть простыми;
Отношение не обладает метрическими свойствами, такими как ширина столбцов, число записей и т.д.
Схемы Джекобса
В 1982 г. Б. Джекобс [2] ввел экспликацию понятия “схема”, позволяющую описать уже определенные к тому времени иерархическую, реляционную и сетевую модели баз данных.
На множестве имен M вводится понятие “R-правила”, определенное как выражение вида:
(1) R=(R1, … Rm)
Имя R Î M имеет высший порядок, имена нулевого порядка R1, … Rm Î M и попарно различны, но одно из них может совпадать с R.
Схема базы это конечный набор R-правил, у которых левые части попарно различны:
(2) Sch = {Ri=(Ri1, … Riki)| i=1, …,n}.
Некоторые имена нулевого порядка могут быть именами связей между R-правилами.
Характеристическое свойство реляционной модели
Определение (1): Схема Джекобса будет реляционной, если в правых частях R-правил стоят только имена нулевого порядка.
Установим взаимно однозначное соответствие между R-правилом (1) и предикатом R(R1, … Rm). Тогда определение реляционности схемы можно перефразировать так:
Определение (2): В реляционной модели имена отношений не могут совпадать с именами атрибутов.
Особенности реляционной модели:
Схема базы образуется единственным источником данных – отношениями – и связями между отношениями, имеющими тип “один-к-одному” и “один-ко-многим”;
Отношения строятся только на простых типах данных;
Используется два эквивалентных способа манипулирования реляционными данными – реляционная алгебра и реляционные исчисления.
Реляционная алгебра
Определяется на конечном множестве отношений с фиксированной сигнатурой и конечным числом кортежей. Поскольку сигнатуры отношений могут не совпадать, реляционная алгебра многосортна, сами отношения и кортежи разных отношений могут быть не сравнимы.
Отношение r определяется своей схемой R. Набор записей в отношении определяет его состояние. При этом повторяющиеся кортежи отсутствуют.
Операции реляционной алгебры
Проекция
Естественное соединение
J - соединение
Декартово произведение
Селекция
Булевы операции
Частное
Переименование атрибутов
Проекция
Проекция - это набор унарных операций выбора подмножества столбцов отношений projx(r), где R схема отношения r и x Í R – набор столбцов.
Пример:
Свойство: Если Y Í X Í R, то proj y(proj x (r)) = proj y (r)
Обобщение на несколько отношений.
Естественное соединение
Пусть отношения r1 и r2 имеют схемы R1(A1,...,Ak,B1,...,Bn) и R2(A1,...,Ak,C1,...,Cm). Тогда естественное соединение (join) отношений r1 и r2 есть отношение r3 со схемой R3(A1,...,Ak,B1,...,Bn, C1,...,Cm), в котором каждая запись(экземпляр) получена конкатенацией каждой записи из r1 с теми записями из r2, у которых совпадают значения в общих атрибутах A1,...,Ak.
Обозначения: join(r1,r2) или join =A (r1,r2) или r1 join r2
J - соединение
Определение: Пусть даны отношения r1, r2 со схемами
R1(A1,...,Ak, B1,...,Bl),
R2(C1,...,Cm, D1,...,Dn), соответственно;
J - оператор сравнения на группах атрибутов A и C. Тогда J - соединение отношений r1 и r2 есть отношение r3 со схемой
R3(A 1,...,Ak, B1,...,Bl, C1,...,Cm, D1,...,Dn),
полученной объединением атрибутов схем R1 и R2 без повторения. Записи r3 получаются конкатенацией тех записей из r1 и r2, у которых значения группы столбцов A в r1 и группы столбцов C в r2 находятся в отношении J (удовлетворяют J).
Обозначение: join AJC (r1,r2)
Замечание: Очевидно, если J есть равенство “=” и AºC получим естественное соединение со схемой
R3(A1,...,Ak, B1,...,Bl, D1,...,Dn).
Пример:
Исходные отношения
Условие J = losal £ sal £ hisal
Декартово произведение
Определение: Декартовым произведением отношений r и s арностей kr и ks, с непересекающимися множествами атрибутов, соответственно, R и S,называется отношение t = r ´ s арности kr+ks, состоящее из кортежей, первые kr компонентов которых есть кортежи из r, а последние ks компонентов выбираются из s.
Иначе говоря, кортежи t образованы конкатенацией каждого кортежа из r с каждым кортежем из s. Поэтому, если в текущем состоянии r и s имеют nr и ns кортежей, то в t их nr ´ ns.
Замечание: В одном отношении недопустим повтор имен. Поэтому, в частности не существует декартов квадрат. При соединении отношений с одноименными атрибутами некоторые из них могут быть переименованы.
Селекция (выбор)
Определение: Пусть F – формула, образованная:
операндами в виде констант или имен столбцов (номеров столбцов)
операторами сравнения <, =, >, £, ³, ¹
логическими операторами Ù, Ú, ù
Тогда результат селекции sel F(r) есть множество кортежей t из r, для которых формула F истинна.
Булевы операции
Два отношения r1 и r2 с одной и той же схемой R могут рассматриваться как подмножества множества всех возможных кортежей в схеме R. Поэтому к ним применимы булевы операции Ç, È, -
Дополнение
В определении дополнения возникают трудности. Пусть dom(R) множество всех возможных кортежей над атрибутами схемы R с определенным для каждого атрибута доменом. Если хотя бы один домен бесконечен, то полное отношение r*, включающее все элементы из dom(R), не будет отношением в понимании реляционной алгебры. Не будет отношением и дополнение к конечному отношению r: = r* – r
Частное
Определение: Пусть даны отношение r с арностью kr и схемой R и отношение s с арностью k s < k r и схемой S, причем S Ì R и S ¹ Æ.
Тогда частным называется отношение r ¸ s арности kr – ks, которое:
содержит столбцы отношения r отсутствующие в s;
часть записи r включается в r ¸ s если в r она сцеплена с каждой записью из s.
Замечание: Смысл введения этой операции будет понятен при изучении многозначных функциональных зависимостей (MV-зависимостей).
Пример:
Обозначение: r division s или division(r,s) или r ¸ s
Совместимость отношений и переименование атрибутов
Теоретико-множественные операторы объединение, пересечение и разность требуют, чтобы отношения – операнды были совместимы, то есть относились к элементам одного сорта. Это означает, что отношения отличаются только именами и состояниями. Сигнатуры у них одинаковы, то есть количества атрибутов совпадают и атрибуты попарно совпадают по типам, а в простейшем случае, по именам.
Некоторые несовместимые отношения могут стать совместимыми после переименования атрибутов. Для реализации такой возможности вводится операция переименования атрибутов.
Операция переименования атрибутов
Пример 1: Необходимо объединить отношения “Employee” и “Работники” для расчета суммарной заработной платы:
Employee(ename, salary)
Работники(ФИО, зарплата)
Переименования: ФИО ® ename, зарплата ® salary
(типы соответствующих атрибутов считаются одинаковыми)
Операция переименования атрибутов:
[нов_имя_отношения] RENAME список_старых_атрибутов AS список_новых_атрибутов
Пример 2: Переименование атрибутов необходимо для объединения отношения с собой. Скажем, необходимо выбрать пары сотрудников с одинаковой зарплатой.
Независимые операции реляционной алгебры
Объединение, вычитание, декартово произведение, выборка и проекция независимые (примитивные) операции - их нельзя выразить друг через друга.
Декартово произведение - единственная операция, увеличивающая количество атрибутов. Поэтому она не выразима через остальные операции, не обладающие этим свойством.
Проекция - единственная операция, уменьшающая количество атрибутов. Поэтому её нельзя выразить через остальные операции, не обладающие этим свойством.
Селекция - единственная операция, сравнивающая атрибуты отношения. Поэтому она не выразима через остальные операции, не обладающие этим свойством.
Доказательство независимости объединения и вычитания не приводятся.
Зависимые операции реляционной алгебры
Операции соединения, пересечения и деления можно выразить через другие реляционные операции:
Операция соединения определяется через операции декартового произведения и выборки.
join F (r1,r2) = sel F (r1 ´ r2)
Операция пересечения выражается через вычитание следующим образом:
r1 Ç r2 = r1 – (r1 – r2)
Оператор деления выражается через операторы вычитания, декартового произведения и проекции следующим образом:
r1 ¸ r2 = proj X r1 – proj X ((proj X r1) join r2) – r1)
Реляционная алгебра. Перечень обозначений.
Обозначим:
U – множество атрибутов (универсум),
D – множество доменов,
dom – полная функция dom: U ® D – назначает домен каждому атрибуту,
R – множество всех возможных схем отношений на U,
r = {r1,...,rp} есть множество отношений ri со схемами Ri, соответственно,
q - множество бинарных отношений, определенных на доменах из D содержащее, по крайней мере, отношение равенства и неравенства для каждого домена.
Реляционная алгебра. Определение.
Определение: Реляционной алгеброй над U , D, dom, R, r, q называется семиместный кортеж
B = (U , D, dom, R, r, q, O ),
где O – это множество, содержащее операции селекции, проекции, объединения, пересечения, разности, дополнения, частного, естественного и J - соединения, а также операцию переименования атрибутов из U .
Примеры запросов
Заданы отношения:
emp (empno, ename, job, sal,deptno),
dept (deptno, dname, loc)
Смысл имен с точки зрения предметной области:
emp от employee – работник;
dept от department – отдел;
empno табельный номер;
ename имя работника;
job должность;
sal заработная плата;
deptno номер отдела;
dname название отдела;
loc местонахождение отдела.
Выдать фамилии и должности лиц, получающих зарплату больше 1000:
proj {ename, job} (sel sal>1000 (emp))
Выдать список сотрудников в виде отношения с атрибутами:
empno, ename, job, dname.
Первая неудачная попытка. Запрос с соединением:
proj {empno, ename, job, dname}(join deptno=deptno(emp, dept))
недопустим, так как в условии соединения deptno=deptno непонятно, из каких отношений берутся значения этих атрибутов.
Переименуем их таким образом: deptno из dept обозначим deptno1, а deptno из emp оставим без изменения.
Правильный запрос:
proj {empno, ename, job, dname}(join deptno1=deptno(emp, dept))
Замечание: в реализациях можно использовать уточнение имени атрибута именем отношения. В нашем примере dept.deptno и emp.empno.
Сравнение отношений и их табличных реализаций в БД
Три отличия отношений от таблиц:
В отношении нет одинаковых кортежей. Таблицы могут содержать одинаковые строки.
Тело отношения есть множество и потому кортежи не упорядочены. Строки таблиц обычно упорядочены. Одно отношение можно реализовать таблицами, отличающимися порядком строк.
Атрибуты отношения определяются уникальными в пределах отношения именами и потому не упорядочены. Столбцы таблиц упорядочены. Поэтому имена столбцов могут заменяться их номерами. Одно отношение можно реализовать таблицами, отличающимися порядком столбцов.
Заключение
Выражения реляционной алгебры строятся на отношениях и возвращают отношения же. Эти результаты можно использовать как аргументы в других выражениях.
Выделяются две группы операций:
Теоретико-множественные: объединение, пересечение, вычитание, декартово произведение, частное.
Реляционные: выборка, проекция, соединение, деление.
Для выполнения некоторых операций необходимо обеспечить совместимость отношений по сигнатуре.
Независимость операций. Операции соединение, пересечение и деление можно выразить через другие реляционные операции. Операции объединение, вычитание, декартово произведение, выборка, проекция нельзя выразить друг через друга.
Реляционная алгебра - это язык запросов. Выразить создание отношений, заполнить их, изменить или удалить кортежи в этой алгебре нельзя.