Главная страница
Навигация по странице:

  • Часть составного первичного ключа не должна зависеть от неключевого столбца. https://info-comp.ru/boyes-codd-normal-form

  • Декомпозиция без потерь

  • Ответ

  • BIT STRING

  • DATETIME

  • CREATE FUNCTION

  • RETURNS

  • Ерл. Первая нормальная форма атомарные атрибуты


    Скачать 0.73 Mb.
    НазваниеПервая нормальная форма атомарные атрибуты
    Дата19.10.2022
    Размер0.73 Mb.
    Формат файлаdocx
    Имя файлаEkzamen2.docx
    ТипДокументы
    #741968
    страница1 из 3
      1   2   3

    2 Пул вопросов

    1. 1НФ

    ПЕРВАЯ НОРМАЛЬНАЯ ФОРМА: АТОМАРНЫЕ АТРИБУТЫ

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

    Рассмотрим пример приведения к 1НФ. Пусть необходимо автоматизировать процесс отпуска товаров со склада по накладной, приведенной 0. Сначала сведем все имеющиеся в накладной данные в одну таблицу. Приводя ее к 1НФ, учтем, что впоследствии будет необходимо учитывать продажи по разным городам, поэтому из поля «Адрес» выделим часть данных (город) в отдельное поле «Город». Кроме того, известно, что каждый покупатель может закупить в один день различное количество товаров.





    Однако, чтобы не создавать повторяющихся групп, фиксируем факт отпуска каждого товара в отдельной записи. В результате получим таблицу «ОТПУСК ТОВАРОВ» (см. 0). Итак, чтобы привести таблицу к 1НФ, нужно выполнить следующие шаги:

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

    2. Необходимо свести поля, одинаковые по смыслу в одно поле.


    1. 2НФ

    ВТОРАЯ НОРМАЛЬНАЯ ФОРМА: ОТСУТСТВИЕ ЗАВИСИМОСТЕЙ ЧАСТИЧНОГО КЛЮЧА

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

    Итак, чтобы перейти от 1НФ к 2НФ, нужно выполнить следующие шаги:

    1. Определить, на какие части можно разбить первичный ключ так, чтобы некоторые из неключевых полей зависели от одной из этих частей.

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

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




    1. 3НФ

    ТРЕТЬЯ НОРМАЛЬНАЯ ФОРМА: УСТРАНЕНИЕ ТРАНЗИТИВНЫХ ЗАВИСИМОСТЕЙ

    Третья нормальная форма (3НФ) требует, чтобы в таблице не имелось транзитивных зависимостей между неключевыми полями, т. е. чтобы значение любого поля, не входящего в первичный ключ, не зависело от другого поля, также не входящего в первичный ключ.

    Переход от 2НФ к 3НФ в соответствии с общим правилом содержит следующие шаги:

    1. Определить поля (или группы полей), от которых зависят другие поля.

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

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




    1. 4НФ

    Требование четвертой нормальной формы (4NF) заключается в том, чтобы в таблицах отсутствовали нетривиальные многозначные зависимости.

    В таблицах многозначная зависимость выглядит следующим образом.

    Начнем с того, что таблица должна иметь как минимум три столбца, допустим A, B и C, при этом B и C между собой никак не связаны и не зависят друг от друга, но по отдельности зависят от A, и для каждого значения A есть множество значений B, а также множество значений C.



    https://info-comp.ru/fourth-normal-form


    1. БКНФ

    Между 3 и 4 нормальной формой есть еще и промежуточная нормальная форма, она называется – Нормальная форма Бойса-Кодда (BCNF). Иногда ее еще называют «Усиленная третья нормальная форма». Промежуточной или усиленной третьей нормальной формой ее называют потому, что ситуации, в которых могут предъявляться требования нормальной формы Бойса-Кодда, возникают не всегда, т.е. это некий частный случай, именно поэтому данная форма не включена в основную градацию. Однако во всех источниках эта форма рассматривается, поэтому и мы ее тоже рассмотрим.

    Требования нормальной формы Бойса-Кодда следующие:

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

    Ключевые атрибуты составного ключа не должны зависеть от неключевых атрибутов.

    Отсюда следует, что требования нормальной формы Бойса-Кодда предъявляются только к таблицам, у которых первичный ключ составной. Таблицы, у которых первичный ключ простой, и они находятся в третьей нормальной форме, автоматически находятся и в нормальной форме Бойса-Кодда.

    Главное правило нормальной формы Бойса-Кодда (BCNF) звучит следующим образом:

    Часть составного первичного ключа не должна зависеть от неключевого столбца.

    https://info-comp.ru/boyes-codd-normal-form


    1. 5НФ

    Ответ: Переменная отношения находится в пятой нормальной форме (иначе – в проекционно-соединительной нормальной форме) тогда и только тогда, когда каждая нетривиальная зависимость соединения в ней определяется потенциальным ключом (ключами) этого отношения. Таблица будет находиться в пятой нормальной форме, если при соединении (JOIN) этих трех таблиц, которые были получены в результате декомпозиции, будут формироваться ровно те же самые данные, что и в исходной таблице до декомпозиции. Однако если этого происходить не будет, т.е. данные будут отличаться, например, какие-то строки были потеряны, или созданы новые, то в этом случае возникает так называемая зависимость соединения, т.е. часть данных одного столбца зависит от части данных другого столбца. Таким образом, таблица будет находиться в пятой нормальной форме, если она не будет содержать зависимости соединения. Декомпозиция без потерь – процесс разбиения одной таблицы на несколько, при условии, что в случае соединения таблиц, которые были получены в результате декомпозиции, будет формироваться ровно та же самая информация, что и в исходной таблице до декомпозиции.



    1. Подъязыки SQL

    Ответ: Язык SQL включает три подъязыка:

    • Data Definition Language (DDL) – язык определения данных, включающий такие операторы, как CREATE, ALTER, DROP;

    • Data Manipulation Language (DML) – язык обработки данных, который позволяет запрашивать и изменять данные и включает операторы SELECT, INSERT, UPDATE, DELETE;

    • Data Control Language (DCL) – язык управления данными, позволяет управлять разрешениями на доступ к данным и включает операторы GRANT и REVOKE.




    1. Команды DML

    Ответ: С точки зрения человека, пользующегося тем или иным хранилищем данных, существуют всего четыре действия над данными: поиск и выборка запрошенных данных, ввод новых данных, обновление существующих данных и удаление данных, ставших ненужными. В соответствии с этим в SQL для решения этих задач и предусмотрены четыре команды: – SELECT – выборка данных, удовлетворяющих заданным условиям; – INSERT – ввод новых данных; – UPDATE – обновление существующих данных; – DELETE – удаление данных.

    1. Команды DDL

    Ответ: Для того чтобы работать с данными, сначала необходимо их описать, т. е. указать их структуру, формы представления, связи, методы их контроля и многое другое. Действий с описаниями весьма немного, точнее их всего три. Это ввод новых описаний, модификация существующих и удаление ненужных. Каждому из этих действий существует своя команда: CREATE – ввод новых описаний; ALTER – модификация существующих описаний; DROP – удаление ненужных описаний.

    1. Типы данных SQL

    Ответ: В стандарте SQL определены следующие семь основных типов данных:

    • CHARACTER STRING - символьные (текстовые) данные;

    • NATIONAL CHARACTER - символьные данные, соответствующие национальному языку;

    • BIT STRING - двоичные данные;

    • EXACT NUMERIC - числа, точно соответствующие своей записи;

    • APPROXIMATE NUMERIC - числа в научной нотации (мантисса и порядок);

    • DATETIME - дата и время;

    • INTERVAL - период времени между двумя точками отсчёта.

    Каждый основной тип имеет один или несколько подтипов. Пользователи могут добавлять в него новые типы с помощью команды CREATE TYPE.

    1. Домены типа

    Ответ: Если в таблице базы данных или в нескольких таблицах присутствуют столбцы, обладающие одними и теми же характеристиками, можно предварительно описать тип такого столбца и его поведение с помощью домена, а затем поставить в соответствие каждому из одинаковых столбцов имя домена.



    DEFAULT определяет выражение, которое по умолчанию заносится в колонку, ассоциированную с доменом, при создании записи таблицы. Это значение будет присутствовать в соответствующем столбце записи до тех пор, пока пользователь не изменит его каким-либо образом. Значения по умолчанию могут быть выражены как литерал-значение (числовое, строковое или дата), NULL − специфицирует пустое значение или USER − имя текущего пользователя. Предложение NOT NULL указывает, что столбцы, ассоциированные с доменом, обязательно должны содержать какое-либо значение, отличное от пустого. Предложение COLLATE задает порядок сортировки символов.

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



    – оператор = { = | < | > | <= | >= | !< | !> | <> | != };

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

    – <оператор> <значение> − значение домена находится с параметром <значение> во взаимоотношениях, определяемых параметром оператор. Например,

    CHECK (VALUE >= 100);

    – BETWEEN <значение1> AND <значение2> − значение домена должно

    находиться в промежутке между значение1 и значение2, включая их.

    – LIKE < значение> [ESCAPE <значение>] − значение домена должно

    «походить» на параметр значение. При этом символ «%» употребляется для указания любого значения любой длины и символ подчеркивания «_» − для указания

    любого единичного символа. Например, LIKE «%USD» − вводимое значение

    должно оканчиваться символами «USD» независимо от того, какие символы и

    сколько расположены перед ними; LIKE «__94» − вводимое значение может содержать 4 символа, из которых первые два − любые и последние два − «94».

    ESCAPE <значение> используется, если в операторе LIKE служебные символы

    «%» или «_» должны использоваться в шаблоне подобия. В этом случае выбирается некоторый символ, например, «!», после которого служебные символы теряют свой статус и входят в поисковую строку как обычные символы. Символ «!»

    указывается после слова ESCAPE. Например, CHECK LIKE «%!%» ESCAPE «!»);

    Согласно приведенному ограничению значения домена должны заканчиваться

    символом «%».

    – IN <значение1> [, <значение2> ...] − значение домена должно

    совпадать с одним из приведенных в списке параметров значениеN, например:

    CHECK (VALUE IN («Муж», «Жен»));

    – CONTAINING <значение> − значение домена должно содержать вхождение параметра значение, не важно, в каком месте. Например, в наименовании отдела вхождение «041» может встретиться где угодно «00304107», «Отдел ‐ 041002»:

    CHECK (VALUE CONTAINING «041»);

    – STARTING [WITH] <значение> − значение домена должно начинаться

    параметром значение. Например, название отдела должно начинаться с «041»:

    CHECK (VALUE STARTING WITH «041»);


    1. Синтаксис Select

    Ответ: SELECT – выборка данных, удовлетворяющих заданным условиям;

    Инструкция SELECT, используемая для построения SQL-запросов, является наиболее мощной из всех инструкций SQL, и реализует все операции реляционной алгебры








    1. Стандартные функции SQL особенности применения

    Временные, образования типов

    Ответ: Агрегатные функции предназначены для вычисления итоговых значений операций над всеми записями набор данных.

    Агрегатные функции используются подобно именам полей в операторе SELECT, но с одним исключением: они берут имя поля как аргумент. С функциями SUM и AVG могут использоваться только числовые поля.



    Агрегатные функции MIN( ) и MAX( ) позволяют найти соответственно наименьшее и наибольшее значения в столбце. При этом столбец может содержать числовые или строковые значения, либо значения даты/времени.

    В случае применения функций MIN() и MAX() к числовым данным числа сравниваются по арифметическим правилам (среди двух отрицательных чисел меньше то, у которого модуль больше; нуль меньше любого положительного числа и больше любого отрицательного). Сравнение дат происходит последовательно (более ранние значения дат считаются меньшими, чем более поздние). Сравнение интервалов времени выполняется на основании их продолжительности. В случае применения функций MIN() и MAX() к строковым данным результат сравнения двух строк зависит от используемой таблицы кодировки. На персональных компьютерах используется таблица кодировки ASCII, где установлен порядок сортировки, при котором цифры идут перед буквами, а все прописные буквы  перед строчными.

    Агрегатная функция COUNT() подсчитывает количество значений в столбце. При этом тип данных столбца может быть любым. Функция COUNT() всегда возвращает целое число независимо от типа данных столбца.

    Также существует несколько встроенных функций для работы со строками:

    CONCAT — объединение строк

    LENGTH — возвращает количество символов в строке

    TRIM — удаляет пробелы в начале и конце строки

    SUBSTRING — извлекает подстроку из строки

    REPLACE — заменяет подстроку в строке

    LOWER — переводит символы строки в нижний регистр

    UPPER — переводит символы строки в верхний регистр и т.д.

    с числами:

    ROUND — округляет число

    TRUNCATE — обрезает дробное число до указанного количества знаков после запятой

    CEILING — возвращает наименьшее целое число, которое больше или равно текущему значению

    FLOOR — возвращает наибольшее целое число, которое меньше или равно текущему значению

    POWER — возводит число в указанную степень

    SQRT — возвращает квадратный корень числа

    RAND — генерирует случайное число с плавающей точкой в диапазоне от 0 до 1

    Выражения для работы с датами
    Эти выражения, как правило, возвращают текущую дату и время. Другие функции для получения текущей даты и времени:

    CURDATE/CURRENT_DATE — возвращает текущую дату CURTIME/CURRENT_TIME — возвращает текущее время и т.д.


    1. Пользовательские функции

    Ответ:



    • CREATE FUNCTION имя_функции ([[ метод_аргумента ] [имя_аргумента ] тип_ аргумента [,…] ]) - после ключевых слов CREATE FUNCTION указывается имя создаваемой функции, после чего в круглых скобках перечисляются аргументы, разделенные запятыми. Для каждого аргумента достаточно указать только тип, но при желании можно задать метод (in, out, inout; по умолчанию in) и  имя.  Если список в круглых скобках пуст, функция вызывается без аргументов (хотя сами круглые скобки обязательно должны присутствовать как в определении функции, так и при ее использовании). Ключевые слова  OR REPLACE  используются для изменения уже существующей функции.
            


    • RETURNS тип_возвращаемого_значения   -  тип данных, возвращаемый функцией.
            


    • AS 'определение'  -  программное определение функции. В процедурных языках (таких, как PL/pgSQL) оно состоит из кода функции. Для откомпилированных функций С указывается абсолютный системный путь к файлу, содержащему объектный код.
            


    • LANGUAGE 'язык'. Название языка, на котором написана функция. В аргументе может передаваться имя любого процедурного языка (такого, как plpgsql или plperl, если соответствующая поддержка была установлена при компиляции),  С или SQL. 
        1   2   3


    написать администратору сайта