Курсовая работа (т): Структура языка SQL

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

Структура языка SQL














Курсовая работа

Название дисциплины: Базы Данных

Тема: Структура языка SQL

Введение

На заре эпохи вычислительной техники при создании и использовании информационных систем проблема структуризации данных в каждом случае индивидуально. Придумывались различные надстройки дополнения и расширения для файловых систем. Но поскольку с ростом объемов обрабатываемой и хранимой информации в значительной степени увеличивалась, и сложность подобных решений они стали составлять значительную часть самих систем. И основы этих решений практически полностью повторялись от системы к системе. Поэтому стремление облегчить себе труд побудило искать общие принципы в частях ответственных за хранение и обработку сложно структурированной информации. Результатом этого стремления стали первые прототипы СУБД. В дальнейшем для ускорения и упрощения обращений к данным хранимым в базах данным были созданы специальные языки, наподобие языков программирования. Ярким примером такого языка служит SQL (Structured Query Language). Он получил широкое распространение во всем мире, многие компании специализирующиеся на создании СУБД используют его в своих продуктах. В его разработку, улучшение и расширение делают огромные денежные вливания, например корпорация IBM использовала его в своей системе System Application Architecture (SAA). США например в качестве федерального стандарта обработки информации (Federal Information Processing Standard - FIPS) избрали этот язык, поэтому чтобы получить разрешение на продажу СУБД на их территории, она должна удовлетворять требованиям федерального стандарта.

Стандартизация языка SQL началась практически сразу после появления первых коммерческих решений на его основе. В 1982 году комитету по базам данных Американского национального института стандартов (American National Standards Institute - ANSI) было поручено разработать спецификацию стандартного языка реляционных баз данных. Первый готовый документ был датирован 1985 годом. После ряда рассмотрений и согласований стандарт был принят ANSI в 1986 году и уже через год в 1987 был одобрен Международной организацией по стандартизации (International Standards Organization - ISO). Этот стандарт принято называть SQL/86. Также помимо официального стандарта SQL утвержденного Американским институтом национальных стандартов ANSI и Международной организацией по стандартам ISO. Существует множество других важных стандартов SQL например: SQL реализованный в системе DB2 компании IBM, X/OPEN для SQL в среде Unix. Стандарт X/OPEN незначительно пересмотренный в 1989 году, обычно называют SQL/89 или SQLI.

Различия между существующими диалектами SQL достаточно существенны и при переводе приложения под другую СУБД его очень часто приходится в значительной степени модифицировать. Эти проблемы в большинстве своем были устранены в стандарте SQL2. Язык SQL также оказывает значительно влияние на разработку других стандартов, например: Information Resource Dictionary - ISO и Remote Data Access - RDA. Также определенное влияние оказали научные круги, заинтересовавшие открывающими перспективами языка SQL выразившееся как в создании теоретических основ так и готовых практических решений. В результате всего этого начали появляться специализированные реализации языка SQL, например, такие как OnLine Aanalytical Processing (OLAP). Далее мы более подробно остановимся на структуре языка SQL.

Основная часть

. Предметная область

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

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

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

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

Частенько класс объектов называют сущностью. Соответственно можно сказать что сущность обладает атрибутами. Атрибут - это свойство объекта характеризующее его экземпляр. Сущность «Рабочий» может иметь следующие атрибуты «Имя», «Пол», «Возраст» и т.п. Из этого следует что сущность можно охарактеризовать как множество индивидуальных объектов одного типа (экземпляров). При этом значения всех этих объектов различны а набор их атрибутов одинаков.

1.1 Концепция баз данных

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

Жажда человечества к записи и сохранению информации на материальном носителе прослеживается с древнейших времен (камень, шкуры, береста затем папирус и бумага). Распространена фиксация данных совместно с их семантической составляющей (интерпретацией), благо естественные системы письменности позволяют сделать это в полном объеме. Промер того запись - «Заработная плата - 10000000» содержит данные «10000000» и их семантику (то бишь смысл) «Заработная плата».

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

Использование ЭВМ при обработке и хранении информации привело к еще большему разделению данных и интерпретирующей информации. На заре развития вычислительной техники ее возможности были ограничены, ввиду этого память информационных систем использовалась только для хранения данных. Ввиду этого описание хранимых данных (порядок, тип данных, длина) находилось непосредственно в программах. Которые "знали", что начиная с определенного байта адресного пространства внешней памяти 4 байта, содержат данные в числовом формате, связанные с заработной платой, а последующие 30 байт в текстовом формате - содержат фамилию рабочего.

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

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

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

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

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

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

1.2 Эффективность организации данных

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

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

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

ФИО_СТУДЕНТА,

АДРЕС,

ДАТА_РОЖДЕНИЯ,

НАИМНОВАНИЕ_ФАКУЛЬТЕА,

ФИО_ДЕКАНА,

НОМЕР_ГРУППЫ,

ФИО_КУРАТОРА.

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

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

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

СТУДЕНТЫ :

СТУД_ФИО_СТУДЕНТА,

СТУД_АДРЕС,

СТУД_ДАТА_РОЖДЕНИЯ,

СТУД_НОМЕР_ГРУППЫ.

ГРУППЫ :

ГРУП_НОМЕР_ГРУППЫ,

ГРУП_ФИО_КУРАТОРА,

ГРУП_ИДЕНТИФИКАТОР_ФАКУЛЬТЕА,

ГРУП_КОЛИЧЕСТВО_СТУДЕНТОВ.

ФАКУЛЬТЕТЫ :

ФАК_ИДЕНТИФИКАТОР_ФАКУЛЬТЕА,

ФАК_НАИМНОВАНИЕ_ФАКУЛЬТЕА,

ФАК_ФИО_ДЕКАНА,

ФАК_КОЛИЧЕСТВО_СТУДЕНТОВ;

Поле СТУД_НОМЕР_ГРУППЫ добавлено в файл СТУДЕНТЫ, а ГРУП_ИДЕНТИФИКАТОР_ФАКУЛЬТЕТА в файл ГРУППЫ для установки связей между файлами. Так например, по значению поля ГРУП_ИДЕНТИФИКАТОР_ФАКУЛЬТЕТА в файле ГРУППЫ можно определить к какому факультету относится та или иная группа. Иначе говоря, один файл ссылается на другой, поля же, использующиеся для ссылок называются ключами.

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

Однако теперь система должна "знать", что она работает с тремя информационно связанными файлами. Должна знать структуру и смысл каждого поля (например, что ГРУП_ ДЕНТИФИКАТОР_ ФАКУЛЬТЕТА и ФАК_ ИДЕНТИФИКАТОР_ФАКУЛЬТЕТА означают одно и то же), а также понимать, что в ряде случаев изменение информации в одном файле должно автоматически вызывать модификацию в других, чтобы их общее содержимое было согласованным.

Например, если на факультет принимается новый студент, то необходимо добавить запись в файл СТУДЕНТ, а также соответствующим образом изменить поля ФАК_КОЛИЧЕСТВО_СТУДЕНТОВ и ГРУП_КОЛИЧЕСТВО_СТУДЕНТОВ в файлах ФАКУЛЬТЕТЫ и ГРУППЫ. Иначе говоря данные во всех файлах должны быть согласованными.

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

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

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

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

Интеграция данных

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

Рассмотрим следующий пример для двух приложений "Учет кадров" и "Расчет заработной платы", для которых необходимы следующие сведения:

Источник: https://www.bibliofond.ru/detail.aspx?id=725043