НОРМАЛИЗАЦИИЯ
Отношение находится в первой нормальной форме (1NF), тогда и только тогда, когда все значения атрибутов атомарны (Простые, или атомарные, типы данных не обладают внутренней структурой), и все неключевые атрибуты функционально зависят от ключа. Переменная отношения находится во второй нормальной форме (2NF) тогда и только тогда, когда она находится в первой нормальной форме, и каждый неключевой атрибут (неключевым атрибутом называется атрибут, не входящий ни в один возможный ключ) минимально функционально зависит (в значении переменной отношения r атрибут Y функционально зависит от атрибута X в том и только в том случае, если каждому значению X соответствует в точности одно значение Y) от первичного ключа. Переменная отношения находится в третьей нормальной форме (3NF) в том и только в том случае, когда она находится во второй нормальной форме, и каждый неключевой атрибут нетранзитивно (fd A->C называется транзитивной, если существует такой атрибут B, что имеются функциональные зависимости A-> B и B-> C и отсутствует функциональная зависимость C-> A) функционально зависит от первичного ключа. Переменная отношения находится в нормальной форме Бойса-Кодда (BCNF) в том и только в том случае, когда любая выполняемая для этой переменной отношения нетривиальная и минимальная FD имеет в качестве детерминанта некоторый возможный ключ данного отношения. Нормализация - декомпозиция (разбиения путем проецирования) отношения, находящегося в предыдущей нормальной форме, на два или более отношений, удовлетворяющих требованиям следующей нормальной формы. 8. Операции реляционной алгебры. Реляционное исчисление. Реляционная алгебра состоит из двух групп по четыре оператора. 1. Традиционные операции над множествами (но модифицированные с учетом того, что их операндами являются отношения, а не произвольные множества): объединение, пересечение, разность и декартово произведение. 2. Специальные реляционные операции: выборка, проекция, соединение, деление. Объединение возвращает отношение, содержащее все кортежи, которые принадлежат либо одному из двух заданных отношений, либо им обоим. Пересечение возвращает отношение, содержащее все кортежи, которые принадлежат одновременно двум заданным отношениям. Разность возвращает отношение, содержащее все кортежи, которые принадлежат первому из двух заданных отношений и не принадлежат второму. Произведение возвращает отношение, содержащее все возможные кортежи, которые являются сочетанием двух кортежей, принадлежащих соответственно двум заданным отношениям. Выборка возвращает отношение, содержащие все кортежи из заданного отношения, которые удовлетворяют указанным условиям. Проекция возвращает отношение, содержащее все кортежи (подкортежи) заданного отношения, которые остались в этом отношении после исключения из него некоторых атрибутов. Соединение возвращает отношение, содержащее все возможные кортежи, которые представляют собой комбинацию атрибутов двух кортежей, принадлежащих двум заданным, при условии, что в этих двух комбинированных кортежах присутствуют одинаковые значения в одном или нескольких общих для исходных отношений атрибутах. Деление для заданных двух унарных отношений и одного бинарного возвращает отношение, содержащее все кортежи из первого унарного отношения, которые содержатся также в бинарном отношении и соответствуют всем кортежам во втором унарном отношении. Результат выполнения любой операции над отношением также является отношением, поэтому результат одной операции может использоваться в качестве исходных данных для другой. Можно записывать вложенные реляционные выражения. Эта особенность называется свойством реляционной замкнутости. Отношение имеет две части —заголовок и тело. заголовок — это атрибуты, а тело — это кортежи. Заголовок для базового отношения, т. е. значение базовой переменной-отношения. Результат обязательно должен иметь вполне определенный тип отношения, поэтому, если рассматривать свойство реляционной замкнутости более строго, каждая реляционная операция должна быть определена таким образом, чтобы выдавать результат с надлежащим типом отношения (в частности, с соответствующим набором имен атрибутов или заголовком). Реляционная алгебра имеет набор правил вывода типов, позволяющих вывести тип на выходе произвольной реляционной операции основная цель — обеспечить запись реляционных выражений, позволяющих определять: • области выборки, т. е. тех данных, которые должны быть доставлены в результате выполнения операции выборки; • области обновления, т. е. данных, которые должны быть вставлены, изменены или удалены в результате выполнения операции обновления; • правила поддержки целостности данных, т. е. некоторых особых требований, которым должна удовлетворять база данных; • производные переменные-отношения, т. е. те данные, которые должны быть включены в представления базы данных; • требования устойчивости, т. е. данные которые должны быть включены в контролируемую область для некоторых операций управления параллельным доступом к информации; • ограничения защиты, т. е. данные, для которых осуществляется тот или иной тип контроля доступа.
9. Языки манипулирования данными SQL и QBE (общие сведения). SQL является, информационно-логическим языком, предназначенным для описания, изменения и извлечения данных, хранимых в реляционных базах данных. SQL был основным способом работы пользователя с базой данных и позволял выполнять следующий набор операций: создание в базе данных новой таблицы; добавление в таблицу новых записей; изменение записей; удаление записей; выборка записей из одной или нескольких таблиц, а, также, изменение структур таблиц. Со временем, SQL усложнился — обогатился новыми конструкциями, обеспечил возможность описания и управления новыми хранимыми объектами (например, индексы, представления, триггеры и хранимые процедуры) — и стал приобретать черты, свойственные языкам программирования. Каждое предложение SQL — это либо запрос данных из базы, либо обращение к базе данных, которое приводит к изменению данных в базе. В соответствии с тем, какие изменения происходят в базе данных, различают следующие типы запросов: запросы на создание или изменение в базе данных новых или существующих объектов; запросы на получение данных; запросы на добавление новых данных (записей); запросы на удаление данных; обращения к СУБД. Основным объектом хранения реляционной базы данных является таблица, поэтому все SQL-запросы — это операции над таблицами. В соответствии с этим, запросы делятся на: запросы, оперирующие самими таблицами (создание и изменение таблиц); запросы, оперирующие с отдельными записями (или строками таблиц) или наборами записей. Запросы первого типа делятся на запросы, предназначенные для создания в базе данных новых таблиц, и на запросы, предназначенные для изменения уже существующих таблиц. Запросы второго типа оперируют со строками, и их можно разделить на запросы следующего вида: вставка новой строки; изменение значений полей строки или набора строк; удаление строки или набора строк. Язык SQL представляет собой совокупность операторов; инструкций; и вычисляемых функций. Операторы операторы определения данных (Data Definition Language): CREATE создает объект БД; ALTER изменяет объект; DROP удаляет объект операторы манипуляции данными (Data Manipulation Language): SELECT считывает данные, удовлетворяющие заданным условиям; INSERT добавляет новые данные; UPDATE изменяет существующие данные; DELETE удаляет данные. операторы определения доступа к данным (Data Control Language): GRANT предоставляет пользователю (группе) разрешения на определенные операции с объектом; REVOKE отзывает ранее выданные разрешения; DENY задает запрет, имеющий приоритет над разрешением; операторы управления транзакциями (Transaction Control Language): COMMIT применяет транзакцию; ROLLBACK откатывает все изменения, сделанные в контексте текущей транзакции; SAVEPOINT делит транзакцию на более мелкие участки.
QBE Теоретической основой языка QBE является реляционное исчисление с переменными-доменами (однако в языке присутствуют и элементы исчисления кортежей). Язык QBE позволяет задавать сложные запросы к БД путем заполнения предлагаемой СУБД запросной формы (иногда также используют термин QBF – запрос по форме). Такой способ задания запросов обеспечивает высокую наглядность и не требует указания алгоритма выполнения операции — достаточно описать образец ожидаемого результата. В каждой из современных реляционных СУБД имеется свой вариант языка QBE. На языке QBE можно задавать однотабличные и многотабличные (выбирающие или обрабатывающие данные из нескольких связанных таблиц) запросы. С помощью запросов на языке QBE можно выполнять следующие основные oперации: выборку данных; вычисление над данными; вставку новых записей; удаление записей; модификацию (изменение) данных. Результатом выполнения запроса является новая таблица, называемая ответной (первые две операции), или обновленная исходная таблица (остальные операции). В реальных приложениях баз данных QBE используется в основном для выборки данных. Выборка, вставка, удаление и модификация могут производиться безусловно или в соответствии с условиями, задаваемыми с помощью логических выражений. Вычисления над данными задаются с помощью арифметических выражений и порождают в ответных таблицах новые поля, называемые вычисляемыми. Запросная форма обычно имеет вид таблицы, имя и названия полей которой совпадают с именем и названиями полей соответствующей исходной таблицы. Чтобы узнать имена доступных таблиц БД, в языке QBE предусмотрен запрос на выборку имен таблиц. Названия полей исходной таблицы могут вводиться в шаблон вручную или автоматически. Во втором случае используется запрос на выборку заголовков столбцов. 10. Использование SQL для создания и актуализации баз данных, формирования представлений, хранимых процедур и триггеров, запросов к базе данных. Слова, написанные прописными латинскими буквами, являются зарезервированными словами SQL. Слова, написанные строчными буквами и заключенные в кавычки, именуют конструкцию, которую необходимо раскрыть дополнительно. Слова, написанные строчными буквами и незаключенные в кавычки, именуют элементарное (не требующее дополнительного описания) понятие. То же, что и 3., но ограниченное символами / является комментарием. Фрагменты, заключенные в фигурные скобки и разделенные символом ½, являются альтернативными í½ôý. При записи команды для конкретного применения необходимо выбрать одни из них. Фрагмент, заключенный в квадратные скобки [ ], возможно не будет использоваться при записи команды для конкретного применения. Круглые скобки () используются: · в выражениях для изменения порядка выполнения операций; · для объединения некоторых фрагментов в единое целое. Многоточие, стоящее перед закрывающейся квадратной или круглой скобкой, означает, что заключенный в эти скобки фрагмент может быть повторен много раз. Символ := служит для соединения левой раскрываемой части с раскрывающей ее правой частью и читается как «по определению есть».
|