Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
16-30.docx
Скачиваний:
6
Добавлен:
29.08.2019
Размер:
56.15 Кб
Скачать
  1. Вторая нормальная форма (2nf).

Вторая нормальная форма (2NF)

Основная статья: Вторая нормальная форма

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

Определение

Переменная отношения находится во второй нормальной форме тогда и только тогда, когда она находится в первой нормальной форме и каждый неключевой атрибут неприводимо зависит от ее потенциального ключа.[1]

Неприводимость означает, что в составе потенциального ключа отсутствует меньшее подмножество атрибутов, от которого можно также вывести данную функциональную зависимость.[1] Для неприводимой функциональной зависимости часто используется эквивалентое понятие «полная функциональная зависимость».[1]

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

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

Пример приведения отношения ко второй нормальной форме

Пусть в следующем отношении первичный ключ образует пара атрибутов {СотрудникДолжность}:

Сотрудник

Должность

Зарплата

Наличие компьютера

Гришин

Кладовщик

20000

Нет

Васильев

Программист

40000

Есть

Иванов

Кладовщик

25000

Нет

Зарплату сотруднику каждый начальник устанавливает сам (хотя её границы зависят от должности). Наличие же компьютера у сотрудника зависит только от должности, то есть зависимость от первичного ключа неполная.

В результате приведения к 2NF получаются два отношения:

Сотрудник

Должность

Зарплата

Гришин

Кладовщик

20000

Васильев

Программист

40000

Иванов

Кладовщик

25000

Должность

Наличие компьютера

Кладовщик

Нет

Программист

Есть

  1. Третья нормальная форма (3nf).

Третья нормальная форма (3NF)

Основная статья: Третья нормальная форма

Отношение находится в 3NF тогда и только тогда, когда выполняются следующие условия:

Отношение находится во второй нормальной форме;

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

Определение

Согласно определению Кодда, отношение R находится в 3NF тогда и только тогда, когда выполняются следующие условия:

Отношение R находится во второй нормальной форме.

ни один неключевой атрибут R не находится в транзитивной функциональной зависимости от потенциального ключа отношения R.

Пояснения к определению:

Неключевой атрибут отношения R — это атрибут, который не принадлежит ни одному из потенциальных ключей R.

Функциональная зависимость множества атрибутов Z от множества атрибутов X (записывается X → Z, произносится «икс определяет зет») является транзитивной, если существует такое множество атрибутов Y, что X → Y и Y → Z. При этом ни одно из множеств X, Y и Z не является подмножеством другого, то есть функциональные зависимости X → Z, X → Y и Y → Z не являются тривиальными.

Определение 3NF, эквивалентное определению Кодда, но по-другому сформулированное, дал Карло Заниоло в 1972 году. Согласно ему, отношение находится в 3NF тогда и только тогда, когда для каждой из ее функциональных зависимостей X → A выполняется хотя бы одно из следующих условий:

Х содержит А (то есть X → A — тривиальная функциональная зависимость)

Х — суперключ

А — ключевой атрибут (то есть А входит в состав потенциального ключа).

Определение Заниоло четко определяет разницу между 3NF и более строгой нормальной формой Бойса-Кодда (НФБК): НФБК исключает третье условие («А — ключевой атрибут»).

«Ничего, кроме ключа»

Запоминающееся и, по традиции, наглядное резюме определения 3NF Кодда было дано Биллом Кентом: каждый неключевой атрибут «должен предоставлять информацию о ключе, полном ключе и ни о чем, кроме ключа».[1]

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

Крис Дэйт говорит о резюме Кента как о «интуитивно привлекательной характеристике» 3NF, и замечает, что с небольшим изменением она может служить и как определение более строгой нормальной формы Бойса-Кодда: «Каждый атрибут должен предоставлять информацию о ключе, полном ключе и ни о чем, кроме ключа». Вариант определения 3NF Кента является менее строгим, чем вариант НФБК Дэйта, поскольку первая утверждает только, что неключевые атрибуты зависят от ключей. Первичные атрибуты (которые являются ключами или их частями) вовсе не должны быть функционально зависимыми; каждый из них предоставляет информацию о ключе предоставлением самого ключа или его части. Здесь следует отметить, что это правило справедливо только для неключевых атрибутов, так как применение его ко всем атрибутам будет полностью запрещать все сложные альтернативные ключи, поскольку каждый элемент такого ключа будет нарушать условие «полного ключа».

[править]Пример

Рассмотрим в качестве примера следующее отношение:

R1

Сотрудник

Отдел

Телефон

Гришин

Бухгалтерия

11-22-33

Васильев

Бухгалтерия

11-22-33

Петров

Снабжение

44-55-66

В отношении атрибут «Сотрудник» является первичным ключом. Личных телефонов у сотрудников нет, и телефон сотрудника зависит исключительно от отдела.

Таким образом, в отношении существуют следующие функциональные зависимости: Сотрудник → Отдел, Отдел → Телефон, Сотрудник → Телефон.

Зависимость Сотрудник → Телефон является транзитивной, следовательно, отношение не находится в 3NF.

В результате декомпозиции отношения R1 получаются два отношения, находящиеся в 3NF:

R2

Отдел

Телефон

Бухгалтерия

11-22-33

Снабжение

44-55-66

R3

Сотрудник

Отдел

Гришин

Бухгалтерия

Васильев

Бухгалтерия

Петров

Снабжение

Исходное отношение R1 при необходимости легко получается в результате операции соединения отношений R2 и R3.

  1. Основные функции языка SQL (Structured Query Language). Подмножества языка SQL: язык описания (определения) данных — DDL (Data Definition Language) и язык манипулирования данными — DML (Data Manipulation Language).

Функции языка SQL В языке SQL, кроме операторов, имеется несколько функций, основные из которых будут рассмотрены далее. Статистические функции - функции, предназначенные для статистической обработки данных. Наиболее часто используемые статистические функции Перечислены в табл. 17.4.

Таблица 17.4. Основные статистические функции

Функция

Описание

AVG()

Получение среднего значения

COUNT ()

Определяет количество значений

COUNT(*)

Определяет количество ненулевых значений

МАХ()

Максимальное значение

MIN()

Минимальное значение

SUM ()

Сумма значений

Строковые функции - функции, предназначенные для работы со строковыми чачениями. Наиболее часто используемые из них представлены в табл. 17.5. Таблица 17.5. Основные строковые функции

Функция

Описание

I I

Слияние (конкатенация) двух строк

CAST (<Выражение> AS <Тип>)

Приводит выражение <Выражение> к типу <Тип>

LOWER(S)

Преобразует символы строки S в символы нижнего регистра

SUBSTRING (S FROM Nl то N2)

Выделяет из строки s подстроку, начиная с символа N1 и заканчивая символом N2

TRIM (S)

Удаляет в начале и конце строки s лишние пробелы

UPPER (S)

Преобразует символы строки s в символы верхнего регистра

Data Definition Language (DDL) (язык описания данных) — это семейство компьютерных языков, используемых в компьютерных программах для описания структуры баз данных.

На текущий момент наиболее популярным языком DDL является SQL, используемый для получения и манипулирования данными в РСУБД, и сочетающий в себе элементы DDL, DML и DCL.

Функции языков DDL определяются первым словом в предложении (часто называемом запросом), которое почти всегда является глаголом. В случае с SQL эти глаголы — «create» («создать»), «alter» («изменить»), «drop» («удалить»). Это превращает природу языка в ряд обязательных утверждений (команд) к базе данных.

Языки DDL могут существенно различаться у различных производителей СУБД. Существует ряд стандартов SQL, установленный ISO/IEC (SQL-89,SQL-92SQL:1999SQL:2003SQL:2008), но производители СУБД часто предлагают свои собственные «расширения» языка и, часто, не поддерживают стандарт полностью.

Data Manipulation Language (DML) (язык управления (манипулирования) данными) — это семейство компьютерных языков, используемых в компьютерных программах или пользователями баз данных для получения, вставки, удаления или изменения данных в базах данных.

На текущий момент наиболее популярным языком DML является SQL, используемый для получения и манипулирования данными в РСУБД. Другие формы DML использованы в IMS/DL1, базах данных CODASYL (таких как IDMS), и других.

Языки DML изначально использовались только компьютерными программами, но с появлением SQL стали также использоваться и людьми.

Функции языков DML определяются первым словом в предложении (часто называемом запросом), которое почти всегда является глаголом. В случае с SQL эти глаголы — «select» («выбрать»), «insert» («вставить»), «update» («обновить»), и «delete» («удалить»). Это превращает природу языка в ряд обязательных утверждений (команд) к базе данных.

Языки DML могут существенно различаться у различных производителей СУБД. Существует стандарт SQL, установленный ANSI, но производители СУБД часто предлагают свои собственные «расширения» языка.

Языки DML разделяются в основном на два типа:

Procedural DMLs — описывают действия над данными.

Declarative DMLs — описывают сами данные.

Data Control Language (DCL) — язык баз данных для осуществления административных функций, присваивающих или отменяющих право (привилегию) использовать базу данных, таблицы в базе данных, а также выполнять те или иные операторы SQL.

GRANT — применяется для присвоения привилегии;

REVOKE — применяется для отмены привилегии.

  1. Включающие языки СУБД. языки четвертого поколе­ния — 4GL (Forth Generation Language).

4GL – Fourth Generation Language – язык 4-го поколения, язык уровня 4GL базирующиеся на словарях языки программирования, позволяющие увеличить производительность разработки систем, когда программы пишутся так, что состоят из команд прикладного пакета (обычно написанного на языках 2GL и/или 3GL). Например, программы на языках СУБД (FoxBase, Paradox и др.). К 4GL относятся языки запросов (SQL) и отчетов (см. также1GL2GL, 3GL, 5GL, high-level language).

Как направление в области программного обеспечения языки четвертого поколения существуют с конца 70-х годов, и может показаться, что с концептуальной точки зрения они себя уже исчерпали. Однако, появление все новых языков этого класса, таких как Empress, filePro + , Thoroughbred IDOL-IV, UNIFACE, NOMAD, опровергает подобное предположение.

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

Empress - это большая система управления реляционными базами данных, занимающая около 8 Мб дискового пространства, гибкая и вместе с тем довольно сложная. С другой стороны fllePro + , основанный на меню пакет для работы с базами данных, очень простой в освоении и в работе. Thoroughbred IDOL-IV занимает промежуточное положение.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]