Базы данных. 8

                         БАЗЫ ДАННЫХ      2009                                   

 Данный файл  содержит 1-4, 6, 10, 13, 14 лекции                                                  

Лекция 1

                                                Введение

        В начале 70-х годов для удобства работы с большими массивами данных сформулирована  концепция баз данных. Ее основными положениями были:

1.Независимость  прикладных программ от данных, размещенных во внешней памяти

2. Отсутствие  избыточности в данных

3.Способность системы противостоять сбоям и отказам.

       Для реализаций этих положений  предлагалось ввести сервисную  систему – посредник между  пользовательскими программами  и операционной системой.

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

       
 
 
 
 

  
 

        С 70 годов стали появляться  различные СУБД. Наиболее известными  из них были: IMS/360, TOTAL, ADABAS, ОКА, БАНК, СЕТОР, СЕДАН, ДИСОД. Эти системы разрабатывались для больших вычислительных машин. Они были мощные и интересные по своим возможностям, но достаточно сложные для понимания и освоения. 

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

       Наиболее известными и широко  используемыми в настоящее время  являются 

 СУБД Oracle, MS SQL Server и DB/2. 

          Тема 1. Основные положения теории баз данных

                         1.1   База данных и ее компоненты

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

 Под  объектом может пониматься предмет  или процесс окружающего мира.

     

На рис. 1.1 представлен типичный состав БД и показана связь БД с пользователем. 

                  

                                                                                                       
 
 

                         

   

                                 Рис. 1.1   Взаимодействие пользователя с БД                         

 

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

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

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

    Хранимые процедуры -  программные  модули  для реализации самых разных задач, хранимые непосредственно в БД.

    Триггеры – специальные программные  средства  для инициализации   хранимых процедур в случае  обновления БД.

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

                                 1.2. Использование БД

   Основным инструментом пользователя при использовании БД является СУБД.

СУБД- сервисная  программная система, служащая для  создания и поддержки БД.

    Таким образом, любая СУБД должна:

  1. уметь создавать БД.
  2. поддерживать БД

    К функциям поддержки прежде всего относятся: 

-управление внешней памятью,

-управление  буферами,

- поддержка  встроенного языка,

- управление  транзакциями.

    Все современные СУБД могут  работать в двух режимах:

  • в режиме диалога
  • в режиме прикладных программ.

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

     Как видно из рис.1.1, приложения

1) создают  и передают запросы к БД  на поиск или модификацию необходимых  данных

  1. создают и обрабатывают формы и отчеты

    Отчет – это некоторая выборка данных из БД, структурированная

    определенным  образом.

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

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

1 Конечные  пользователи (это лица, для которых  создается система с БД)

  2 Разработчики  приложений (программисты)

 Программисты  используют БД  на стадии разработки  системы с БД (информационной  системы).

3 Администраторы  баз данных АБД (они непосредственно  создают БД и контролируют  правильность ее использования) 

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

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

   Заметим так же, что конечные  пользователи знают только свои  формы и отчеты.

При этом они могут не знать, как структурированы  их данные и как они хранятся во внешней памяти.

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

Лекция 2

              1.3 Основные понятия реляционной модели данных 

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

     

     Реляционная модель впервые была разработана в 1969 году Коддом на основании теории отношений. Ее характерной особенностью является

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

                   

    

   Отношение – это плоская, двумерная таблица.

    Руководители   (родительская  таблица)

Таб_ном_рук № отдела Штат ФИО
237 55 11 Ленский РП
528 17 14 Орлов ВВ
714 89 46 Коровин НП

                                                                                                Внешний ключ

Сотрудники    (дочерняя таблица)

Табельный номер ФИО Таб_ном_рук Должность
          99 Кулибин Н.Н.          528 научн_сотр
        100 Рогов А.Н.          237 лаборант
101 Иванов И. И. 237 инженер
148 Петров П. П. 714 инженер
135 Сидоров С. С.          528 лаборант

            

                 Рис. 1.2 Связанные таблицы

                    

    Фактически  в большинстве случаев таблица  отображает сущность (Замечание:  однако иногда сущность может  быть представлена несколькими  таблицами). Каждая строка отношения  содержит описание одного объекта  предметной области. 

     Каждое отношение характеризуется следующими понятиями:

- атрибут

  • домен

- кортеж

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

- внешний  ключ

       Рис. 1.3   поясняет смысл всех характеристик отношения.

 

             Рис. 1.3.   Соотношение основных понятий реляционной модели данных

Атрибут – это именованный столбец отношения.

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

     Количество столбцов ограничивается  конкретной СУБД. В современных СУБД количество столбцов примерно = 254.

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

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

Кортеж – это строка отношения.

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

Иными словами, каждый кортеж отношения является неименованным.  

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

Количество  кортежей в отношении не ограничивается и определяется только размерами внешней памяти. 

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

Атрибут Имя домена Содержимое  домена Определение домена
ФИО АА Множество всех ФИО Символьный;

Размер 32

Таб_ном_рук 

Табельный номер

T_H Множество допустимых номеров Цлочисленный;

Размер 4;

Диапазон 1- 5000

 

        Каждый атрибут отношения определяется  на некотором домене. Домены могут  отличаться для каждого из  атрибутов (т.е. для каждого  атрибута может использоваться  свой домен, как например, домен  АА). Однако два или более атрибута могут определяться на одном и том же домене (как это показано  для атрибутов Табельный номер и Таб_ном_рук).

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

    Имя атрибута не обязательно  должно совпадать с именем  домена. 

      Домен создается оператором SQL CREATE DOMAIN  и используется при создании отношений в операторе CREATE TABLE. 

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

Таб_ном  ФИО Паспортные  данные
     
 

Здесь имеется два потенциальных ключа  Таб_ном и Паспортные данные. 

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

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

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

Товар 

ПРОДАВЕЦ ПОКУПАТЕЛЬ ТОВАР ЦЕНА
А А1 Т1 50
А А1 Т2 70
В А1 Т1 60
С С1 Т3 80
 

       Для таблицы «Товар» в качестве первичного ключа может использоваться только комбинация из трех полей ПРОДАВЕЦ ПОКУПАТЕЛЬ ТОВАР ( значения каждой комбинации является уникальными). 

 Внешний ключ – это атрибут (или несколько атрибутов) внутри отношения,  значения которого соответствуют значениям первичного ключа другого (родительского) отношения. (рис. 1.2).

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

Внешние ключи используются для обеспечения  логической связи между отношениями.

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

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

В родительской таблице это поле («таб_ном _рук») должно бать ключевым.

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

  • не должно быть одинаковых кортежей;
  • не требуется упорядочение кортежей;
  • не требуется упорядочение атрибутов.
 

   Альтернативные варианты терминов  в реляционной модели 

Основные  термины  Альтернативные термины 1 Альтернативные термины 2
Отношение Таблица Файл
Кортеж Строка Запись
Атрибут Столбец Поле
 
 

                                        1.4  Схемы баз данных 

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

       Одной из основных характеристик  связи является тип связи.

      Тип определяет возможность связи записей одной таблицы

только  с одним или несколькими другой таблицы.

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

        Примером связи   типа 1:1  является  связь  между  таблицами 

 

  

    

  
 

    

                         Рис. 1.4 Схема БД

“Страна” и “Столица”. Действительно, каждая страна имеет только одну столицу. И наоборот, каждая столица принадлежит только одной стране.

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

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

Лекция 3

  1.5. Основные области внешней памяти 

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

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

           
 

     

                Рис. 1.5 Основные области внешней памяти

       Далее рассматривается только  табличная область.        

    На  логическом уровне табличная область БД представляется как набор отдельных страниц. 

          Страница – это минимальная  совокупность данных считываемая  (записываемая) из внешней памяти  за одно обращение. Размер страницы, как правило, равен размеру  сектора диска 512 байт или  кратен 512 байт, т.е. равен кластеру.

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

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

     
     
     
     
     

                             

                   Рис. 1.6. Размещение таблиц и индексов на страницах  
     

                                 1.6. Хранение таблиц

          Существуют 2 способа хранения

  • по строкам
  • по столбцам      

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

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

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

         

      Записи фиксированной  длины 
     
     
     

     
     

                                         
 
 
 
 

                       Рис. 1.7.Структура записи фиксированной длины   

Заголовок записи содержит :

  • бит удаления
  • длину записи
  • время последней вставки / обновления
    • Группирование записей фиксированной  длины по страницам

     
     

                 Рис 1.8. Хранение записей фиксированной длины на странице 

    Заголовок страницы  может содержать:

    1 cхему записи

    2 таблицу размещения строк

    3 таблицу  размещения слотов

    4 время  последнего обновления страницы

    Схема записи содержит количество полей типы полей и их размеры.

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

      Хранение  записей большого размера (типа DLOB)

       
       
       
       
       
       

               

                          Рис.1.9. Распределение связанных записей по страницам

    Базы данных. 8