Материал: шпоры бд

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

27.Нормализация данных. Четвертая и пятая нормальные формы.

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

Процесс нормализации – постепенное приведение сущности к нормальным формам.

Сущность находится в 4-ой нормальной форме, если она находится в 3-й нормальной форме и между ее атрибутами отсутствуют многозначные зависимости.

Для приведения сущности к 4-й нормальной форме нужно создать новую сущность и поместить атрибуты с многозначной зависимостью в разные сущности. При этом связь между сущностями не устанавливается, поскольку после установления связи атрибуты с многозначной зависимостью путём миграции вновь окажутся в первой сущности.

После приведения к 4 норм. форме получим:

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

Процесс нормализации – постепенное приведение сущности к нормальным формам.

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

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

Приведение сущности к 5-ой нормальной форме выполняется достаточно редко, т. к. редко можно найти сущность с 3 или > возможными ключами.

Нормализация данных сопровождается «размножением» сущностей и связей. При большом объеме данных это приводит к снижению производительности. Поэтому на практике обычно ограничиваются к приведению сущностей к 3 нормальной форме.

28. Целостность и непротиворечивость данных.

Для пользователей информационной системы недостаточно, чтобы БД просто отражала объекты и процессы предметной области.

Важно, чтобы при выполнении любых операций с данными была обеспечена их целостность и непротиворечивость.

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

Целостность данных определяется:

  1. Целостностью таблиц

  2. Целостностью внешних ключей

  3. Целостностью типов данных

Целостность таблиц обеспечивается тем, что все таблицы м.б. снабжены первичными ключами, а поля, входящие в состав первичных ключей не должны принимать неопределенных значений (NULL - значений)

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

Целостностью типов данных обеспечивается тем, что создаются и интегрируются СУБД новые типы данных для тех доменов логической модели, для которых в физической модели отсутствуют эквивалентные типы данных.

29.Основные и дополнительные правила ссылочной целостности.

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

Ссылочную целостность могут нарушить след. операции над данными:

  1. Обновление первичного ключа в строке родительской таблицы

  2. Удаление строки в родительской таблице

  3. Вставка новой строки в дочернюю таблицу

  4. Обновление внешнего ключа в строке дочерней табицы

Для поддержания ссылочной целостности используются 2 стандартных правила:

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

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

Дополнительные правила поддержки ссылочной целостности являются:

  1. Установить в NULL (set null) – разрешить выполнение требуемой операции, однако все некорректные значения внешнего ключа изменить на null – значения

  2. Установить по умолчанию (set default) – разрешить значения требуемой операции, однако все некорректные значения внешнего ключа изменить на значения, принятые по умолчанию

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

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

30. Язык sql: основные команды манипулирования данными.

Язык SQL (Structured Query Language - структурированный язык запросов) представляет собой стандартный высокоуровневый язык описания данных и манипулирования ими в системах управления базами данных (СУБД), построенных на основе реляционной модели данных.

Язык SQL был разработан фирмой IBM в конце 70-х годов. Первый международный стандарт языка был принят международной стандартизирующей организацией ISO в 1989 г., а новый (более полный) - в 1992 г. В настоящее время все производители реляционных СУБД поддерживают с различной степенью соответствия стандарт SQL92.

Основные категории команд языка SQL:

· DDL, или язык определения данных

· DML, или язык манипулирования данными

· DQL, или язык запросов

· DCL, или язык управления данными

· Команды администрирования данных

· Команды управления транзакциями

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

В языке SQL существует три основных команды DML:INSERT, UPDATE, DELETE.

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

Непротиворечивость. Многие операции в БД вызывают несколько изменений одновременно. Если эти изменения выполнены не в полном объеме, целостность данных нарушается. Условия непротиворечивости данных обеспечивает механизм транзакций.

В СУДБ предусмотрены средства обеспечения целостности данных, что позволяет постоянно поддерживать СУБД в вирт. состоянии.

Обеспечение целостности данных основано на использовании механизма транзакций при выполнении различных операции с объектами БД.

Транзакция - последовательность выполнения операций в БД, которая рассматривается как некоторое неделимое действие, осмысленное с т. зр. пользователя.

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

Если все операции, составляющие транзакцию, успешно выполняются, то СУБД фиксирует в БД изменения, произведенные этой транзакцией.

В этом случае говорят, что транзакция подтверждается или фиксируется.

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

Т. о. операции с БД выполняются только в рамках транзакции, каждая из которых переводит БД из одного целостного состояния в другое.

Единственной структурой представления данных (как прикладных, так и системных) в реляционной базе данных (БД) является двумерная таблица.

В реляционной модели данных таблица обладает следующими основными свойствами:

· идентифицуруется уникальным именем;

· имеет конечное ненулевое количество столбцов;

· имеет конечное (возможно, нулевое) число строк;

· столбцы таблицы идентифицируются своими уникальными именами и номерами;

· содержимое всех ячеек столбца принадлежит одному типу данных;

· в общем случае ячейки таблицы могут оставаться пустыми, такое их состояние обозначается как NULL.

31. Язык sql: вставка новой записи в таблицу.

INSERT [LOW_PRIORITY | DELAYED] [IGNORE]

[INTO] tbl_name [(col_name,...)]

VALUES (expression,...),(...),...

либо

INSERT [LOW_PRIORITY | DELAYED] [IGNORE]

[INTO] tbl_name

SET col_name=expression, col_name=expression, ...

либо

INSERT [LOW_PRIORITY | DELAYED] [IGNORE]

[INTO] tbl_name [(col_name,...)]

SELECT ...

Общие положения работы команды INSERT:

tbl_name

- Задает имя таблицы, в которую будет вставлена новая строка. На момент запуска команды INSERT таблица с таким именем должна существовать в базе данных.

LOW_PRIORITY

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

DELAYED

- Если указан этот параметр, то после выполнения команды INSERT сценарий сразу же получит ответ от БД о успешной вставке новой записи, а запись будет вставлено только после завершения использования данной таблицы другим сценарием. Это может быть удобно, если требуется высокая скорость работы скрипта. Данный параметр работает только с таблицами типа ISAM и MyISAM. Следуем отметить, что если таблица, в которую происходит вставка записи, в данный момент не используется другими запросами, то команда INSERT DELAYED будет работать медленнее, нежели INSER. Так что рекомендуется использовать параметр DELAYED только при большой нагрузке на таблицу.

IGNORE

- Если некоторые поля таблицы имеют ключи PRIMARY или UNIQUE, и производится вставка новой строки, в которой эти поля имеют дублирующее значение, то действие команды аварийно завершается и выдается ошибка №1062 ("Duplicate entry 'val' for key N"). Если в команде INSERT указано ключевое слово IGNORE, то вставка записей не прерывается, а строки с дублирующими значениями просто не вставляются.

Если MySQL был сконфигурирован с использованием опции DONT_USE_DEFAULT_FIELDS, то команда INSERT будет генерировать ошибку, если явно не указать величины для всех столбцов, которые требуют значений не-NULL.

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

Для добавления новых записей в существующую таблицу при помощи команды INSERT существует три основных синтаксиса:

INSERT ... VALUES

- В этом случае в команде четко указывается порядок следования устанавливаемых полей и их значений.

INSERT INTO Поставщик (КодПоставщика, ИмяПоставщика, КодРегиона)

VALUES (123, 'ЗАО Магистраль', 101)

INSERT INTO Регион

VALUES (301, 'Украина', 'Крымская', 'Алушта', 'ул.Франко, 24',

NULL, '46-49-16')

GO

32. Язык sql: удаление записей из таблицы.

Синтаксис оператора DELETE FROM

DELETE [LOW_PRIORITY | QUICK] FROM table_name

[WHERE where_definition]

[ORDER BY ...]

[LIMIT rows]

или

DELETE [LOW_PRIORITY | QUICK] table_name[.*] [,table_name[.*] ...]

FROM table-references

[WHERE where_definition]

или

DELETE [LOW_PRIORITY | QUICK]

Источник: https://studfile.net/preview/16467496/