Теория реляционных баз данных: нормализация, отношения и объединения. Основные понятия теории реляционных систем баз данных Пересечение и вычитание


МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ

ФГБОУ ВПО КУРГАНСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ

Кафедра алгебры, геометрии и методики преподавания математики

КУРСОВАЯ РАБОТА

Дисциплина Программное обеспечение на ЭВМ

Теория реляционных баз данных

Студент группы 5940 С

Специальность Математика

Фёдорова Е. А.

Руководитель

Ст. преподаватель: Тетюшева С.Г.

Курган 2013

Введение

Глава 1. Теория реляционных баз данных

1 Реляционные базы данных

2 Понятие таблицы (отношения), поля, записи, домена, ключа (первичного, составного первичного и внешнего)

3 Имена и типы полей

4 Свойства полей в зависимости от типа данных полей

5 Основные требования к реляционной таблице

6 Метаданные

Глава 2. Таблицы. Индексы

1 Понятие главной и дочерней таблиц

2 Виды отношений между таблицами

3 Понятие ссылочной целостности

5 Сортировка записей

Заключение

Введение

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

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

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

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

Глава 1. Теория реляционных баз данных

.1 Реляционные базы данных

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

Базы данных с табличной формой организации называются реляционными БД.

В чем же их преимущество?

Главное достоинство таблиц - в их понятности. С табличной информацией мы имеем дело практически каждый день. Загляните, например в свой дневник: расписание занятий там представлено в виде таблицы, ведомость с оценками за четверти имеет табличный вид. Когда мы приходим на вокзал, смотрим расписание электричек. Какой вид оно имеет? Это таблица! А еще есть таблица футбольного чемпионата. И журнал учителя, куда он ставит вам оценки - тоже таблица.

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

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

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

Каждое поле таблицы имеет имя. Например, в таблице «Игрушки» имена полей такие: НАЗВАНИЕ, МАТЕРИАЛ, ЦВЕТ, КОЛИЧЕСТВО.

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

Например, одна запись о каком либо объекте - это информация об одной игрушке.

1.2 Понятие таблицы (отношения), поля, записи, домена, ключа (первичного, составного первичного и внешнего)

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

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

Домен имеет уникальное имя (в пределах базы данных).

Домен определен на некотором простом типе данных или на другом домене.

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

Домен несет определенную смысловую нагрузку.

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

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

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

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

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

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

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

Внешний ключ (foreign key) - ключевой элемент подчиненной (внешней, дочерней) таблицы, значение которого совпадает со значением первичного ключа главной (родительской) таблиц.

.3 Имена и типы полей

Каждое поле в таблице должно иметь уникальное имя, удовлетворяющее соглашениям об именах объектов в Access. Оно является комбинацией из букв, цифр, пробелов и специальных символов, за исключением точки (.), восклицательного знака ("), надстрочного знака (") и квадратных скобок (). Имя не может начинаться с пробела и содержать управляющие символы с кодами ASCII от 00 до 31. Максимальная длина имени - 64 символа.

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

Текстовый - тип данных по умолчанию. Текст или цифры, не участвующие в расчетах. Число символов в поле не должно превышать 255. Максимальное число символов, которое можно ввести в поле, задается в свойстве Размер поля . Пустые символы в неиспользуемой части поля не сохраняются.

Поле MEMO Длительный текст, например, некоторое описание или примечание. Максимальная длина - 65 535 символов.

Числовой . Числовые данные, используемые в математических вычислениях. Конкретные варианты числового типа и их длина задаются в свойстве Размер поля . Поле может иметь размер 1, 2, 4 или 8 байт (16 байт- только если для свойства Размер поля задано значение Код репликации ). Для проведения денежных расчетов определен другой тип данных - Денежный

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

Дата/время . Значения даты или времени, относящиеся к годам с 100 по 9999 включительно Длина поля 8 байт

Логический . Логические данные, которые могут иметь одно из двух возможных значений: Да/Нет, Истина/Ложь, Вкл./Выкл. Длина поля 1 бит.

Поле объекта OLE . Объект (например, электронная таблица Microsoft Excel, документ Microsoft Word, рисунок, звукозаписи или другие данные и двоичном формате), связанный или внедренный и таблицу Access. Длина поля - не более 1 Гбайт (ограничивается объемом диска).

Гиперссылка . Адрес гиперссылки, включающий путь к файлу на жестком диске в локальной сети (в формате UNC) или адрес страницы в Internet или intranet (URL). Кроме того, адрес может включать текст, выводимый в поле или в элементе управления, дополнительный адрес - расположение внутри файла или страницы, подсказку - текст, отображаемый в виде всплывающей подсказки. Если щелкнуть мышью на поле гиперссылки, Access выполнит переход на соответствующий объект, документ, Web-страницу или другое место назначения. Длина каждой из частей гиперссылки - не более 2048 знаков. Для полей типа OLE, MEMO и Гиперссылка не допускается сортировка и индексирование.

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

1.4 Свойства полей в зависимости от типа данных полей

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

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

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

Формат поля - определяет способ форматирования данных в ячейках, принадлежащих полю.

Маска ввода - определяет форму, в которой вводятся данные а поле (средство автоматизации ввода данных).

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

Значение по умолчанию - то значение, которое вводится в ячейки поля автоматически (средство автоматизации ввода данных).

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

Сообщение об ошибке - текстовое сообщение, которое выдается автоматически при попытке ввода в поле ошибочных данных.

Обязательное поле - свойство, определяющее обязательность заполнения данного поля при наполнении базы.

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

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

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

Таблицы баз данных, как правило, допускают работу с гораздо большим количеством разных типов данных. Так, например, базы данных Microsoft Access работают со следующими типами данных.

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

· Числовой - тип данных для хранения действительных чисел.

· Поле Мемо - специальный тип данных для хранения больших объемов текста (до 65 535 символов). Физически текст не хранится в поле. Он храниться в другом месте базы данных, а в поле храниться указатель на него, но для пользователя такое разделение заметно не всегда.

· Дата/время - тип данных для хранения календарных дат и текущего времени.

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

· Счетчик - специальный тип данных для уникальных (не повторяющихся в поле) натуральных чисел с автоматическим наращиванием. Естественное использование - для порядковой нумерации записей.

· Логический - тип для хранения логических данных (могут принимать только два значения, например Да или Нет).

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

.5 Основные требования к реляционной таблице

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

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

· Выбранный перечень атрибутов должен быть минимален. Атрибут включается в отношение только в том случае, если он будет использоваться.

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

· При выполнении операций над данными не должно возникать трудностей.

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

· Отношение представляется в виде полоски, содержащей имена всех атрибутов. Имя отношения пишется над ней.

· Первичный ключ отношения должен быть выделен жирной рамкой.

· Связи, определенные между отношениями, должны быть показаны линиями, проведенными между связующими атрибутами. Значения экземпляров связующих атрибутов должны совпадать.

1.6 Метаданные

Классификация и структура метаданных

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

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

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

Метаданные состоят из элементов, объединенных в наборы. Широко известным примером набора элементов метаданных является т.н. Дублинское ядро (Dublin Core, DC). Такие наборы разрабатываются с различными целями (например, для описания различных информационных объектов) различными организациями, которые предпринимают в случае целесообразности усилия по распространению и стандартизации своих разработок. В том случае, если набор элементов метаданных рассматривается и принимается соответствующей уполномоченной организацией (например, International Standart Organisation, ISO), он становится официальным стандартом метаданных.

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

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

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

обеспечении гибких и разнообразных механизмов отбора в соответствии с требованиями пользователя (поисковым запросом);

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

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

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

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

Глава 2. Таблицы. Индексы

.1 Понятие главной и дочерней таблиц

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

Главная таблица {родительская таблица или master ) - это таблица, в которой содержатся основные данные.

Подчиненная таблица {дочерняя таблица или detail ) - таблица, значения в полях которой зависят от значений главной таблицы.

Главная таблица может иметь несколько подчиненных таблиц.

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

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

Само название связи между таблицами реляционной базы данных формируют по типу таблиц:

· главный -подчиненный,

· родительский -дочерний или master-detail.

2.2 Виды отношений между таблицами

Существует три типа связей между таблицами.

Связь "один-ко-многим"

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

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

Связь "многие-ко-многим"

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

Связь "один-к-одному"

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

.3 Понятие ссылочной целостности

реляционная база таблица индекс

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

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

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

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

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

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

Убыстрение разработки. Ссылочная целостность объявляется. Это гораздо продуктивнее (на один или два порядка), чем написание специального программного кода.

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

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

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

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

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

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

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

Для ускорения доступа к данным применяется несколько типов индексов.

Основные из них перечислены ниже.

Первичный индекс.

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

Индекс кластеризации.

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

Вторичный индекс.

Индекс, который определен на поле файла данных, отличном от поля, по которому выполняется упорядочение.

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

Индексно-последовательные файлы

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

первичная область хранения;

отдельный индекс или несколько индексов;

область переполнения.

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

Вторичные индексы

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

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

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

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

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

Многоуровневые индексы

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

2.5 Сортировка записей

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

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

При сортировке по возрастанию данные различных типов выстраиваются в следующем порядке:

числа - от наименьшего отрицательного до наибольшего положительного числа;

текст - в алфавитном порядке (числа, знаки, латинский алфавит, русский алфавит);

дата и время - в хронологическом порядке.

При сортировке по убыванию данные выстраиваются в порядке, обратном вышеуказанному.

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

Например, после сортировки по возрастанию по текстовому полю "Фамилия" база данных "Записная книжка" примет вид, показанный в табл. 1.

Таблица 1. Результат сортировки базы данных "Записная книжка"


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

В качестве примера осуществим вложенную сортировку базы данных "Компьютеры" по возрастанию по трем полям Тип компьютера, Процессор и Память (рис. 1).

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

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

Заключение

В заключении необходимо сделать основные выводы по работе.

Реляционная модель данных состоит из трех частей:

Структурной части.

Целостной части.

Манипуляционной части.

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

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

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

Отношение обладает следующими свойствами:

В отношении нет одинаковых кортежей.

Кортежи не упорядочены (сверху вниз).

Атрибуты не упорядочены (слева направо).

Все значения атрибутов атомарны.

Реляционной базой данных называется набор отношений.

Схемой реляционной базы данных называется набор заголовков отношений, входящих в базу данных.

Отношение находится в Первой Нормальной Форме (1НФ),если оно содержит только скалярные (атомарные) значения.

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

Средством, позволяющим однозначно идентифицировать кортежи отношения, являются потенциальные ключи отношения.

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

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

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

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

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

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

В любой реляционной базе данных должны выполняться два ограничения:

Целостность сущностей

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

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

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

Для поддержания ссылочной целостности обычно используются две основные стратегии:(ОГРАНИЧИТЬ) - не разрешать выполнение операции, приводящей к нарушению ссылочной целостности.(КАСКАДИРОВАТЬ) - разрешить выполнение требуемой операции, но внести каскадные изменения в другие отношения так, чтобы не допустить нарушения ссылочной целостности.

Дополнительными стратегиями поддержания ссылочной целостности являются:NULL (УСТАНОВИТЬ В NULL) - все некорректные значения внешних ключей изменять на null-значения.DEFAULT (УСТАНОВИТЬ ПО УМОЛЧАНИЮ) - все некорректные значения внешних ключей изменять на некоторое значение, принятое по умолчанию.

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

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

Список использованной литературы

1. «Экономическая информатика» / Под. ред. П.В. Конюховского и Д.Н. Колесова, СПб: Питер, 2000, 560 с.

Каймин В.А., «Информатика», учеб.4-е изд. М.:, 2003 - 285 с.

. «Информатика», базовый курс, 2-е издание / Под. ред. С.В. Симоновича, СПб.: 2003, 640 с.

. «Информатика» учеб. 3-е перераб. изд. / Под. ред. проф. Н.В. Макаровой, М.: 2000, 768 с.

Http://www.jetinfo.ru/.

Информатика. Базовый курс /Симонович С.В. и др. - СПб: Издательство «Питер», 2000

Жизненный цикл информационных систем

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

· Отсутствие полной спецификации всех требований;

· Отсутствие приемлемой методологии (системы методов) разработки ИС;

· Отсутствие разделения общего глобального проекта на отдельные компоненты, поддающиеся эффективному контролю и управлению.

Жизненный цикл (ЖЦ) информационных систем – это структурный подход к разработке программного обеспечения.

(некая схема) за 26.09.12

1. Планирование разработки ИС. Подготовительные действия, позволяющие с максимальной эффективностью реализовывать этапы ЖЦ ИС. Три основных компонента: оценка объема работ; оценка необходимых ресурсов; оценка общей стоимости проекта.

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

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

4. Проектирование базы данных. Создание проекта базы данных. Два основных подхода к проектированию систем баз данных: «нисходящий » и «восходящий ».

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

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

7. Создание прототипа. Создание рабочей модели приложения баз данных.

8. Реализация. Физическая реализация базы данных и разработанных приложений.

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



10. Тестирование. Процесс выполнения прикладных программ с целью поиска ошибок. Стратегии тестирования: нисходящее тестирование; восходящее тестирование; тестирование потоков; интенсивное тестирование.

11. Эксплуатация и сопровождение. Наблюдение за системой и поддержка её нормального функционирования: контроль производительности; сопровождение и модернизация приложений.

Реляционная теория баз данных

Терминология

В 1970 г. Реляционная модель впервые была предложена Э.Ф. Коддом.

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

Математические отношения.

Теория реляционных БД основана на математической теории отношений.

Пусть D1, D2, … Dn некоторые множества.

Декартовым произведение D1 D2 … Dn = {(X1,X2,…,Xn) | X1 D1, X2 D2, … Xn Dn}

Отношение – подмножество R D1*D2*…*Dn

Например, n=2, D1={2,4} и D2={1,3,5}, D1 * D2 = {(2,1),(2,3),(2,5),(4,1),(4,3),(4,5)}, R={(2,1),(4,1)}

Подмножество м. б. задано условием, например:

R={(x1,x2) |x1 D1, x2 D2, X2=1}, A1, A2, … An – имена атрибутов с доменами D1, D2, … Втб тогда отношение будем записывать в виде:

R(A1:D1,A2:D2,…An:Dn)

Свойства отношений:

· Отношение имеет уникальное имя;

· Каждый атрибут имеет уникальное имя (в отношении);

· Каждая ячейка отношения содержит только атомарное значение и нет повторяющихся групп (отношение нормализовано);

D1 – студенты
D2 – дисциплины: Математика, Информатика

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

· Порядок следования кортежей произвольный;

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

Реляционные ключи

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

Реляционная целостность.

Реляционная алгебра

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

Реляционная алгебра является языком, в котором все кортежи обрабатываются одной командой.

Пять основных операций:

· Выборка,

· Проекция,

· Декартово произведение,

· Объединение,

· Разность.

На основе этих операций могут быть получены другие:

· Соединения,

· Пересечения,

· Деления.

В предикате могут использоваться знаки логических операций ^(And), v(Or), ~(not).

Пример. Получить список всех сотрудником с окладом свыше 300.

Проекция.

Определяет отношение, атрибутами которого являются атр1, …, атрn и содержит только уникальные кортежи.

Декартово произведение

Декартово произведение используется редко, к результату применяют выборку.

Объединение

Разность

Операции соединения.

Тета-соединение

Естественное соединение

Внешнее соединение

То при левом внешнем соединении сохраняется вся исходная информация из отношения R. Аналогично также можно определить правое внешнее соединение.

Полусоединение

Операцию полусоединения можно определить с помощью операторов проекции и соединения.

Пересечение

Представления

Назначение представлений:

· Предоставляет гибкий механизм защиты БД за счет сокрытия некоторой её части от определенных пользователей;

· Позволяет организовать доступ пользователей к данным наиболее удобным для них способом;

· Позволяет упрощать сложные операции с базовыми отношениями.

Правила, которые должны удовлетворить
реляционные СУБД

Для определения того, является ли СУБО реляционной Кодд (1985 г.) предложил 13 правил, которым они должны удовлетворять.

Правило
Фундаментальное правило. Реляционная СУБД должна быть способна управлять базами данных исключительно с помощь её реляционных функций
Представление информации. Вся информация в реляционной БД представляется в явном виде на логическом уровне только одним способом – в виде значений в таблицах. В том числе, метаданные.
Гарантированный доступ. Для каждого элемента данных реляционной БД должен быть гарантирован логический доступ на основе комбинации имени таблицы, значения первичного ключа и имени столбца.
Поддержка неопределенных значений. СУБД поддерживает неопределенные значения (Null).
Реляционный системный каталог. Описание БД должно представляться на логическом уровне таким образом, как и обычные данные, что позволяет пользователям использовать для обращения к ним тот же реляционный язык.
Исчерпывающий подъязык данных. реляционная СУБД может поддерживать несколько языков. Однако должен существовать по крайней мерее один язык, операторы которого позволяли бы выполнить следующие функции: 1. Определение данных; 2. Определение представлений; 3. Команды манипулирования данными; 4. Ограничения целостности; 5. Авторизации пользователей; 6. Организации транзакций
Высокоуровневые операции извлечения, вставки, удаления, обновления. Способность СУБД выполнять операции извлечения данных команд вставки, удаления и обновления как единой операции.
Физическая независимость от данных. От способа хранения
Логическая независимость от данных. Независимость приложений от изменения базовых таблиц.
Независимость ограничений целостности. Ограничения целостности должны определяться на подъязыке реляционных данных и храниться в системном каталоге, а не в прикладных программах.
Независимость от распределения данных.
Правило запрета обходных путей. Если СУБД имеет низкоуровневый язык (с последовательной построчной обработкой), он не должен позволять обходить правила и ограничения целостности, описанных на реляционном языке высокого уровня.

Моделирование данных на основе процесса нормализации

Цель нормализации.

Процесс нормализации был предложен в 1972 году Э. Ф. Коддом – три нормальные формы (НФ): первая (1НФ), вторая (2НФ) и третья (3НФ).

Более строгое определение третьей НФ (Р. Бойс и Э. Ф. Кодд, 1974) – нормальная форма Бойса-Кодда (НФБК).

Избыточность данных и аномалии обработки.

Отсутствие нормализации приводит:

· Избыточность данных

· Аномалии вставки (невозможно добавлять записи)

· Аномалии удаления (при удалении информации теряется другая информация)

· Аномалии обновления (требуется обновление многих записей)

· Свойства сохранения без потерь и сохранения зависимости.

Функциональные зависимости

ПРОГРАММИРОВАНИЕ В СРЕДЕ DELPHI 6

Базы данных. Создание отчета с помощью Word.

Утверждено Редакционно-издательским советом

университета в качестве лабораторного практикума

Воронеж 2004


УДК 681.3

Воробьёв Э.И., Короткевич Д.Э.. Программирование в среде Delphi 6: Лабораторный практикум: Ч. 2: Базы данных. Создание отчета с помощью Word. Потоки. Воронеж: Воронеж. гос. техн. ун-т, 2004. 107 с.

Во второй части лабораторного практикума рассматриваются теоретические и практические сведения для написания программ в среде Delphi 6 на тему: «Проектирование баз данных, создание отчетов в программе Word и использование потоков при создании высокопроизводительных приложений».

Издание соответствует требованиям Государственного образовательного стандарта высшего профессионального образования по направлению 230100 «Информатика и вычислительная техника», специальности 230104 «Системы автоматизированного проектирования», дисциплине «Программирование на языках высокого уровня».

Табл. 3. Ил. 19. Библиогр.: 7 назв.

Научный редактор: д-р техн. наук, проф. Я.Е. Львович

Рецензенты: кафедра вычислительной техники Воронеж- ской лесотехнической академии (зав. кафедрой д-р техн. наук, проф. В.Е. Межов);

д-р техн. наук, проф. О.Ю.Макаров

© Воробьёв Э.И., Короткевич Д.Э., 2004

© Оформление. Воронежский государственный

технический университет, 2004


Введение

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

Базы данных считаются основным преимуществом Delphi. Даже специализированные языки для работы с базами данных (такие, как MS Visual FoxPro) явно уступают по простоте и мощи программирования этого типа приложений. Delphi скрывает все сложности и в то же время даёт величайшую мощь. Ещё не было такой задачи, которую не смогли бы реализовать на Delphi за короткий промежуток времени. А главное, что всё это реализовано очень удобно и легко для понимания. В Delphi можно создавать простые приложения, даже со сложными базами, без единой строчки кода. В данном учебном пособии рассмотрены лабораторные задания для освоения приемов работы с локальными базами данных.

Теория реляционных баз данных

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

Базы данных делятся на локальные (установленные на компьютере клиента, там же где и работает программа) и удалённые (установленные на сервере, удалённом компьютере). Серверные базы данных располагаются на удалённом компьютере и работают под управлением серверного программного обеспечения. К их главным преимуществам можно отнести возможность работы с одной базой данных одновременно несколькими пользователями, и при этом осуществляется минимальная нагрузка на сеть. Есть ещё сетевые базы данных, которые создают слишком большую нагрузку на сеть и неудобны в работе как для программиста, так и для конечного пользователя. Когда программа присоединяется к сетевой базе данных, то она выкачивает с сервера практически полную его копию. Если Вы внесли изменения, то Ваша копия полностью закачивается обратно. Это очень неудобно, потому что создаётся большая нагрузка на сеть из-за излишней перекачки данных. При клиент-серверной технологии программа клиент посылает простой текстовый запрос на сервер на получение каких-либо данных. Сервер обрабатывает его и возвращает только необходимую порцию данных. Когда нужно изменить какие-то данные опять посылается запрос к серверу на их изменение, и сервер изменяет данные в своей базе. Таким образом, по сети происходит перекачка в основном только текстовых запросов, которые в основном занимают меньше килобайта. Все данные обрабатывает сервер, а значит, машина клиента загружается намного меньше и не так сильно требовательна к ресурсам. Сервер отсылает клиенту только самые необходимые данные, а значит, отсутствует излишняя перекачка копии всей базы. Благодаря всему этому сетевые базы данных уже устарели и практически не используются. Их практически полностью вытесняет технология клиент-сервер. А вот локальные базы данных будут жить всегда. Может измениться формат их хранения или добавиться какие-то новые функции, но сами базы данных будут существовать. Для дальнейшего рассмотрения нам надо определить новое понятие – таблица . Пока что говорились только общие принципы, поэтому использовалось общее понятие баз данных . Таблица базы данных – это как двухмерный массив, в котором в столбец выстроены данные (яркий пример таблицы – Excel). База данных – грубо говоря, это всего лишь файл, в котором может храниться от одной до нескольких таблиц. Большинство локальных баз данных могут хранить только одну таблицу (dBase, Paradox, XML). Но есть представители локальных баз, где в одном файле заключено несколько таблиц (например Access).

Локальные базы данных

Из локальных баз данных рассмотрим реляционные как самые распространённые. Что такое реляционная база данных? Это таблица, в которой в качестве столбцов выступают имена хранимых в ней данных, а каждая строка хранит сами данные. Таблица базы данных похожа на электронную таблицу Excel (если быть точнее, то Excel хранит свои данные в виде собственного формата, построенного на основе технологии баз данных). Локальные таблицы баз данных могут храниться на локальном жёстком диске или централизовано сохраняться на сетевой диск файлового сервера. Эти файлы можно копировать с помощью стандартных средств как любой другой файл, потому что сами таблицы базы данных не привязаны к определённому месту расположения. Главное, чтобы программа могла найти таблицу. В каждой таблице должно быть одно уникальное поле, которое однозначно будет идентифицировать строку. Это поле называется ключевым. Эти поля очень часто используются для связывания нескольких таблиц между собой. Но даже если таблица не связана, ключевое поле всё равно обязательно. В качестве ключа желательно использовать численный тип и если позволяет база данных, то будет лучше если он будет типа "autoincrement" (автоматически увеличивающееся/уменьшающееся число или счётчик). Имена столбцов в таблице базе данных также должны быть уникальными, но в этом случае не обязательно числовыми. Их можно называть как угодно, лишь бы было уникально и понятно. Каждый столбец (поле базы данных) обязательно должен иметь определённый тип. Количество типов и их разновидности зависят от типа базы данных, например формат dBASE (файлы с расширением DBF) поддерживает только 6 типов, а Paradox уже до 15. База данных может храниться в одном файле (Access) или в нескольких (Paradox, dBase). Точнее сказать, данные таблицы всегда хранятся в одном файле, а вот дополнительная информация может располагаться в отдельных файлах. В качестве дополнительной информации могут быть индексы, ограничения или список значений по умолчанию для конкретных полей. Если хотя бы один из файлов запортится или будет удалён, то данные могут стать недоступными для редактирования.

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

Если надо, чтобы какая-то таблица была упорядочена по полю «Фамилия », то это поле надо сначала проиндексировать. Затем нужно только указать, что таблица должна работать сейчас с таким-то индексом, и она сортируется автоматически.

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

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

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

Требования к базам данных

Итак, хорошо спроектированная база данных:

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

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

3. Обеспечивает естественное, легкое для восприятия структурирование информации. Качественное построение базы позволяет делать запросы к базе более “прозрачными” и легкими для понимания; следовательно, снижается вероятность внесения некорректных данных и улучшается качество сопровождения базы.

4. Удовлетворяет требованиям пользователей к производительности базы данных. При больших объемах информации вопросы сохранения производительности

начинают играть главную роль, сразу “высвечивая” все недочеты этапа проектирования.

Следующие пункты представляют основные шаги проектирования базы данных:

1. Определить информационные потребности базы данных.

2. Проанализировать объекты реального мира, которые необходимо смоделировать в базе данных. Сформировать из этих объектов сущности и характеристики этих сущностей (например, для сущности “деталь” характеристиками могут быть “название”, “цвет”, “вес” и т.п.) и сформировать их список.

3. Поставить в соответствие сущностям и характеристикам - таблицы и столбцы (поля) в нотации выбранной Вами СУБД (Paradox, dBase, FoxPro, Access, Clipper, InterBase, Sybase, Informix, Oracle и т.д.).

4. Определить атрибуты, которые уникальным образом идентифицируют каждый объект.

5. Выработать правила, которые будут устанавливать и поддерживать целостность данных.

6. Установить связи между объектами (таблицами и столбцами), провести нормализацию таблиц.

7. Спланировать вопросы надежности данных и, при необходимости, сохранения секретности информации.


Похожая информация.


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

Например, пусть имеется отношение

R(Город, Адрес, Почтовый_индекс).

Очевидно, что атрибуты Город Адрес Почтовый_индекс. В то же время Почтовый_индекс Город (хотя и не адрес). Оба множества могут быть возможными ключами.

Шаг 2. Переместить любую селекцию в дереве как можно ниже - законы I.4, IY.1, IY.3, IY.5.

Шаг 3. Переместить любую проекцию в низ дерева - законы I.2, IY.5, IY.6.

Шаг 4. Скомбинировать любой каскад селекций (проекций) в одиночную селекцию (проекцию) I.1, I.2, I.5 или селекцию с последующей проекцией.

Шаг 5. Разбить внутренние узлы дерева на группы: объединить двухместные операции с предшествующими или последующим узлу унарными операциями S и P.

Шаг 6. Перейти к более высокому уровню иерархии.

Пример оптимизации. Пусть дана база данных Библиотека:

ИЗД[АТЕЛИ](Название_издательства, Место, Адрес_издательства),

ЧИТ[АТЕЛИ](Фамилия, Адрес, Город, N_форм[уляра]),

ВЫД[АЧИ](N_форм[уляра], N_бк, Дата), где бк - библиотечный каталог, а для обозначения таблиц и полей используем сокращения (без букв в квадратных скобках).

Запрос: найти, у кого находятся книги, выданные до 01.01.1997.Д

Ему соответствует на языке АЛЬФА запрос (рис. 4.8, а)

p НАЗВАНИЕ s ДАТА J 1.1.1997 p S (S F (ВЫД, ЧИТ, КН)),

где F = ЧИТ.N_форм = ВЫД.N_формКН.N_бк = ВЫД.N_бк,

На рис. 4.8, а в условии F разделяют две селекции и перемещают как можно ниже в дереве. Селекция

s ДАТА≤1.1.1997 (4.2)

ниже проекции и двух селекций по законам I.1, I.5.

Селекция (4.2) применяется к произведению (ВЫД×ЧИТ)×КН. Дата - единственный атрибут отношения ВЫД потому

s ДАТА≤1.1.1997 ((ВЫД×ЧИТ)×КН)

(s ДАТА≤1.1.1997 (ВЫД×ЧИТ))×КН

((s ДАТА≤1.1.1997 (ВЫД))×ЧИТ)×КН.

Селекцию можно переместить вниз по дереву. Селекция с условием КН.N_бк = ВЫД.N_бк не может быть перемещена ниже любого декартова произведения, поскольку имеет атрибуты как отношения КН, так и других отношений.

s ЧИТ.N_ФОРМ = s ВЫД.N_ФОРМ может быть перемещена ниже и применена к произведению

s ДАТА≤1.1.1997 ((ВЫД)×ЧИТ).

ВЫД.N_форм есть имя атрибута отношения, полученного в s ДАТА≤1.1.1997 (ВЫД), ибо это атрибут отношения ВЫД.

По закону I.2 две проекции комбинируются в одну pНАЗВАНИЕ и результат отражается в рис. 4.8, б.

По закону I.4 p НАЗВАНИЕ и s кн.N_бк=выд.N_бк заменим на каскад

p НАЗВАНИЕ,

s кн.N_бк=выд.N_бк,

p название кн.N_бк, выд.N_бк. (4.3)

По закону IY.6 выражение (4.3) заменяется на p название кн.N_бк, примененное к отношению КН, и

p выд.N_бк, (4.4)

примененное к левому оператору декартова произведения более высокого уровня (рис. 4.8, б).

Последняя проекция (4.4) взаимодействует с нижней селекцией по закону I.4 и получается каскад:

p выд.N_бк,

s чит.N_форм=выд.N_форм,

p выд.N_бк, чит.N_форм, выд.N_форм. (4.5)

Проекция (4.5) «просеивается» через декартово произведение по закону IY.6 и частично - через s ДАТА≤1.1.1997 (ВЫД) по закону I.4. Кроме того, проекция p выд.N_бк, выд.N_форм, дата - излишняя (это - все атрибуты ВЫД) и исключается. Тогда окончательный результат принимает вид рис. 4.9,
на котором группы операторов обведены пунктирными линиями. Любое из декартовых произведений является фактически эквисоединением, если его скомбинировать с селекцией, находящейся в дереве выше. Иными словами, селекция для ВЫД и проекция для ЧИТ могут быть скомбинированы в группы I и II, при этом сначала выполняются операции группы I, а затем - группы II.

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

Если принять в качестве критерия минимум соединений и декартовых произведений [ c. 204], то для класса так называемых конъюнктивных запросов возможно провести однозначную оптимизацию.

Синхронизация процессов доступа

Синхронизация имеет место как при однопользовательском, так и при многопользовательском режимах.

Здесь возникают понятия «достоверность», «логический элемент работы или транзакция», «объект (запись, столбец, таблица, файл)», «управление параллелелизмом», «восстановление БД».

Первоначально поговорим об однопользовательском режиме.

Под транзакцией понимается:

    1) входное сообщение, передаваемое в систему и отражающее некоторое реальное событие в компьютере (БД);

    2) процесс изменения в БД, вызванный передачей одного входного сообщения.

К транзакции преддъявляются следующие основные требования:

    1) она выполняется полностью или не выполняется совсем;

    2) транзакция должна иметь возможность возврата, при этом независим возврат в начальное состояние до момента изменения состояния всех объектов;

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

Возможна двухфазная и трехфазная схема транзакции. Последняя болеe сложная и применяется в ограниченном объеме (например, в системе управления распределенной БД SDD-1) и будет рассмотрена позднее. Сейчас же поговорим о широко применяемой двухфазной схеме транзакции.

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

Перейдем к многопользовательскому режиму (рис. 4.11).
Здесь задача синхронизации процессов усложняется за счет взаимодействия нескольких пользователей.

Для любой транзакции ТР возможны две группы действий:

    1) изменение состояния (запись) - R;

    2) считывание (чтение) состояния - W.

Для двух взаимодействующих транзакций ТР 1 и ТР 2 возможны следующие случаи.

    Одновременное изменение ТР 1 и ТР 2 , при этом возможны наложение данных (потеря обновления) или ошибка в первой транзакции (взаимозависимость восстановления).

    Изменение R 1 и считывание W 2 с двумя возможными последствиями:

    а) изменение с помощью ТР 1 значения, считываемого ТР 2 (воспроизводимость считывания);

    б) откат перед окончанием работы ТР 1 (поскольку нет изменений в ТР 2) и возврат ТР 1 в прежнее состояние.

    Чтение ТР 1 и изменение ТР 2 (нет гарантии воспроизводимости).

Для устранения этих нежелательных явлений возможны такие способы управления.

    Блокировка монопольная или согласованная.

    Отложенные изменения.

    Привязка по меткам времени работы компьютера (временная привязка) и трехфазная схема транзакции.

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

Блокировка выполняется только для одной транзакции и одного объекта.

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

    Перед обработкой объекта должна быть выполнена его блокировка.

    После обработки объект должен быть разблокирован.

    Перед разблокировкой не должна выполняться повторная блокировка.

    Неблокированный объект не должен освобождаться.

Для параллельного выполнения

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

При использовании согласованных блокировок возможно:

    1) предупреждение о блокировке для всей области;

    2) блокировка части области, связанной с данной транзакцией.

1.2 Теория реляционных баз данных

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

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

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

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

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

Основоположником теории реляционных баз данных считается сотрудник фирмы IBM доктор Э. Кодд, опубликовавший 6 (июня 1970 г. статью A Relational Model of Data for Large-Shared Data Banks (Реляционная модель данных для больших коллективных банков данных). В этой статье впервые был использован термин "реляционная модель данных. Теория реляционных баз данных, разработанная в 70-х годах в США доктором Э. Коддом, имеет под собой мощную математическую основу, описывающую правила эффективной организации данных. Разработанная Э. Коддом теоретическая база стала основой для разработки теории проектирования баз данных.

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

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

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

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

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

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

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

Так как строки в таблице не упорядочены, невозможно выбрать строку по ее позиции - среди них не существует "первой", "второй", "последней". Любая таблица имеет один или несколько столбцов, значения в которых однозначно идентифицируют каждую ее строку. Такой столбец (или комбинация столбцов) называется первичным ключом (primary key). Часто вводят искусственное поле, предназначенное для нумерации записей в таблице. Таким полем, например, может быть его порядковый, который сможет обеспечить уникальность каждой записи в таблице. Ключ должен обладать следующими свойствами :

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

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

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

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

Взаимосвязь таблиц является важнейшим элементом реляционной модели данных. Она поддерживается внешними ключами (foreign key).

Таблицы невозможно хранить и обрабатывать, если в базе данных отсутствуют "данные о данных", например, описатели таблиц, столбцов и т.д. Их называют обычно метаданными. Метаданные также представлены в табличной форме и хранятся в словаре данных (data dictionary).

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

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

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

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

Категорная целостность;

Целостность на уровне ссылок;

Функциональные зависимости.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Понятие домена более специфично для баз данных, хотя и имеются аналогии с подтипами в некоторых языках программирования (более того, в своем "Третьем манифесте" Кристофер Дейт и Хью Дарвен вообще ликвидируют различие между доменом и типом данных). В общем виде домен определяется путем задания некоторого базового типа данных, к которому относятся элементы домена, и произвольного логического выражения, применяемого к элементу этого типа данных (ограничения домена). Элемент данных является элементом домена в том и только в том случае, если вычисление этого логического выражения дает результат истина. С каждым доменом связывается имя, уникальное среди имен всех доменов соответствующей базы данных.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

1. идентификация функциональных зависимостей;

2. трудоемкость идентификации всех функциональных зависимостей;

3. зависимость конечного результата проектирования от опыта и субъективного взгляда проектировщика, а не от формальной методики проектирования;

4. проблема идентификации сущностей и атрибутов сущностей.

1.3 Методы проектирования БД ИС

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

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

Соответствие создаваемой информационной системы целям и задачам предприятия, а также предъявляемым к ней требованиям по автоматизации желаемых процессов и гарантирование создания системы с заданными параметрами в течение заданного времени в рамках оговоренного заранее бюджета;

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

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

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

1. Заданной последовательности выполнения технологических операций проектирования;

2. Критериев и правил, используемых для оценки результатов выполнения технологических операций;

3. Графических и текстовых средств (нотаций), используемых для описания проектируемой системы.

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

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

Поддерживать полный жизненный цикл информационной системы;

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

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

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

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

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

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

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

На небольшой команде программистов (обычно от 2 до 10 человек);

На тщательно проработанном производственном графике работ, рассчитанном на сравнительно короткий срок разработки;

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

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

CASE-средства (от Computer Aided Software/System Engineering) - позволяют проектировать любые системы на компьютере. Необходимый элемент системного и структурно-функционального анализа, CASE средства позволяют моделировать бизнес-процессы, базы данных, компоненты программного обеспечения, деятельность и структуру организаций

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Принцип формализации - заключается в необходимости строгого методического подхода к решению проблемы;

Принцип непротиворечивости - заключается в обоснованности и согласованности элементов;

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

В структурном анализе используются в основном две группы средств, иллюстрирующих функции, выполняемые системой и отношения между данными. Каждой группе средств соответствуют определенные виды моделей (диаграмм), наиболее распространенной среди которых являятся: ERD (Entity-Relationship Diagrams) диаграммы "сущность-связь".

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

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

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

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

Наиболее известным представителем класса семантических моделей является модель "сущность-связь" (ER-модель).Методология построения баз данных базируется на теоретических основах их проектирования. Для понимания концепции методологии приведем основные ее идеи в виде двух последовательно реализуемых на практике этапов:

1-й этап - обследование всех функциональных подразделений фирмы с целью:

Понять специфику и структуру ее деятельности;

Построить схему информационных потоков:

Проанализировать существующую систему;

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

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

Модель Сущность-Связь (ER-модель) (англ. entity-relationship model (ERM) или англ. entity-relationship diagram (ERD)) - модель данных, позволяющая описывать концептуальные схемы. Предоставляет собой графическую нотацию, основанную на блоках и соединяющих их линиях, с помощью которых можно описывать объекты и отношения между ними какой-либо другой модели данных. В этом смысле ER-модель является мета-моделью данных, то есть средством описания моделей данных .

Модель "сущность-связь" была предложена в 1976 году Питером Пин-Шен Ченом (англ. Peter Pin-Shen Chen) – американским профессором компьютерных наук в университете штата Луизиана. Фактически Чен не изобретал модель, он взял идеи из более ранних работ таких практиков, как А. Браун и других. Однако Питер Чен сделал больше, чем кто бы то ни было до него для формализации и популяризации ER-модели, а также для её внедрения в научную литературу.

В связи с наглядностью представления концептуальных схем баз данных ER-модели получили широкое распространение в системах CASE, поддерживающих автоматизированное проектирование реляционных баз данных. Среди множества нотаций ER-моделей одна из наиболее развитых – Unified Modeling Language (Унифицированный язык моделирования), сокр. UML – применяется в системе CASE фирмы ORACLE. Нотация UML так же используется и/или поддерживается: Borland Software Corporation, Университетом Бремена, Университетом Кента, Университетом.

Основные преимущества ER-моделей :

Наглядность;

Модели позволяют проектировать базы данных с большим количеством объектов и атрибутов;

ER-модели реализованы во многих системах автоматизированного проектирования баз данных (например, ERWin, Oracle Designer).

Основные элементы ER-моделей:

Объекты (сущности);

Атрибуты объектов;

Связи между объектами.

Сущность - любой объект предметной области, имеющий атрибуты.

Связь между сущностями характеризуется:

Типом связи (1:1, 1:М, М:М);

Классом принадлежности. Класс может быть обязательным и необязательным. Если каждый экземпляр сущности участвует в связи, то класс принадлежности – обязательный, иначе – необязательный.

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

Основные элементы данной модели:

1. Описание объектов предметной области и связей между ними.

2. Описание информационных потребностей пользователей (описание основных запросов к БД).

3. Описание документооборота. Описание документов, используемых как исходные данные для БД и документов, составляемых на основе БД.

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

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

Логическое (даталогическое) проектирование – отображение инфологической модели на модель данных, используемую в конкретной СУБД, например на реляционную модель данных. Для реляционных СУБД даталогическая модель – набор таблиц, обычно с указанием ключевых полей, связей между таблицами. Если инфологическая модель построена в виде ER-диаграмм (или других формализованных средств), то даталогическое проектирование представляет собой построение таблиц по определённым формализованным правилам, а также нормализацию этих таблиц. Этот этап может быть в значительной степени автоматизирован .

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

На этапе инфологического проектирования в ходе сбора информации о предметной области требуется выяснить:

1. основные объекты предметной области (объекты, о которых должна храниться информация в БД);

2. атрибуты объектов;

3. связи между объектами;

4. основные запросы к БД.

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

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

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


Выводы по Разделу 1

В разделе 1 один были рассмотрены информационные системы и информация, методы обработки данных, основные концепции обработки данных (концепция файловой системы, концепция баз данных, концепция объективно – ориентированных баз данных), основные функции СУБД. Рассмотрены модели данных: сетевая, иерархическая, реляционная. Подробно была описана реляционная модель данных.

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

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

Выбрать концептуальную модель, с помощью которой будет построена концептуальная схема;

Построить точное описание семантических ограничений, поддерживаемых выбранной СУБД;

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

Определить, что такое хорошая схема и описать методику ее построения.

Информация о работе «Проектирование, разработка и внедрение БД ИС в экономическую деятельность предприятия (на примере ГП "Алушталифт")»