Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Тема 08. Базы данных и ИС

.doc
Скачиваний:
6
Добавлен:
03.08.2019
Размер:
267.78 Кб
Скачать

Тема 8. Базы данных и ИС 5

Базы данных и информационные системы

Историю баз данных принято отсчитывать с начала 1960-х гг., когда появились первые попытки создания специальных программных средств управления базами данных. За прошедшие десятилетия возникали и использовались различные подходы к организации баз данных. Для описания и сравнения некоторых из них мы воспользуемся понятием модели данных, предложенным в 1969 г. Эдгаром Коддом. Кодд ввел это понятие для описания конкретного реляционного подхода к организации БД.

База данных (БД) — именованная совокупность данных, отражающая состояние объектов и их отношений в рассматриваемой предметной области.

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

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

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

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

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

  3. БД включает метаданные, описывающие логическую структуру БД в формальном виде (в соответствии с некоторой метамоделью). В соответствии с ГОСТ Р ИСО МЭК ТО 10032-2007, «постоянные данные в среде базы данных включают в себя схему и базу данных. Схема включает в себя описания содержания, структуры и ограничений целостности, используемые для создания и поддержки базы данных. База данных включает в себя набор постоянных данных, определенных с помощью схемы. Система управления данными использует определения данных в схеме для обеспечения доступа и управления доступом к данным в базе данных».

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

Работа с базами данных осуществляется при помощи СУБД.

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

Основные функции СУБД:

  • управление данными во внешней памяти (на дисках);

  • управление данными в оперативной памяти с использованием дискового кэша;

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

  • поддержка языков БД (язык определения данных, язык манипулирования данными).

Решение задач посредством СУБД приводит к созданию информационных систем (ИС).

По сферам применения различают два основных класса ИС: информационно-поисковые системы (ИПС) и системы обработки данных (СОД).

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

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

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

Иерархическая БД состоит из упорядоченного набора деревьев; более точно, из упорядоченного набора нескольких экземпляров одного типа дерева. Тип дерева состоит из одного «корневого» типа записи и упорядоченного набора из нуля или более типов поддеревьев (каждое из которых является некоторым типом дерева). Тип дерева в целом представляет собой иерархически организованный набор типов записи.

На рис. 1 показан пример схемы иерархической БД. Здесь тип записи Отдел является предком для типов записи Руководитель и Служащие, а Руководитель и Служащие – потомки типа записи Отдел. Смысл полей типов записей в основном должен быть понятен по их именам. Между типами записи поддерживаются связи.

Рисунок 1 – Пример схемы иерархической БД

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

Рисунок 2 – Пример иерархической базы данных

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

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

На рис. 3 показан простой пример схемы сетевой БД.

Рисунок 3 – Пример схемы сетевой базы данных

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

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

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

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

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

  • все значения являются скалярами. Это значит, что для любой строки и столбца любого отношения существует одно и только одно значение;

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

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

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

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

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

Поля — это различные характеристики (атрибуты) объекта. Значения полей в одной строчке относятся к одному объекту. Разные поля отличаются именами. Записи различаются значениями ключей.

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

В БД «Домашняя библиотека» разные книги могут иметь одного автора, могут совпадать названия книг, год издания, полка. Но инвентарный номер у каждой книги свой (поле НОМЕР). Он-то и является главным ключом для записей в этой базе данных.

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

В такой таблице у разных записей не могут совпасть только одновременно два поля ГОРОД и НОМЕР ШКОЛЫ. Эти два поля вместе образуют составной ключ: ГОРОД-НОМЕР ШКОЛЫ. Составной ключ может состоять и более чем из двух полей.

С каждым полем связано еще одно очень важное свойство — тип поля.

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

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

  • числовой; символьный; дата; логический.

Числовой тип имеют поля, значения которых могут быть только числами. Например, в БД «Погода» три поля числового типа: ТЕМПЕРАТУРА, ДАВЛЕНИЕ, ВЛАЖНОСТЬ.

Символьный тип имеют поля, в которых будут храниться символьные последовательности (слова, тексты, коды и т.п.). Примерами символьных полей являются поля АВТОР и НАЗВАНИЕ в БД «Домашняя библиотека»; поле ТЕЛЕФОН в БД «Школы».

Тип «дата» имеют поля, содержащие календарные даты в форме «день/месяц/год» (в некоторых случаях используется американская форма: месяц/день/год). Тип «дата» имеет поле ДЕНЬ в БД «Погода».

Логический тип соответствует полю, которое может принимать всего два значения: «да» — «нет» или «истина» — «ложь» или (по-английски) «true» — «false». Если двоичную матрицу представить в виде реляционной БД (табл. 6.4, 6.5), то ее полям, принимающим значения «О» или «1», удобно поставить в соответствие логический тип. При этом «1» заменится на значение «истина», «О» — на значение «ложь».

Итак, значения полей — это некоторые величины определенных типов.

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

Например, с числовыми величинами можно выполнять арифметические операции, а с символьными и логическими — нельзя.

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

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

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

  • Минимальные затраты. Низкая стоимость хранения и использования данных, минимизация затрат на внесение изменений.

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

  • Простота внесения изменений. База данных может увеличиваться и изменяться без нарушения имеющихся способов использования данных.

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

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

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

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

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

  • "один–ко–многим";

  • "один–к–одному";

  • "многие–ко–многим".

Отношение "один–ко–многим"

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

Отношение "один–к–одному"

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

Отношение "многие–ко–многим"

Отношение "многие–ко–многим" применяется в следующих случаях:

  • одной записи в родительской таблице соответствует более одной записи в дочерней;

  • одной записи в дочерней таблице соответствует более одной записи в родительской.

Язык SQL, предназначенный для взаимодействия с базами данных, появился в середине 70­х гг. (первые публикации датируются 1974 г.) и был разработан в компании IBM в рамках проекта экспериментальной реляционной СУБД System R. Исходное название языка SEQUEL (Structured English Query Language) только частично отражало суть этого языка. Конечно, язык был ориентирован главным образом на удобную и понятную пользователям формулировку запросов к реляционным БД.

Язык SQL определяет:

  • операторы языка, называемые иногда командами языка SQL;

  • типы данных;

  • набор встроенных функций.

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

  • язык определения данных;

  • язык манипулирования данными.

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

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

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

  •  SELECT - извлечение данных из одной или нескольких таблиц;

  •  INSERT - добавление строк в таблицу;

  •  DELETE - удаление строк из таблицы;

  •  UPDATE - изменение значений полей в таблице.

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

SELECT { * | элемент_SELECT [,элемент_SELECT] ...}

FROM { таблица1 } [,{таблица2 } …]

[WHERE условие]

[ORDER BY поле_сортировки [ ACS | DESC ]]

  • SELECT * FROM Покупатели;

  • SELECT Название, Статус, Адрес FROM Поставщики;

  • SELECT Фамилия, Телефон FROM Клиенты WHERE Город=”Москва”;

  • SELECT Название, Цена FROM Товары WHERE Цена>=100 And Цена<=150;

  • SELECT Название, Цена, Поставщик FROM Товары ORDER BY Цена DESC;

Модификация данных может выполняться с помощью предложений DELETE, INSERT и UPDATE.

Оператор INSERT применяется для добавления записей в таблицу. Формат оператора:

INSERT INTO <имя_таблицы>

[(имя_столбца [,...n])]

{VALUES (значение[,...n])}

  • INSERT INTO Товары (Название, Тип, Цена) VALUES("Детективная история", "книга", 120)

  • INSERT INTO Товары VALUES("Математика 8 кл.", "учебник", 200)

Оператор DELETE предназначен для удаления группы записей. Формат оператора:

DELETE * FROM <имя_таблицы> [WHERE <условие_отбора>]

  • DELETE * FROM Товары;

  • DELETE * FROM Товары WHERE Тип=Азбука;

Оператор UPDATE применяется для изменения значений в группе записей или в одной записи указанной таблицы. Формат оператора:

UPDATE имя_таблицы SET имя_столбца=

<выражение>[,...n]

[WHERE <условие_отбора>]

  • UPDATE Товары Set Скидка=”20%”, СрокСкидки=”20 дней”;

  • UPDATE Товары SET Товары.Цена=140, Товары.Остаток=20 WHERE Товары.Сорт="Первый";

  • UPDATE Товары SET Товары.Цена=Товар.Цена*1.25 WHERE Товары.Сорт="Первый";