Отличие SQL от процедурных языков программирования
ОСНОВНЫЕ ПОНЯТИЯ И ОПРЕДЕЛЕНИЯ
1.1. Основные понятия
реляционных баз данных
Основой современных систем, использующих базы данных, является реляционная модель данных. В этой модели данные, представляющие информацию о предметной области, организованы в виде двумерных таблиц, называемых отношениями. На рис. 1 приведен пример такой таблицы-отношения и поясняются основные термины реляционной модели.
![]() | |||
![]() | |||
Код_студ | ![]() | Факультет | Курс |
Иванов | Физический | ||
Петров | Химический | ||
Сидоров | Физический | ||
Орлов | Химический | ||
Смирнов | Исторический | ![]() | |
Попов | Физический | ||
Кузнецов | Химический |
Рис. 1
•Отношение — это таблица, подобная приведенной на рис. 1, и состоящая из строк и столбцов. Верхняя строка таблицы-отношения называется заголовком отношения. Термины отношение и таблица обычно употребляются как синонимы, однако в языке SQL используется термин таблица.
· Строки таблицы – отношения называются кортежами; или - записями. Столбцы называются атрибутами. Термины: атрибут - столбец, колонка, поле - обычно используются как синонимы. Каждый атрибут имеет наименование (имя), которое должно быть уникальным в конкретной таблице-отношении; однако в разных таблицах имена атрибутов могут совпадать.
· Количество кортежей в таблице-отношении называется: кардинальным числом отношения; а количество атрибутов называется степенью отношения.
· Ключ, или первичный ключ отношения - это уникальный идентификатор строк (кортежей), т.е. такой атрибут (набор атрибутов), для которого в любой момент времени в отношении не существует строк с одинаковыми значениями этого атрибута (набора атрибутов). На рис. 1. таблицы ячейка с именем ключевого атрибута имеет нижнюю границу в виде двойной черты.
· Домен отношения – это совокупность значений, из которых могут выбираться значения конкретного атрибута, т.е. конкретный - набор имеющихся в таблице значений атрибута в любой момент времени должен быть подмножеством множества значений домена, на котором определен этот атрибут. В общем случае на одном и том же домене могут быть определены значения разных атрибутов. Важным является то, что домены вводят ограничения на операции сравнения значений различных атрибутов. Эти ограничения состоят в том, что корректным образом можно сравнивать между собой только значения атрибутов определенных на одном — и том же домене.
Отношения реляционной базы данных обладают следующими свойствами:
· в отношениях не должно быть кортежей дубликатов;
· кортежи отношений неупорядочены;
· атрибуты отношений также неупорядочены;
· Из этих свойств отношения вытекают следующие важные следствия.
· Из уникальности: кортежем следует, что в отношении всегда имеется атрибут или набор атрибутов, позволяющий идентифицировать кортеж; другими словами, в отношении всегда есть первичный ключ.
· Из неупорядоченности кортежей следует, во-первых, что в отношении не существует другого способа адресации кортежей, кроме адресации по ключу; во-вторых, что в отношении не существует таких понятий как первый кортеж, последний, предыдущий, следующий и т.п.
· Из неупорядоченности атрибутов следует, что единственным способом их адресации в запросах - является использование наименования атрибута.
Относительно свойства реляционного отношения, касающегося отсутствия кортежей - дубликатов, следует сделать важное замечание. В этом пункте SQL не полностью соответствует реляционной модели. А именно, в отношениях, являющихся результатами запросов, SQL допускает наличие одинаковых строк. Для их устранения в запросе используется ключевое слово DISTINCT (см. ниже).
Информация в реляционных базах данных, как правило, хранится не в одной таблице-отношении, а в нескольких. При создании нескольких таблиц взаимосвязанной информации появляется возможность выполнения более сложных операций с данными, т.е. более сложной обработки данных. Для работы со связанными данными из нескольких таблиц важным является понятие так называемых внешних ключей.
Внешним ключом таблицы называется атрибут или набор атрибутов этой таблицы, каждое значение которых в текущем состоянии таблицы всегда совпадает со значением атрибутов, являющихся ключом, в другой таблице. Внешние ключи используются для связывания значений атрибутов из разных таблиц. С помощью внешних ключей обеспечивается так называемая ссылочная целостность базы данных, т.е. согласованность данных, описывающих одни и те же объекты, но хранящихся в разных таблицах.
Отличие SQL от процедурных языков программирования
Язык SQL относится к классу непроцедурных языков программирования. В отличие от универсальных процедурных языков, которые также могут быть использованы для работы с базами данных, язык SQL ориентирован не на записи, а на множества.
Это означает следующее. В качестве входной информации для формулируемого на языке SQL запроса к базе данных используется множество кортежей-записей одной или нескольких таблиц - отношений. В результате выполнения запроса также образуется множество кортежей результирующей таблицы - отношения. Другими словами, в SQL результатом любой операции над отношениями также является - отношение. Запрос SQL задает не процедуру, т.е. последовательность действий, необходимых для получения результата, а условия, которым должны удовлетворять кортежи результирующего отношения, сформулированные в терминах входного отношения (входных отношений).