Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
lek_ful.docx
Скачиваний:
2
Добавлен:
18.09.2019
Размер:
93.84 Кб
Скачать

Системы хранения данных.

Концептуальная модель представляемой области — представление характеристик в терминах относящихся к ним сущностей (entities) и отношений между сущностями.

entities

relation

ER

Варианты структур хранения данных:

  1. Файловые формы

  2. Табличные

  3. Предикатные

  4. Сетевые

  5. Иерархические

  6. Рекурсивные

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

Файл — набор записей, которые содержат логически связанные данные.

Каждая запись состоит из набора полей.

Запись — единица обмена данными между первичными и вторичными устройствами хранения.

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

Организация и метод доступа как синонимы:

  1. Неупорядоченный файл — куча.

    • Все пишется в хвост.

    • Операции вставки очень эффективны.

    • Поиск херовый.

  1. Упорядоченный файл — записи сортируются по значению полей. Каждая запись на отдельную страницу.

    • Поле упорядочивания - поле, по которому сортируется.

    • Усложняются операции вставки при переполнении страниц.

  1. Хэширование — для вычисления адреса страницы используется хэш-функция.

    • Использование метода хэширования для извлечения основано на полном известном значение хэш поля.

    • Поэтому хэширование не подходит для извлечения данных по образцу или диапазону.

    • Хэширование не подходит для поиска данных по другому полю, отличного от поля хэширования.

  1. Индексирование

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

    • Индекс бд упорядочен.

    • Лексико-графический

    • Структура индекса состоит из ключевого значения и адреса файла.

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

      2. Многоуровневые индексы (индекс по индексу).

      3. Древовидные (В-деревья) — индексы в виде дерева в виде структуры указателей друг на друга

      • Быстрый поиск.

      • Перестройка очень грустно делается.

  1. Многомерные массивы

    • Удобство пользователя

    • Физически все массивы одномерные

    • Последовательные элементы двумерных массивов соотв. более частому изменению младших индексов.

Ограничение файловых систем хранения:

  1. Разделение и изоляция данных в отдельных файлах.

    • Затрудняет доступ к полям записей, если он прямо не предусмотрен правилами хранения.

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

  1. Дублирование данных в разных файлах:

    • Расход ресурсов.

    • Данные м.б. противоречивы в разных файлах (потеря целостности данных)

    • Принцип - «однократный ввод, многократное использование»

  1. Зависимость программ от данных.

  2. Несовместимость форматов файлов.

2. Табличные формы хранения данных — реляционная модель

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

  2. Отношение — плоская таблица, состоящая из столбцов и строк.

  3. Атрибут — именованный столбец отношений.

    • Столбец = атрибут

    • Строка = запись

    • Атрибуты м.б. располагаться в любом порядке.

    • Некторые атрибуты м.б. входить в несколько отношений.

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

    • Каждый атрибут реляционной базы определяется на домене.

  1. БД — не только тип данных, но и их смысл (семантика)

  1. Кортеж — строка отношений.

  2. Степень — количество атрибутов, которые содержит отношение (столбцов).

  3. Координальность — количество кортежей в отношений (строк).

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

Ключи:

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

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

Свойства:

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

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

Отношение может иметь несколько потенциальных ключей.

  • Составной ключ — ключ, состоящий из нескольких атрибутов.

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

  • Первичный ключ — потенциальный ключ, который выбран для уникальной идентификации кортежей внутри отношений.

  • Альтернативные ключи — потенциальные ключи, которые не выбраны в качестве первичного ключа.

  • Внешний ключ — атрибут или множество атрибутов внутри отношения, которые соответсвуют потенциальному ключу некоторго (мб того же самого) отношения.

ИСО

А1

А2

Отношение

Таблица

Файл

Кортеж

Строка

Запись

Атрибут

Столбец

Поле

Диграмма «сущность-связь» - графическое представление структуры БД.

Branch (branchNo, steckmб city, postcode);

Реляционная схема:

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

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

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

Следующий параграф

Сетевые формы хранения данных

Сетевые формы хранения данных — это в явном виде перечисленные реализации реляционных схем.

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

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

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

Иерархические формы хранения данных

Ограниченный подтип сетевой модели.

В иерарх. модели узел может иметь только одного родителя.

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

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

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

Предикатные формы хранения данных

Предикат — функция P(x1,x2,...,xn), которая отображает упорядоченный набор конечного числа независимых переменных, каждая из которых принадлежит заданному множеству М в множество истинностных значений.

Пустая конструкция — предикатный символ P( , , , , ,);

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

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

Рекурсивные формы хранения данных.

Каждая разрешенная комбинация фактов пишется в явном виде.

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

Модель данных

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

DM=<D,M,A>

D – заданное множество, которое называется носитель структуры.

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

А — ограничения на отношения (аксиома структур).

Для любой модели данных след сущности:

Элемент данных — понимается так же как в программировании.

Запись — минимальная уникально-идентифицуруемая единица независимого хранения данных.

Схема записи — описание внутренней структуры записи на языке конкретной бд.

Поля записей — позиции в структурах хранения.

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

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

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

Модели архитектуры БД, понятие об управление СУБД.

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

Первой исторически возникла двухуровневая архитектура.

Схема — собственно БД. Сюда входит: Имя базы, Тип записи, Компоненты записи.

Набор подсхем(субсхем) — пользовательское представление.

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

  • Внешний уровень: пользователь 1, пользователь 2....

  • Концептуальный

  • Внутренний

  • Физический

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

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

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

1. Все сущности, их атрибуты и связи

2. Ограничения на данные

3. Семантическая информация о данных

4. Информация о мерах безопасности и поддержки целостности данныъ.

Уровень не содержит методы хранения данных.

  1. Внутренний уровень — физическое представление БД.

    1. Распределение дискового пространства по данным и по индексам.

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

    3. Полная адресация записей.

    4. Сведения о сжатии и шифровании.

  1. Физический уровень — контролируется ОС под управлением СУБД

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

Нормализация реляционных БД.

Характерестические функции отношений:

  1. Семейства множеств — множества состоящие из необязательно различных элементов.

D={di} i=1,...,n

R=R(D1,D2,...,Dn)

D* <=Пdi=D1*D2*...*Dn={(d1,d2,...,dn)}

Заданное подмножество декартово произведение множеств Di

В данном кортеже каждый элемент является элементом семейства.

  • Множество Di называются доменами отношений.

  • Атрибутами отношений называются подмножества доменов отношения, выделенные за счет задания D*.

Атрибут отношения характерезуется:

  1. Позиция перечня аргументных мест отношения.

  2. Критерий принадлежности соответсвующих значений к определенному кортежу.

Атрибут реляционной таблицы характеризуется:

  1. Уникальное имя.

  2. Однозначно ассоциированным с этим именем, доменов.

  3. Ассоциированным набором условий целостности.

Отношение и реляционная таблица — это не одно и тоже.

Отношение — информация вообще.

Реляционная таблица — данные, которыми эта информация представлена.

F(x1,x2,...,xn)= {1(true) для любого набора, который есть в таблице

{0(false) для наборов, которых нету

Такая функция называются обычной функцией отношенияю.

Если множество значений F заданно на (1, 0), то это функция. Если на пространстве (true, false), то это предикат.

Понятия и цель нормализации.

Оптимизация группировки атрибутов — имеет 2 цели:

  1. Минимизировать избыточность данных.

  2. Предотвратить возможное возникновение аномалий обновления.

Аномалии:

  1. Аномалии вставки.

  2. Аномалии удаления.

  3. Аномалии модификации.

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

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

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

Функциональная зависимость — смысловое (семантическое) свойство атрибутов отношений.

Нормализацию базы невозможно провести автоматически.

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

Если две строки имеют одно и тоже значение атрибута А, то они обязательно имеют одно и тоже значение B. Но не наоборот. Для одно и того же значение В может существовать несколько А.

Детерминант (определитель) — атрибут или группа атрибутов, расположенная на диаграмме слева от стрелки.

Пример — должность сотрудников: Каждый сотрудник занимает только одну должность, но одну должность может занимать несколько сотрудников.

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

  • Функциональная зависимость — свойство не конкретного экземпляра, а свойство чего то в целом.

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

  • Необходимо исключить из рассмотрения все тривиальные функциональные зависимости

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

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

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

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

Аксиомы Армстронга.

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

Замыкание набора функциональных зависимостей Х — это множество всех Х* которые могут быть выведены их Х.

Для вычисления Х* используется набор правил вывода Армстронга.

  1. Рефлексивность: Если В подмножество А, то А->В;

  2. Дополнение: А->B то (A,C)->(B,C);

  3. Транзитивность A->B, B->C то А->C;

  4. Самоопределение А->A;

  5. Декомпозиция A->(B,C) to A->B and A->C;

  6. Объединение A->B, A->C to A->(B,C);

  7. Композиция A->B; C->D to (A,C)->(B,D);

Содержательно эти правила легко иллюстрируются диаграммами Эйлера-Венна.

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

  1. Каждая зависимость в Х имеет единственный атрибут в правой части.

  2. Все избыточные атрибуты в левой части должны быть удалены.

  3. Все зависимости выводимые из других должны быть удалены.

Стратеги преобразования выражений реляционной алгебры.

Для оптимизации запросов, и минимизации времени и ресурсов используются эвристические правила.

Правила:

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

  2. В одну операцию объединяются декартово произведение и следующая за ней операция выборки, предикат которой представляется условие соединения.

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

  4. Как можно более ранние выполнения операций проекции.

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

Обзор основных конструкций языка SQL

SQL – это не процедурный язык, который по факту является стандартным языком для определения и манипулирования РБД(реляционными БД).

Наиболее важный в SQL оператор select, объединяет 3 основных операции реляционной алгебры:

  1. Выборку

  2. Проекцию

  3. Соединение

Результатом селекта является таблица содержащая не менее одного столбца и не менее нуля строка.

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

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

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

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

В языке SQL определено 5 агригирующих функций:

  • count

  • sum

  • avg

  • min

  • max

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

Замечание: в одной конструкций селект нельзя смешивать агригирующие функции и имена столбцов, за исключением использования group by.

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

  • heavingвыполняется по отношению к группам. та же функции, что и where по отношению к строкам. Замечание: в отличие от where в конструкций heaving могут использоваться агригирующие функции.

Подзапрос — это завершенный оператор селект, встроенный в тело другого запроса. Может помещаться в конструкцию where or heaving внешнего оператора селект.

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

Существует 3 типа подзапросов:

  • Скалярный — возвращает единственное значение.

  • Строковый — возвращает данные из нескольких столбцов, но в виде одной строки. Как правило такой подзапрос используется в предикатах.

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

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

  • union – объединение

  • intersect – пересечение

  • except — разность

Помимо селект язык DML(манипуляция) SQL включается еще несколько операторов:

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

  • update – позволяет обновить одно или несколько значений столбцов заданных таблиц.

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

Стандарт ISO предполагает, что SQL поддерживает 8 базовых типов данных:

  1. Логические строки

  2. Символьные строки

  3. Битовые строки

  4. Точные числа

  5. Округленные числа

  6. Дата/время

  7. Временной интервал

  8. Символьные и двоичные большие объекты.

Язык DDL(создание) позволяет создавать новые объекты:

  • create схема and drop схема - создать, удалить схему

  • create table, alter table, drop table – создать, изменить, удалить таблицу

  • create index, drop index – создать, удалить индекс

  • commit – транзакция успешно завершена, в базе нужно зафиксировать все изменения.

  • rollback – выполнение транзакции должно быть прекращено, все изменения отменяется, фиксируется состояние базы до начала транзакции.

Реляционная полнота языка SQL

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

Наиболее сложно выражаются операторы соединения, пересечения, деления.

DML

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

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

Хотя чистый SQL не процедурный язык, существуют его процедурные расширения, позволяющие организовать циклическое базовые конструкции:

  • Для СУБД MSAccess — это язык VBA.

  • Для Oracle — PLSQL

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

Курсоры — селект только одно строку, если нужно несколько, используется курсор

    • Он действует как указатель на конкретную строку результатов запроса.

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

    • Для обращения к след. строке, курсор передвигается на единицу.

    • Выбор конкретной строки запроса осуществляется с помощью оператора FETCH.

На сегоднешний день имеются хорошие альтернативы курсору:

  1. Патерн MVC – model view controller.

  2. Патерн View.

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

  • Параметров мб несколько.

  • И процедуры и функции могут модифицировать и возвращать данные, передаваемые в качестве параметра.

  • Параметр должен иметь конкретное имя и конкретный тип данных.

  • К ним может пристроено добавочное обозначение

    • in – входное

    • out – выходное

    • in/out

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

Используется для:

  1. Осуществление ограничения ссылочной целостности.

  2. Комплексных ограничений предметной области.

  3. Для контроля изменений данных.

Тело тригера - код внутри тригера.

Базируется на модели — событие, условие, действие.

Как события в СУБД Oracle мб рассмотрены:

  1. Операторы insert, update, delete применяемые к указанной таблице или к указанному представлению

  2. Операторы create, alter, drop – применяемые к любому объекту схемы.

  3. Запуск БД или остановка экземпляра.

  4. Регистрация пользователя в системы и выход из системы.

  5. Конкретное сообщение об ошибке или вообще сообщение об ошибке.

Можно так же определить когда должен сработать тригер — до или после события.

Действия которое должно быть препринято:

  1. Операторы SQL

  2. Код на высокоуровневом языке.

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

Условия (как правило предикат), которые определяет действие, которое должно быть выполнено в обязательном порядке:

Существует 2 типа тригеров, которые запускаются разными ключевыми словами:

  1. for, each, row – для каждой строк. Строковые тригеры.

  2. new – новое значение.

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

Особенности представления:

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

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

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

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

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

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

  3. Обновления не допускаются в любых представлениях, включающих операции агригирования или групирования.

СУБД постоянно хранит в базе определение представления (запрос на представление) и если обнаруживается ссылка на представление СУБД применяет один из 2-х подходов:

  1. Замена представления — СУБД преобразует исходный запрос в эквивалентный запрос к таблицам, использованный в определение представления.

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

Средства поддержки целостности данных

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

5 типов:

  1. Обязательные данные.

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

  3. Ссылочная целостность.

  4. Ограничения для доменов.

  5. Корпоративные ограничения.

Все ограничения определяются в операторах create and alter table.

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

Значение NULL служит для представления данных, которые в данный момент отсутствуют, недоступны или неопределены.

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

Для разрешения это коллизии предусматривает спецификатор not null, он указывается для конкретных столбцов.

По умолчанию для всех столбцов применяется спецификатор нул.

В базом отношении ни одни атрибут первичного ключа не может содержать значение типа NULL. Для задания этого ограничения стандарт ИСО использует конструкцию primary key в операторах create and alter table. Он может состоять из одного или нескольких столбцов.

Эта конструкция указывается в определение таблицы только один раз, для альтернативных ключей используется ключевое слов unique — уникальный. Целесообразно явно прописывать нот нул.

СУБД отвергает любые попытки выполнения insert or update, которые влекут за собой создание повторяющегося значение в любом потенциальном ключе.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]