Реляционные базы данных. Основные понятия, свойства отношений, модель данных, реляционные операции и вычисления

Главная > Лекция

Лекция БД Глава 2 РЕЛЯЦИОННЫЕ БАЗЫ ДАННЫХ 2.1. Термины и определения Развитие реляционных баз данных началось в конце 1960-х гг., когда появились первые работы, в которых обсуждались возмож-ности использования привычных для специалиста способов фор-мализованного представления данных в виде таблиц. Некоторые специалисты такой способ представления информации называли таблицами решений, другие - табличными алгоритмами. Теоре-тики реляционных баз данных табличный способ представления информации называли даталогическими моделями. Основоположником теории реляционных баз данных считается сотрудник фирмы IВM доктор Э. Ф. Кодд, опубликовавший 6 июня 1970 г. статью «Реляционная модель данных для больших коллек-тивных банков данных» «А Relational Model of Data for Large Shared Data Banks». В этой статье впервые и был использован термин «ре-ляционная модель данных», что и положило начало реляцион-ным базам данных. Теория реляционных баз данных, разработанная в 1970- х гг. в США доктором Э. Ф. Коддом, опиралась на математический аппарат те-ории множеств. Он доказал, что любой набор данных МОЖНО пред-ставить в виде двумерных таблиц особого вида, известных в матема-тике как отношения. От английского слова «relation» «отношение») и произошло название «реляционная модель данных». В настоящее время теоретическую основу проектирования баз данных (БД) состав-ляет математический аппарат реляционной алгебры (см. подразд. 1.2). Таким образом, реляционная БД представляет собой инфор-мацию (данные) об объектах, представленную в виде двумерных массивов - таблиц, объединенных определенными связями. База данных может состоять и из одной таблицы. Прежде чем присту-пить к дальнейшему изучению реляционных баз данных, рассмот-рим применяемые в теории и практике термины и определения. Таблица базы данных - двумерный массив, содержащий ин-формацию об одном классе объектов. В теории реляционной ал-гебры двумерный массив (таблицу) называют отношением. Таблица состоит из следующих элементов: поле, ячейка, за-пись (рис. 2.1). Поле содержит значения одного из признаков, характеризу-ющих объекты БД. Число полей в таблице соответствует числу при-знаков, характеризующих объекты БД. 22 Ячейка содержит конкретное значение соответствующего поля (признака одного объекта). Запись - строка таблицы. Она содержит значения всех призна-ков, характеризующих один объект. Число записей (строк) соот-ветствует числу объектов, данные о которых содержатся в таб-лице. В теории баз данных термину запись соответствует понятие кор-теж - последовательность атрибутов, связанных между собой от-ношением AND (И). В теории графов кортеж означает простую ветвь ориентированного графа - дерева. В табл. 2.1 приведены термины, применяемые в теории и прак-тике разработки реляционных баз данных. Одним из важных понятий, необходимых для построения оп-тимальной структуры реляционных баз данных, является понятие ключа, или ключевого поля. Ключом считается поле, значения которого однозначно опреде-ляют значения всех остальных полей в таблице. Например, поле «Номер паспорта», или «Идентификационный номер налогопла-тельщика (ИНН)», однозначно определяет характеристики любого физического лица (при составлении соответствующих таблиц баз данных ДЛЯ отделов кадров или бухгалтерии предприятия).
23

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

Уникальность ключа означает, что в любой момент времени таблица базы данных не может содержать никакие две различные записи, имеющие одинаковые значения ключевых полей. Выпол-нение условия уникальности является обязательным. Условие минимальности ключевых полей означает, что только сочетание значений выбранных полей отвечает требованиям уни-кальности записей таблицы базы данных. Это означает также, что ни одно из входящих в ключ полей не может быть исключено из него без нарушения уникальности. При формировании ключа таблицы базы данных, состоящего из нескольких полей, необходимо руководствоваться следующи-ми положениями: не следует включать в состав ключа поля таблицы, значения которых сами по себе однозначно идентифицируют записи в таб-лице. Например, не стоит создавать ключ, содержащий одновре-менно поля «номер паспорта» и «идентификационный номер на-логоплательщика», поскольку каждый из этих атрибутов может однозначно идентифицировать записи в таблице; нельзя включать в состав ключа неуникальное поле, т. е. поле, значения которого могут повторяться в таблице. Каждая таблица должна иметь, по крайней мере, один воз-можный ключ, который выбирается в качестве первичного ключа. Если в таблице существуют поля, значения каждого из которых однозначно определяют записи, то эти поля могут быть приняты в качестве альтернативных ключей. Например, если в качестве первичного ключа выбрать идентификационный номер нало-гоплательщика, то номер паспорта будет альтернативным ключом. 2.2. Нормализация таблиц реляционной базы данных Реляционная база данных представляет собой некоторое мно-жество таблиц, связанных между собой. Число таблиц в одном файле или одной базе данных зависит от многих факторов, основ-ными из которых являются: состав пользователей базы данных, обеспечение целостности информации (особенно важно в мно-гопользовательских информационных системах), обеспечение наименьшего объема требуемой памяти и мини-мального времени обработки данных. 24

Учет данных факторов при проектировании реляционных баз данных осуществляется методами нормализации таблиц и уста-HoBлeHиeM связей между ними.

Нормализация таблиц представляет собой способы разделения одной таблицы базы данных на несколько таблиц, в целом отве-чающих перечисленным выше требованиям. Нормализация таблицы представляет собой последовательное изменение структуры таблицы до тех пор, пока она не будет удов-летворять требованиям последней формы нормализации. Всего су-ществует шесть форм нормализации:
    первая нормальная форма (First Normal Form - 1NF); вторая нормальная форма (Second Normal Form - 2NF); третья нормальная форма (Third Normal Form - ЗNF); нормальная форма Бойса - Кодда (Brice - Codd Normal Form -BCNF); четвертая нормальная форма (Foиrth Normal Form - 4NF); пятая нормальная форма, или нормальная форма проекции--соединения (Fifth Normal Form - 5NF, или PJ/NF).
При описании нормальных форм используются следующие по-нятия: «функциональная зависимость между полями»; «полная функциональная зависимость между полями»; «многозначная функ-циональная зависимость между полями»; «транзитивная функцио-нальная зависимость между полями»; «взаимная независимость между полями». Функциональной зависимостью между полями А и В называется зависимость, при которой каждому значению А в любой момент времени соответствует единственное значение В из всех возмож-ных. Примером функциональной зависимости может служить связь между идентификационным номером налогоплательщика и но-мером его паспорта. Полной функциональной зависимостью между составным полем А и полем В называется зависимость, при которой поле В зависит функционально от поля А и не зависит функционально от любого подмножества поля А. Многозначная функциональная зависимость между полями опре-деляется следующим образом. Поле А многозначно определяет поле В, если для каждого значения поля А существует «хорошо опре-деленное множество» соответствующих значений поля В. Напри-Мер, если рассматривать таблицу успеваемости учащихся в шко-Ле, включающую в себя поля «Предмет» (поле А) и «Оценка» (поле В), то поле В имеет «хорошо определенное множество» до-пустимых значений: 1, 2, 3, 4, 5, т. е. для каждого значения поля «Предмет» существует многозначное «хорошо определенное мно-жество» значений поля «Оценка». Транзитивная функциональная зависимость между полями А и С Существует в том случае, если поле С функционально зависит от 25 поля В, а поле В функционально зависит от поля А; при этом не существует функциональной зависимости поля А от поля В. Взаимная независимость между полями определяется следующим образом. Несколько полей взаимно независимы, если ни одно из них не является функционально зависимым от другого. Первая нормальная форма. Таблица находится в первой нор-мальной форме тогда и только тогда, когда ни одно из полей не содержит более одного значения и любое ключевое поле не пусто. Первая нормальная форма является основой реляционной мо-дели данных. Любая таблица в реляционной базе данных автома-тически находится в первой нормальной форме, иное просто не-возможно по определению. В такой таблице не должно содержать-ся полей (признаков), которые можно было бы разделить на несколько полей (признаков). Ненормализованными, как правило, бывают таблицы, изна-чально не предназначенные для компьютерной обработки содержащейся в них информации. Например, в табл. 2.2 показан фраг-мент таблицы из справочника «Универсальные металлорежущие станки», изданного Экспериментальным научно- исследователь-ским институтом металлорежущих станков (ЭНИМС). Данная таблица является ненормализованной по следующим причинам. 1. Она содержит строки, имеющие в одной ячейке несколько значений одного поля: «Наибольший диаметр обработки, мм» и «Частота вращения шпинделя, об/мин». 2. Одно поле - «Габаритные размеры (длина х ширина х высо-та), мм» может быть разделено на три поля: «Длина, мм», «Ши-рина, мм» И «Высота, мм». Целесообразность такого разделения может быть обоснована необходимостью последующих расчетов площадей или занимаемых объемов. Исходная таблица должна быть преобразована в первую нор-мальную форму. Для этого необходимо: поля «Наибольший диаметр обработки, мм» и «Частота вра-щения шпинделя, об/мин» разделить на несколько полей в соот-ветствии с числом значений, содержащихся в одной ячейке;
26

Поле «Габаритные размеры (длина х ширина х высота), мм» , разделить на три поля: «Длина, мм», «Ширина, мм», «Высота, мм». Ключевым полем данной таблицы может быть поле «Модель станка» или «№ п/п» Вид нормальной формы имеет табл. 2.3. Рассмотрим еще один пример. На рис. 2.2 показан фрагмент бланка зачетно-экзаменационной ведомости, который, как и в предыдущем примере, изначально не предназначался для компь-ютерной обработки. Пусть мы хотим создать базу данных для автоматизированной обработки результатов зачетно-экзаменационной сессии в соответствии
27

с содержанием зачетно-экзаменационной ведомости. Для этого преобразуем содержание бланка в таблицы базы данных. Ис-ходя из необходимости соблюдения условий функциональной за-висимости между полями необходимо сформировать, как мини-мум, две таблицы (рис. 2.3) (ключевые поля в каждой таблице выделены полужирным шрифтом). В первой таблице содержатся результаты сдачи зачета (экзамена) каждым студентом по конк-ретному предмету. Во второй таблице содержатся результирующие итоги сдачи зачета (экзамена) конкретной группы студентов по конкретному предмету. В первой таблице ключевым является поле «ФИО студента», а во второй таблице - поле «Дисциплина». Таб-лицы должны быть связаны между собой по полям «Дисциплина» И «Шифр группы».

Представленные структуры таблиц полностью отвечает требо-ваниям первой нормальной формы, но характеризуется следу-ющими недостатками: добавление новых данных в таблицы требует ввода значений для всех полей; в каждую строку каждой таблицы необходимо вводить повто-ряющиеся значения полей «Дисциплина», «ФИО преподавателя», «Шифр группы». Следовательно, при таком составе таблиц и их структуре име-ется явная избыточность информации, что, естественно, потре-бует дополнительных объемов памяти. Чтобы избежать перечисленных недостатков, необходимо при-вести таблицы ко второй или третьей нормальной форме. Вторая нормальная форма. Таблица находится во второй нор-мальной форме, если она удовлетворяет требованиям первой нор-мальной формы и все ее поля, не входящие в первичный ключ, связаны полной функциональной зависимостью с первичным ключом. 28

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

Если же первичный ключ составной, то таблица необязатель-но находится во второй нормальной форме. Тогда ее необходимо разделить на две или более таблиц таким образом, чтобы первич-ный ключ однозначно идентифицировал значение в любом поле. Если в таблице имеется хотя бы одно поле, не зависящее от пер-вичного ключа, то в первичный ключ необходимо включить до-полнительные колонки. Если таких колонок нет, то необходимо добавить новую колонку. Исходя из данных условий, определяющих вторую нормаль-ную форму, можно сделать следующие выводы по характеристике составленных таблиц (см. рис. 2.3). В первой таблице нет прямой связи между ключевым полем и полем «ФИО преподавателя», поскольку зачет или экзамен по одному предмету могут принимать разные преподаватели. В табли-це существует полная функциональная зависимость только между всеми остальными полями и ключевым полем «Дисциплина». Аналогично во второй таблице нет прямой связи между ключе-вым полем и полем «ФИО преподавателя». Для оптимизации базы данных, в частности для уменьшения требуемого объема памяти из-за необходимости повторения в каждой записи значений полей «Дисциплина» И «ФИО препо-давателя», необходимо изменить структуру базы данных - пре-образовать исходные таблицы во вторую нормальную форму. Состав таблиц измененной структуры базы данных показан на рис. 2.4. Преобразованная структура базы данных состоит из шести таб-лиц, две из которых связаны между собой (ключевые поля в каж-дой таблице выделены полужирным шрифтом). Все таблицы удов-летворяют требованиям второй нормальной формы. Пятая и шестая таблицы имеют в полях повторяющиеся значе-ния, но, учитывая, что эти значения представляют собой целые числа вместо текстовых данных, общий объем требуемой памяти для хранения информации значительно меньше, чем в исходных таблицах (см. рис. 2.1). Кроме того, новая структура базы данных обеспечит возмож-ность заполнения таблиц различными специалистами (подразде-лениями управленческих служб). Дальнейшая оптимизация таб-лиц баз данных сводится к приведению их к третьей нормальной форме. Третья нормальная форма. Таблица находится в третьей нор-мальной форме, если она удовлетворяет определению второй нор-мальной формы и ни одно из ее не ключевых полей не зависит функционально от любого другого не ключевого поля. 29

Можно также сказать, что таблица находится в третьей нор-мальной форме, если она находится во второй нормальной форме и каждое не ключевое поле не транзитивно зависит от первичного ключа. Требование третьей нормальной формы сводится к тому, чтобы все не ключевые поля зависели только от первичного ключа и не зависели друг от друга. В соответствии с этими требованиями в составе таблиц базы данных (см. рис. 2.3) к третьей нормальной форме относятся пер-вая, вторая, третья и четвертая таблицы. Для приведения пятой и шестой таблиц к третьей нормальной форме создадим новую таблицу, содержащую информацию о со-ставе предметов, по которым проводятся экзамены или зачеты в группах студентов. В качестве ключа создадим поле «Счетчик», ус-танавливающий номер записи в таблице, так как каждая запись должна быть уникальна. 30

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

Нормальная форма Бойса - Кодда. Таблица находится в нор-мальной форме Бойса - Кодда только в том случае, если любая функциональная зависимость между ее полями сводится к пол-ной функциональной зависимости от возможного ключа. Согласно данному определению в структуре базы данных (см. рис. 2.4) все таблицы соответствуют требованиям нормальной формы Бойса - Кодда. Дальнейшая оптимизация таблиц баз данных должна сводить-ся к полной декомпозиции таблиц. Полной декомпозицией таблицы называют такую совокупность произвольного числа ее проекций, соединение которых полно-стью совпадает с содержимым таблицы. Проекцией называют копию таблицы, в которую не включены одна или несколько колонок новой таблицы. Четвертая нормальная форма. Четвертая нормальная форма яв-ляется частным случаем пятой нормальной формы, когда полная декомпозиция должна быть соединением двух проекций.
31

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

Пятая нормальная форма. Таблица находится в пятой нормаль-ной форме тогда и только тогда, когда в каждой ее полной деком-позиции все проекции содержат возможный ключ. Таблица, не имеющая ни одной полной декомпозиции, также находится в пятой нормальной форме. На практике оптимизация таблиц базы данных заканчивается третьей нормальной формой. Приведение таблиц к четвертой и пятой нормальным формам представляет, по нашему мнению, чисто теоретический интерес. Практически эта проблема решает-ся разработкой запросов на создание новой таблицы. 2.3. Проектирование связей между таблицами Процесс нормализации исходных таблиц баз данных позволяет создать оптимальную структуру информационной системы - раз-работать базу данных, требующую наименьших ресурсов памяти и, как следствие, обеспечивающую наименьшее время доступа к информации. В то же время разделение одной исходной таблицы на несколь-ко требует выполнения одного из важнейших условий проектиро-вания информационных систем - обеспечения целостности ин-формации в процессе эксплуатации базы данных. В приведенном выше примере нормализации исходных таб-лиц (см. рис. 2.3) из двух таблиц в конечном итоге мы получили семь таблиц, приведенных к третьей и четвертой нормальным формам. Как показывает практика, в реальном производстве и бизнесе базы данных представляют собой многопользовательские систе-мы. Это относится как к созданию и поддержанию данных в от-дельных таблицах, так и к использованию информации для при-нятия решений. В рассмотренном выше примере, в реально функционирующей системе управления учебным процессом в вузе или колледже, пер-воначальное формирование учебных групп производится прием-ными комиссиями при зачислении абитуриентов по результатам вступительных экзаменов. Дальнейшее поддержание информации о составе студентов в группах в вузах возлагается на деканаты, а в колледжах - на учебные отделения или соответствующие струк-туры. Состав учебных дисциплин по группам определяется други-ми службами или специалистами. Информация о преподаватель-ском составе формируется в отделах кадров. Результаты зачетных и экзаменационных сессий необходимы руководителям деканата и отделений, в том числе и для принятия решений о предоставлении 32 успевающим студентам стипендии или «снятии со стипен-дию» неуспевающих студентов. Любое изменение в любой из таблиц базы данных должно на-ходить адекватное изменение во всех других таблицах. Это и со-ставляет сущность обеспечения целостности базы данных. Прак-тически эта задача осуществляется установлением связей между таблицами базы данных. Сформулируем основные правила установления связей между таблицами. 1. Выбрать из двух связываемых таблиц главную и подчинен-ную. 2. В каждой таблице выбрать ключевое поле. Ключевое поле глав-ной таблицы называют первичным ключом. Ключевое поле подчи-ненной таблицы называют внешним ключом. 3. Связываемые поля таблиц должны иметь один тип данных. 4. Между таблицами устанавливаются следующие типы связей: «один к одному»; «один ко многим»; «многие ко многим»: связь «один к одному» устанавливается в случаях, когда конкретная строка главной таблицы в любой момент времени связана только с одной строкой подчиненной таблицы; связь «один ко многим» устанавливается в случаях, когда конкретная строка главной таблицы в любой момент времени
33 связана с несколькими строками подчиненной таблицы; при этом любая строка подчиненной таблицы связана только с од-ной строкой главной таблицы; связь «многие ко многим» устанавливается в случаях, ког-да конкретная строка главной таблицы в любой момент време-ни связана с несколькими строками подчиненной таблицы и в то же время одна строка подчиненной таблицы связана с не-сколькими строками главной таблицы. При изменении значения первичного ключа в главной таблице возможны следующие варианты поведения зависимой таблицы. Каскадирование (Cascading). При изменении данных первично-го ключа в главной таблице происходит изменение соответству-ющих данных внешнего ключа в зависимой таблице. Все имеющи-еся связи сохраняются. Ограничение (Restrict). При попытке изменить значение пер-вичного ключа, с которым связаны строки в зависимой таблице, изменения отвергаются. Допускается изменение лишь тех значе-ний первичного ключа, для которых не установлена связь с зави-симой таблицей. Установление (Relation). При изменении данных первичного ключа внешний ключ устанавливается в неопределенное значе-ние (NULL). Информация о принадлежности строк зависимой таблицы теряется. Если изменить несколько значений первичного ключа, то в зависимой таблице образуется несколько групп строк, которые ранее были связаны с измененными ключами. После это-го невозможно определить, какая строка с каким первичным клю-чом была связана. На рис. 2.6 показаны схемы связей меЖдУ таблицами базы дан-ных, представленной на рис. 2.5. Контрольные вопросы 1. Дайте определения следующим элементам таблицы баз данных: поле, ячейка, запись. 2. Что означают понятия «ключ», «ключевое поле»? 3. Какое ключевое поле называют первичным ключом, а какое - внешним ключом? 4. В чем состоит процесс нормализации таблиц базы данных? 5. Какие пять нормальных форм таблиц баз данных вы знаете? 6. Дайте определения следующим типам связей между таблицами базы данных: «один к одному»; «один ко многим»; «многие ко многим». логической модели реляционной базы данных в объекты реляционной базы данных. Для решения этой задачи проектировщику базы данных необходимо знать: а) какими объектами располагает реляционная база данных в принципе; б) какие объекты поддерживает конкретная СУБД, которая выбрана для реализации базы данных.

Таким образом, мы предполагаем, что решение о выборе СУБД уже принято руководителем ИТ-проекта, и согласовано с заказчиком базы данных, т.е. СУБД задана. Проектировщик базы данных должен ознакомиться с документацией, в которой описан диалект SQL, поддерживаемый выбранной СУБД. В настоящей лекции предполагается, что была выбрана СУБД Oracle 9i, хотя подавляющая часть материала охватывает объекты в любой промышленной реляционной СУБД.

Замечание. О выборе СУБД. Выбор СУБД относится к многокритериальной задаче выбора и в настоящем курсе не рассматривается. Следует помнить о том, что СУБД обычно поддерживает только одну модель данных: реляционную, иерархическую, сетевую, многомерную, объектно-ориентированную, объектно-реляционную. Исключение составляют небольшое число СУБД. Например, ADABAS, Software AG (сетевая и реляционная модели), или Oracle 9i, Oracle Inc. (реляционная и объектно-реляционная модели). Обычно при выборе СУБД при всех прочих равных возможностях стараются создать базу данных на СУБД, претендующей на промышленный стандарт.

Иерархия объектов реляционной базы данных прописана в стандартах по SQL, в частности, в стандарте SQL-92 , на который мы будем ориентироваться при изложении материала настоящей лекции. Этот стандарт поддерживается практически всеми современными СУБД, вплоть до настольных. Иерархия объектов реляционной базы данных показана на рисунке ниже.

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

Замечание. В контексте лекции атрибуты, колонки, столбцы и поля считаются синонимами. То же относится и к терминам "строка", "запись" и "кортеж".

Таблицы и представления, которые представляют физическое отражение логической структуры базы данных, собираются в схему. Несколько схем собираются в каталоги, которые затем могут быть сгруппированы в кластеры. Следует отметить, что ни одна из групп объектов стандарта SQL-92 не связана со структурами физического хранения информации в памяти компьютеров.


Рис. 8.1.

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

Основные объекты реляционной базы данных

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

Под кластером понимается группа каталогов, к которым можно обращаться через одно соединение с сервером базы данных (программная компонента СУБД).

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

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

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

Далее объекты реляционной базы данных будут вводиться в контексте реляционной СУБД Oracle 9i. Такой подход принят потому, что проектирование физической модели реляционной базы данных выполняется для конкретной среды ее реализации.

В Oracle 9i термин схема (Schema) используется для описания всех объектов базы данных, которые созданы некоторым пользователем. Для каждого нового пользователя автоматически создается новая схема.

К числу основных объектов реляционных баз данных относятся таблица, представление и пользователь.

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

Представление (View) - это поименованная динамически поддерживаемая СУБД выборка из одной или нескольких таблиц базы данных. Оператор выборки ограничивает видимые пользователем данные. Обычно СУБД гарантирует актуальность представления - его формирование производится каждый раз, когда представление используется. Иногда представления называют виртуальными таблицами .

Пользователь (User) - это объект, обладающий возможностью создавать или использовать другие объекты базы данных и запрашивать выполнение функций СУБД , таких как организация сеанса работы, изменение состояние базы данных и т. д.

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

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

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

Определенные пользователем типы данных ( User-defined data types ) представляют собой определенные пользователем типы атрибутов (домены), которые отличаются от поддерживаемых (встроенных) СУБД типов. Они определяются на основе встроенных типов. Определенные пользователем типы данных образуют ту часть среды СУБД, которая организована в соответствии с объектно-ориентированной парадигмой.

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

Индекс (Index) - это объект базы данных, создаваемый для повышения производительности выборки данных и контроля уникальности первичного ключа (если он задан для таблицы). Полностью индексные таблицы (index-organized tables) исполняют роль таблицы и индекса одновременно.

Табличное пространство или область ( Tablespace ) - это именованная часть базы данных, используемая для распределения памяти для таблиц и индексов. В Oracle 9i - это логическое имя физических файлов операционной системы. Все объекты базы данных, в которых хранятся данные, соответствуют некоторым табличным пространствам . Большинство объектов базы данных, в которых данные не хранятся, находятся в словаре данных, расположенном в табличном пространстве SYSTEM .

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

Секция (Partition) - это объект базы данных, который позволяет представить объект с данными в виде совокупности подобъектов, отнесенных к различным табличным пространствам . Таким образом, секционирование позволяет распределять очень большие таблицы на нескольких жестких дисках.

Для обработки данных специальным образом или для реализации поддержки ссылочной целостности базы данных используются объекты: хранимая процедура, функция, команда, триггер, таймер и пакет (Oracle). С помощью этих объектов базы данных можно выполнять так называемую построчную обработку (record processing) данных. С точки зрения приложений баз данных построчная обработка - это последовательная выборка данных по одной строке, ее обработка и переход к обработке следующей строки.

Данные объекты реляционной базы данных представляют собой программы, т.е. исполняемый код. Этого код обычно называют серверным кодом (server-side code) , поскольку он выполняется компьютером, на котором установлено ядро реляционной СУБД. Планирование и разработка такого кода является одной из задач проектировщика реляционной базы данных.

Хранимая процедура ( Stored procedure ) - это объект базы данных, представляющий поименованный набор команд SQL и/или операторов специализированных языков обработки программирования базы данных (например, SQLWindows или PL/SQL).

Функция (Function) - это объект базы данных, представляющий поименованный набор команд SQL и/или операторов специализированных языков обработки программирования базы данных, который при выполнении возвращает значение - результат вычислений.

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

Триггер (Trigger) - это объект базы данных, который представляет собой специальную хранимую процедуру. Эта процедура запускается автоматически, когда происходит связанное с триггером событие (например, до вставки строки в таблицу).

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

Пакет (Package) - это объект базы данных, который состоит из поименованного структурированного набора переменных, процедур и функций.

В распределенных реляционных СУБД имеются специальные объекты: снимок и связь базы данных.

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

Связь базы данных (Database Link) или связь с удаленной базой данных - это объект базы данных, который позволяет обратиться к объектам удаленной базы данных. Имя связи базы данных, грубо говоря, можно представить как ссылку на параметры доступа к удаленной базы данных.

Для эффективного управления разграничением доступа к данным в Oracle поддерживает объект роль.

Роль (Role) - объект базы данных, представляющий собой поименованную совокупность привилегий, которые могут назначаться пользователям, категориям пользователей или другим ролям.

Базовые понятия реляционных баз данных

Основными понятиями реляционных баз данных являются:

    тип данных,

  • первичный ключ и

    отношение.

Для начала покажем смысл этих понятий на примере отношения СОТРУДНИКИ,

Рисунок 4.1. Иерархия понятий в базе данных СОТРУДНИКИ

Тип данных

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

Домен

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

Схема отношения, схема базы данных

Схема отношения - это именованное множество пар имя атрибута , имя домена (или типа, если понятие домена не поддерживается). Степень, или арность схемы отношения,- мощность этого множества. Степень отношения СОТРУДНИКИ равна четырем, то есть оно является 4-арным. Если все атрибуты одного отношения определены на разных доменах, осмысленно использовать для именования атрибутов имена соответствующих доменов (не забывая, конечно, о том, что это является всего лишь удобным способом именования и не устраняет различия между понятиями домена и атрибута). Схема БД (в структурном смысле) - это набор именованных схем отношений.

Кортеж, отношение

Кортеж, соответствующий данной схеме отношения, - это множество пар имя атрибута, значение , которое содержит одно вхождение каждого имени атрибута, принадлежащего схеме отношения. Значение является допустимым значением домена данного атрибута (или типа данных, если понятие домена не поддерживается). Тем самым, степень, или арность кортежа, т.е. число элементов в нем, совпадает с арностью соответствующей схемы отношения. Попросту говоря, кортеж - это набор именованных значений заданного типа. Отношение - это множество кортежей, соответствующих одной схеме отношения. Иногда, чтобы не путаться, говорят отношение-схема и отношение-экземпляр, иногда схему отношения называют заголовком отношения, а отношение как набор кортежей - телом отношения. На самом деле, понятие схемы отношения ближе всего к понятию структурного типа данных в языках программирования. Было бы вполне логично разрешать отдельно определять схему отношения, а затем - одно или несколько отношений с данной схемой. Однако в реляционных базах данных это не принято. Имя схемы отношения в таких базах данных всегда совпадает с именем соответствующего отношения-экземпляра. В классических реляционных базах данных после определения схемы базы данных изменяются только отношения-экземпляры. В них могут появляться новые и удаляться или модифицироваться существующие кортежи. Однако во многих реализациях допускается и изменение схемы базы данных: определение новых и изменение существующих схем отношения. Это принято называть эволюцией схемы базы данных. Обычным житейским представлением отношения является таблица, заголовком которой является схема отношения, а строками - кортежи отношения-экземпляра; в этом случае имена атрибутов именуют столбцы этой таблицы. Поэтому иногда говорят столбец таблицы, имея в виду атрибут отношения. Когда мы перейдем к рассмотрению практических вопросов организации реляционных баз данных и средств управления, мы будем использовать эту житейскую терминологию. Этой терминологии придерживаются в большинстве коммерческих реляционных СУБД. Реляционная база данных - это набор отношений, имена которых совпадают с именами схем отношений в схеме БД. Как видно, основные структурные понятия реляционной модели данных (если не считать понятия домена) имеют очень простую интуитивную интерпретацию, хотя в теории реляционных БД все они определяются абсолютно формально и точно.

Фундаментальные свойства отношений

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

Отсутствие кортежей-дубликатов

То свойство, что отношения не содержат кортежей-дубликатов, следует из определения отношения как множества кортежей. В классической теории множеств, по определению, каждое множество состоит из различных элементов. Из этого свойства вытекает наличие у каждого отношения так называемого первичного ключа - набора атрибутов, значения которых однозначно определяют кортеж отношения. Для каждого отношения, по крайней мере, полный набор его атрибутов обладает этим свойством. Однако при формальном определении первичного ключа требуется обеспечение его минимальности, т.е. в набор атрибутов первичного ключа не должны входить такие атрибуты, которые можно отбросить без ущерба для основного свойства,- однозначно определять кортеж. Понятие первичного ключа является исключительно важным в связи с понятием целостности баз данных. Забегая вперед, заметим, что во многих практических реализациях РСУБД допускается нарушение свойства уникальности кортежей для промежуточных отношений, порождаемых неявно при выполнении запросов. Такие отношения являются не множествами, а мультимножествами, что в ряде случаев позволяет добиться определенных преимуществ, но иногда приводит к серьезным проблемам.

Отсутствие упорядоченности кортежей

Свойство отсутствия упорядоченности кортежей отношения также является следствием определения отношения-экземпляра как множества кортежей. Отсутствие требования к поддержанию порядка на множестве кортежей отношения дает дополнительную гибкость СУБД при хранении баз данных во внешней памяти и при выполнении запросов к базе данных. Это не противоречит тому, что при формулировании запроса к БД, например, на языке SQL можно потребовать сортировки результирующей таблицы в соответствии со значениями некоторых столбцов. Такой результат, это вообще говоря, не отношение, а некоторый упорядоченный список кортежей.

Отсутствие упорядоченности атрибутов

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

Атомарность значений атрибутов

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

Рисунок 4.2.1. Отношение ОТДЕЛЫ в ненормализованной форме

Рисунок 4.2.2. Нормализованное отношение СОТРУДНИКИ

Можно сказать, что здесь мы имеем бинарное отношение, значениями атрибута ОТДЕЛЫ которого являются отношения. Заметим, что исходное отношение СОТРУДНИКИ является нормализованным вариантом отношения ОТДЕЛЫ (см. Рис. 4.2.2). Нормализованные отношения составляют основу классического реляционного подхода к организации баз данных. Они обладают некоторыми ограничениями (не любую информацию удобно представлять в виде плоских таблиц), но существенно упрощают манипулирование данными. Рассмотрим, например, два идентичных оператора занесения кортежа:

Зачислить сотрудника Кузнецова (пропуск номер 3000, зарплата 115,000) в отдел номер 320 и Зачислить сотрудника Кузнецова (пропуск номер 3000, зарплата 115,000) в отдел номер 310. Если информация о сотрудниках представлена в виде отношения СОТРУДНИКИ, оба оператора будут выполняться одинаково (вставить кортеж в отношение СОТРУДНИКИ). Если же работать с ненормализованным отношением ОТДЕЛЫ, то первый оператор выразится в занесение кортежа, а второй - в добавление информации о Кузнецове в множественное значение атрибута ОТДЕЛ кортежа с первичным ключом 310.

Реляционная модель данных

Когда в предыдущих разделах мы говорили об основных понятиях реляционных баз данных, мы не опирались на какую-либо конкретную реализацию. Эти рассуждения в равной степени относились к любой системе, при построении которой использовался реляционный подход. Другими словами, мы использовали понятия так называемой реляционной модели данных. Модель данных описывает некоторый набор родовых понятий и признаков, которыми должны обладать все конкретные СУБД и управляемые ими базы данных, если они основываются на этой модели. Наличие модели данных позволяет сравнивать конкретные реализации, используя один общий язык. Хотя понятие модели данных является общим, и можно говорить о иерархической, сетевой, некоторой семантической и т.д. моделях данных, нужно отметить, что это понятие было введено в обиход применительно к реляционным системам и наиболее эффективно используется именно в этом контексте. Попытки прямолинейного применения аналогичных моделей к дореляционным организациям показывают, что реляционная модель слишком велика для них, а для постреляционных организаций она оказывается мала.

Общая характеристика

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

Целостность сущности и ссылок

Наконец, в целостной части реляционной модели данных фиксируются два базовых требования целостности, которые должны поддерживаться в любой реляционной СУБД. Первое требование называется требованием целостности сущностей. Объекту или сущности реального мира в реляционных БД соответствуют кортежи отношений. Конкретно требование состоит в том, что любой кортеж любого отношения должен быть отличим от любого другого кортежа этого отношения, т.е. другими словами, любое отношение должно обладать первичным ключом. Как мы видели в предыдущем разделе, это требование автоматически удовлетворяется, если в системе не нарушаются базовые свойства отношений. Второе требование называется требованием целостности по ссылкам и является несколько более сложным. Очевидно, что при соблюдении нормализованности отношений сложные сущности реального мира представляются в реляционной БД в виде нескольких кортежей нескольких отношений. Например, представим, что нам требуется представить в реляционной базе данных сущность ОТДЕЛ с атрибутами ОТД_НОМЕР (номер отдела), ОТД_КОЛ (количество сотрудников) и ОТД_СОТР (набор сотрудников отдела). Для каждого сотрудника нужно хранить СОТР_НОМЕР (номер сотрудника), СОТР_ИМЯ (имя сотрудника) и СОТР_ЗАРП (заработная плата сотрудника). Как мы вскоре увидим, при правильном проектировании соответствующей БД в ней появятся два отношения: ОТДЕЛЫ (ОТД_НОМЕР, ОТД_КОЛ) (первичный ключ - ОТД_НОМЕР) и СОТРУДНИКИ (СОТР_НОМЕР, СОТР_ИМЯ, СОТР_ЗАРП, СОТР_ОТД_НОМ) (первичный ключ - СОТР_НОМЕР). Как видно, атрибут СОТР_ОТД_НОМ появляется в отношении СОТРУДНИКИ не потому, что номер отдела является собственным свойством сотрудника, а лишь для того, чтобы иметь возможность восстановить при необходимости полную сущность ОТДЕЛ. Значение атрибута СОТР_ОТД_НОМ в любом кортеже отношения СОТРУДНИКИ должно соответствовать значению атрибута ОТД_НОМ в некотором кортеже отношения ОТДЕЛЫ. Атрибут такого рода называется внешним ключом, поскольку его значения однозначно характеризуют сущности, представленные кортежами некоторого другого отношения (т.е. задают значения их первичного ключа). Говорят, что отношение, в котором определен внешний ключ, ссылается на соответствующее отношение, в котором такой же атрибут является первичным ключом. Требование целостности по ссылкам, или требование внешнего ключа, состоит в том, что для каждого значения внешнего ключа, появляющего в ссылающемся отношении, в отношении, на которое ведет ссылка, должен найтись кортеж с таким же значением первичного ключа, либо значение внешнего ключа должно быть полностью неопределенным (т.е. ни на что не указывать). Для нашего примера это означает, что если для сотрудника указан номер отдела, то этот отдел должен существовать. Ограничения целостности сущности и по ссылкам должны поддерживаться СУБД. Для соблюдения целостности сущности достаточно гарантировать отсутствие в любом отношении кортежей с одним и тем же значением первичного ключа. С целостностью по ссылкам дела обстоят несколько более сложно. Понятно, что при обновлении ссылающегося отношения (вставке новых кортежей или модификации значения внешнего ключа в существующих кортежах) достаточно следить за тем, чтобы не появлялись некорректные значения внешнего ключа. Но как быть при удалении кортежа из отношения, на которое ведет ссылка? Здесь существуют три подхода, каждый из которых поддерживает целостность по ссылкам. Первый подход заключается в том, что запрещается производить удаление кортежа, на который существуют ссылки (т.е. сначала нужно либо удалить ссылающиеся кортежи, либо соответствующим образом изменить значения их внешнего ключа). При втором подходе при удалении кортежа, на который имеются ссылки, во всех ссылающихся кортежах значение внешнего ключа автоматически становится неопределенным. Наконец, третий подход (каскадное удаление) состоит в том, что при удалении кортежа из отношения, на которое ведет ссылка, из ссылающегося отношения автоматически удаляются все ссылающиеся кортежи. В развитых реляционных СУБД обычно можно выбрать способ поддержания целостности по ссылкам для каждой отдельной ситуации определения внешнего ключа. Конечно, для принятия такого решения необходимо анализировать требования конкретной прикладной области.

Терминология и базовые понятия реляционных БД

Почти все программные продукты, созданные с конца 70-х г. основаны на реляционном подходе:

1. Данные представлены в двухмерных таблицах, организованных по определенным правилам.

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

Реляционные базы данных – единое хранилище данных, которое однозначно определяется, а затем используется многими пользователями. Изменение и добавление данных в БД не влияет на приложение.

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

Базовые понятия реляционных баз данных:

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

2. Реляционная модель основана на математическом понятии отношение , физическим представлением которого является таблица, то есть отношением можно назвать плоскую таблицу, состоящую из столбцов и строк.

3. Кортеж , соответствующий данной схеме отношения, - это множество пар {имя атрибута, значение}, которое содержит одно вхождение каждого имени атрибута, принадлежащего схеме отношения.

4. Атрибут – столбец таблицы, поле файла БД. Значения атрибутов в таблице-отношении могут иметь только один определенный вид функциональной зависимости друг от друга, а именно все значения в произвольном кортеже должны по отдельности зависеть только от значений столбца или группы столбцов - одних для всего отношения. Такой столбец или группа столбцов называются ключевыми, а значения атрибутов в них - ключами.

5. Домен – набор допустимых значений одного или нескольких атрибутов.

6. Степень отношения определяется количеством атрибутов, которое оно содержит. Отношение с одним атрибутом имеет степень 1 и называется унарным отношением. Отношение с двумя атрибутами называется бинарным, отношение с тремя атрибутами – тернарным, а для отношения с большим количеством атрибутов используется термин n-арное.

7. Кардинальность отношений – количество кортежей, которое содержится в отношении. Эта характеристика меняется при каждом удалении или добавлении кортежей.

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

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

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

11. Потенциальный ключ – суперключ, который не содержит подмножества, также являющегося суперключем данного отношения. Потенциальный ключ К для данного отношения R обладает двумя свойствами:

· Уникальность. В каждом кортеже отношения R значение ключа К единственным образом идентифицирует этот кортеж.

· Неприводимость. Никакое допустимое подмножество ключа К не обладает свойством уникальности.

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

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

14. Отношение - это множество кортежей, соответствующих одной схеме отношения.

15. Базовое отношение – отношение, кортежи которого физически хранятся в базе данных.

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

17. Фундаментальные свойства отношений:

· Отношение имеет имя, которое отличается от имен всех других отношений в реляционной схеме.

· Каждая ячейка отношения содержит только одно элементарное (неделимое) значение.

· Каждый атрибут имеет уникальное имя.

· Значения атрибута берутся из одного и того же домена.

· Каждый кортеж является уникальным, т.е. дубликатов кортежей быть не может.

· Порядок следования атрибутов не имеет значения.

· Теоретически порядок следования кортежей в отношении не имеет значения. (Но практически этот порядок может существенно повлиять на эффективность доступа к ним.)

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

1. Структура модели основывается на нормализованных отношениях с учетом базовых понятий реляционной БД.

2. В манипуляционной части модели утверждаются два фундаментальных механизма манипулирования реляционными БД - реляционная алгебра и реляционное исчисление.

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

Раздел 3. «Базы данных»

1. Информационное обеспечение автоматизированных систем.

Информационное обеспече’ние автоматизированной системы (АС) - совокупность форм документов, классификаторов, нормативной базы и реализованных решений по объемам, размещению и формам существования информации, применяемой в АС при ее функционировании

По ГОСТ 24.205-80 описание информационного обеспечения АСУ должно состоять из следующих разделов:

принципы организации информационного обеспечения;

организация сбора и передачи информации;

построение системы классификации и кодирования;

организация внутримашинной информационной базы;

организация внемашинной информационной базы.

Термин «информационное обеспечение» широко используется в разном контексте, применительно к разным функциям и видам деятельности, трактуется неоднозначно и является дискуссионным. Кроме обозначения этим термином информационных структур, под этим нередко понимается процесспредоставления необходимой информации для нужд определенного социально-экономического объекта.

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

Информационное обеспечение автоматизированной системы – это совокупность форм документов, классификаторов, нормативной базы и реализованных решений по объемам, размещению и формам существования информации, применяемой в автоматизированной системе при ее функционировании (ГОСТ 34.003-90 ("Автоматизированные системы. Термины и определения")).

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



Данная подсистема предназначена для своевременного представления информации, принятия управленческих решений. ИО предприятия представляет собой информационную модель данного объекта. Для создания ИО нужно ясное понимание целей и задач, функций системы управления; совершение системы документооборота; выявление движения информации от момента ее возникновения и до ее использования на различных уровнях управления; наличие и использование классификации и кодирования информации; создание массивов информации на машинных носителях; владение методологией создания информационных моделей .

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

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

ИО автоматизированных информационных систем состоит из внемашинного и внутри машинного ИО .

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

Внутримашинное ИО содержит массивы данных на машинных носителях и программу организации доступа к этим данным.

Внемашинное ИО - информация, которая воспринимается человеком без каких-либо технических средств (документы).

Под классификацией понимается условное расчленение множества элементов информации на подмножества на основании сходства или различия по какому-то признаку.

2. СУБД и приложения баз данных.

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

Современная СУБД состоит из:

ядра - части программ СУБД, отвечающих за управление данными в памяти и журнализацию; Процессора языка базы данных, обеспечивающего оптимизацию запросов на извлечение и изменение данных, и создание БД;

Подсистемы поддержки времени исполнения, интерпретирующую программы манипуляции данными, которые создают интерфейс пользователя СУБД;

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

Основными функциями СУБД являются

Управление данными, хранящимися во внешней памяти;

Управление данными, загруженными в оперативную память с использованием дискового кэша; Журнализация событий и изменений, резервное копирование и восстановление БД после сбоев;

Поддержка языков обращения с БД (язык определения данных, язык манипулирования данными);

Классификации СУБД

Существует несколько признаков, по которым можно классифицировать СУБД.

СУБД по модели данных бывают:

Иерархические СУБД, Сетевые СУБД, Реляционные СУБД, Объектно-ориентированные СУБД, Объектно-реляционные СУБД. В настоящее время в серьезных проекта используются 2 последних типа. СУБД по степени распределённости. Локальные (СУБД размещается только на одном компьютере) Распределённые (части СУБД могут размещаться на 2-х и более компьютерах).

Приложений баз данных

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

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

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

Механизм получения и отправки данных обеспечивает соединение с источником данных (часто опосредованно). Он должен "знать", куда ему обращаться и какой протокол обмена использовать для обеспечения двунаправленного потока данных.

Механизм внутреннего представления данных является ядром приложения баз данных. Он обеспечивает хранение полученных данных в приложении и предоставляет их по запросу других частей приложения.

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

Бизнес-логика приложения представляет собой набор реализованных в программе алгоритмов обработки данных.

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

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

3. Современная концепция реляционных БД.

Основные концепции реляционных баз данных

Прежде чем подробно рассматривать каждый из этих шагов, остановимся на основных концепциях реляционных баз данных. В реляционной теории одним из главных является понятие отношения. Математически отношение определяется следующим образом. Пусть даны n множеств D1,D2,...,Dn. Тогда R есть отношение над этими множествами, если R есть множество упорядоченных наборов вида , где d1 - элемент из D1, d2 - элемент из D2, ..., dn - элемент из Dn. При этом наборы вида называются кортежами, а множества D1,D2,...,Dn - доменами. Каждый кортеж состоит из элементов, выбираемых из своих доменов. Эти элементы называются атрибутами, а их значения - значениями атрибутов, рис.9-а представляет нам графическое изображение отношения с разных точек зрения.

Легко заметить, что отношение является отражением некоторой сущности реального мира (в данном случае - сущности “деталь”) и с точки зрения обработки данных представляет собой таблицу. Кортеж представляет собой строку в таблице, или, что то же самое, запись. Атрибут же является столбцом таблицы, или - полем в записи. Домен же представляется неким обобщенным типом, который может быть источником для типов полей в записи. Таким образом, следующие тройки терминов являются эквивалентными:

отношение, таблица

кортеж, строка, запись

атрибут, столбец, поле.

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

Атрибут (или набор атрибутов), который может быть использован для однозначной идентификации конкретного кортежа (строки, записи), называется первичным ключом. Первичный ключ не должен иметь дополнительных атрибутов. Это значит, что если из первичного ключа исключить произвольный атрибут, оставшихся атрибутов будет недостаточно для однозначной идентификации отдельных кортежей. Для ускорения доступа по первичному ключу во всех системах управления базами данных (СУБД) имеется механизм, называемый индексированием. Грубо говоря, индекс представляет собой инвертированный древовидный список, указывающий на истинное местоположение записи для каждого первичного ключа. Естественно, в разных СУБД индексы реализованы по-разному (в локальных СУБД - как правило, в виде отдельных файлов), однако, принципы их организации одинаковы.

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

Для поддержания ссылочной целостности данных во многих СУБД имеется механизм так называемых внешних ключей. Смысл этого механизма состоит в том, что некоему атрибуту (или группе атрибутов) одного отношения назначается ссылка на первичный ключ другого отношения; тем самым закрепляются связи подчиненности между этими отношениями. При этом отношение, на первичный ключ которого ссылается внешний ключ другого отношения, называется master-отношением, или главным отношением; а отношение, от которого исходит ссылка, называется detail-отношением, или подчиненным отношением. После назначения такой ссылки СУБД имеет возможность автоматически отслеживать вопросы “ненарушения“ связей между отношениями, а именно:

если Вы попытаетесь вставить в подчиненную таблицу запись, для внешнего ключа которой не существует соответствия в главной таблице (например, там нет еще записи с таким первичным ключом), СУБД сгенерирует ошибку;

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

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

ДОПОЛНЕНИЕ

Базовые понятия реляционных баз данных

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

Тип данных

Понятие тип данных в реляционной модели данных полностью адекватно понятию типа данных в языках программирования. Обычно в современных реляционных БД допускается хранение символьных, числовых данных, битовых строк, специализированных числовых данных (таких как "деньги"), а также специальных "темпоральных" данных (дата, время, временной интервал). Достаточно активно развивается подход к расширению возможностей реляционных систем абстрактными типами данных (соответствующими возможностями обладают, например, системы семейства Ingres/Postgres). В нашем примере мы имеем дело с данными трех типов: строки символов, целые числа и "деньги".

Домен

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

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

Следует отметить также семантическую нагрузку понятия домена: данные считаются сравнимыми только в том случае, когда они относятся к одному домену. В нашем примере значения доменов "Номера пропусков" и "Номера групп" относятся к типу целых чисел, но не являются сравнимыми. Заметим, что в большинстве реляционных СУБД понятие домена не используется, хотя в Oracle V.7 оно уже поддерживается.



Понравилась статья? Поделитесь с друзьями!