ТОР 5 статей: Методические подходы к анализу финансового состояния предприятия Проблема периодизации русской литературы ХХ века. Краткая характеристика второй половины ХХ века Характеристика шлифовальных кругов и ее маркировка Служебные части речи. Предлог. Союз. Частицы КАТЕГОРИИ:
|
Нормализация модели данныхОсновным критерием качества разработанной модели данных является ее соответствие так называемым нормальным формам (НФ). Основная цель нормализации – устранение избыточности данных. Коддом были определены три нормальные формы, которые включают одна другую. Другими словами, если модель данных соответствует 2НФ, то она одновременно соответствует и 1НФ. Соответствие 3НФ подразумевает соответствие 1НФ и 2НФ. Первая нормальная форма гласит: информация в каждом поле таблицы является неделимой и не может быть разбита на подгруппы. Пример информации, не соответствующей 1НФ:
Правильно:
Вторая нормальная форма гласит: таблица соответствует 1НФ и в таблице нет неключевых атрибутов, зависящих от части сложного (состоящего из нескольких столбцов) первичного ключа. Пример информации, не соответствующей 2НФ:
Предположим, что данная модель описывает структуру отделов по должностям. Первичный ключ (выделен серым цветом) является сложным и состоит из двух столбцов (номер отдела и наименование должности). В данном случае наименование отдела логически зависит только от номера отдела и не зависит от должности (одна и та же должность может существовать в разных отделах). Чтобы привести модель ко 2-й НФ, необходимо разбить эту таблицу на две логически взаимосвязанные:
Кстати, это пример случая, когда вторичный ключ (“№ отдела”) одновременно является частью первичного (“№ отдела”, “Должность”). Следствие: если в таблице первичный ключ состоит из одного столбца, то эта таблица автоматически соответствует 2НФ (при условии соответствия и 1НФ). Третья нормальная форма гласит: таблица соответствует первым двум НФ
Очевидно, что неключевые атрибуты “Наименование отдела” и “№ отдела” логически взаимосвязаны друг с другом, в то время как комбинация фамилия-отдел-оклад имеет смысл только в сочетании с табельным номером сотрудника (предположим, что в организации работают два Иванова-однофамильца в разных отделах). Решение может быть следующим:
Язык SQL Взаимодействие приложений и пользователей с реляционными СУБД осуществляется посредством специального языка структурированных запросов (Structured Query Language, сокращенно – SQL). SQL был разработан еще в начале 70-х годов ХХ века и представляет собой непроцедурный язык, состоящий из набора стандартных команд на английском языке. Термин “непроцедурный” означает, что изначально в языке отсутствуют алгоритмические конструкции (переменные, переходы по условию, циклы и т.д.) и возможность компоновать логически связанные команды в единые программные блоки (процедуры и функции). Язык SQL в настоящий момент стандартизован, последний действующий стандарт носит название SQL2. Практически все известные СУБД поддерживают требования стандарта SQL2 плюс вводят собственные расширения языка SQL, учитывающие особенности конкретной СУБД (в том числе и процедурные расширения). Общий принцип работы с СУБД посредством SQL можно кратко описать следующим образом: выдал команду – получил результат. Отдельные команды изначально никак логически не связаны друг с другом. Например, для извлечения данных из таблицы пользователь должен сформировать специальное предложение на языке SQL. СУБД обрабатывает запрос, извлекает нужные данные и возвращает их пользователю, после чего “забывает” об этом и переходит в состояние готовности выполнить любой очередной запрос SQL. “Общение” пользователя с СУБД осуществляется с помощью специальных утилит, которые обычно входят в комплект поставки СУБД. В частности, у Oracle эта утилита называется SQL*Plus, а у MS SQL Server – Query Analyzer. Любая из них способна как минимум принять от пользователя SQL-команду, отправить ее на выполнение ядру СУБД и отобразить на экране результат операции. Вот как выглядит экран Oracle SQL*Plus: Рис. 1. Интерактивная утилита В состав дистрибутива СУБД входят и API-библиотеки, позволяющие исполнять SQL-запросы из написанного пользователем программного кода. Команды SQL Как будет подробнее рассмотрено ниже, SQL позволяет не только извлекать данные, но и изменять их, добавлять новые данные, удалять данные, определять структуру данных, управлять пользователями, разграничивать доступ к данным и многое другое. Базовый вариант SQL содержит порядка 40 команд (часто еще называемых запросами или операторами) для выполнения различных действий внутри СУБД. Все SQL-команды начинаются с глагола (команды), определяющего, что именно нужно сделать. Далее с помощью внутренних ключевых слов задаются дополнительные условия выполнения. Например, команда на выборку табельных номеров сотрудников с зарплатой больше 500 у.е. из таблицы, содержащей список сотрудников некоей организации, выглядит следующим образом: SELECT TabNum FROM Employees WHERE Salary>500 где:
В общем случае структура каждой команды зависит от ее типа. В зависимости от вида производимых действий все команды разбиты на несколько групп. Команды определения структуры данных В состав DDL-группы входят команды, позволяющие определять внутреннюю структуру базы данных. Перед тем как сохранять данные в БД, необходимо создать в ней таблицы и, возможно, некоторые другие сопутствующие объекты (увеличивающие скорость поиска индексы, ограничения целостности и др.). Пример некоторых DDL-команд:
Команды манипулирования данными DML-группа содержит команды, позволяющие вносить, изменять, удалять Примеры DML-команд:
Команды управления транзакциями TCL-команды используются для управления изменениями данных, производимыми DML-командами. С их помощью несколько DML-команд могут быть объединены в единое логическое целое, называемое транзакцией. При этом все команды на изменение данных в рамках одной транзакции либо завершаются успешно, либо все могут быть отменены в случае возникновения каких-либо проблем с выполнением любой из них. Транзакции есть одно из средств поддержания целостности и непротиворечивости данных и являются одной из важнейших функций современных СУБД. TCL-команды:
Команды управления доступом (Data Control Language – DCL) DCL-команды управляют доступом пользователей к БД и отдельным объектам: Не нашли, что искали? Воспользуйтесь поиском:
|