Лекція 1 "Базові поняття бд. Моделі бд. Основні функції скбд"

Вид материалаЛекція

Содержание


База даних
База даних
Система баз данных
Аппаратное обеспечение.
Программное обеспечение.
Система керування базами даних (СКБД)
Основні функції СКБД
Моделі даних. Поняття про елементи бази даних
Клас об'єктів
Зв'язок (відношення) – спосіб, яким зв'язана інформація про різні об'єкти. Ключове поле БД
Зовнішній ключ
Гібрідні та об’єктно-орієнтовані
5. Жизненный цикл приложения баз данных
Основні етапи проектування БД
5. Нормалізація бази даних
Надмірність даних.
Надмірність даних
Аномалії відновлення
Аномалії видалення
Аномалії уведення
...
Полное содержание
Подобный материал:
  1   2   3

Курс «Организация баз данных»

Лекція 1-2. “Базові поняття БД. Моделі БД. Основні функції СКБД”

Зміст




  1. Введение
  2. Основні поняття баз даних. СКБД. Функції СКБД
  3. Моделі даних. Реляційна база даних. Поняття про елементи бази даних.
  4. Жизнений цикл БД.
  5. .Нормалізація.



  1. Введение

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

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

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

В настоящее время ведутся исследования в следующих направлениях:
  1. дедуктивные системы;
  2. экспертные системы;
  3. расширяемые системы;
  4. объектно-ориентированные системы.



  1. Основні поняття БД. СКБД. Функції СКБД

Сукупність зв’язаної інформації про деяку галузь реального світу називається інформаційною системою.

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

Існує багато визначень поняття «База даних». Наведемо деякі з них.

База даних (БД)це зв’язана інформація, яка організована деякім чином.

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

База даних – це пойменована, структурована сукупність взаємозалежних даних, які характеризують окрему предметну область і перебувають під керуванням СКБД.

Під предметною областю розуміють один або кілька об'єктів керування, інформація про які моделюється за допомогою БД і використовується для рішення різних функціональних завдань.


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

Система баз данных включает в себя (рис. 0 .1):
  1. данные, непосредственно сохраняемые в базе данных;
  2. аппаратное обеспечение;
  3. программное обеспечение;
  4. пользователей:
  1. прикладные программисты;
  2. к
    онечные пользователи;
  3. администраторы баз данных.

рис. 0.1 Система баз данных.

Данные.


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

Аппаратное обеспечение.


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

Программное обеспечение.


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

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

Система керування базами даних (СКБД) — це програмні засоби для створення, ведення і використання БД.





Пользователи.


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

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

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

Функции администратора базы данных:

  1. определение концептуальной схемы. Администратор БД определяет какие именно данные необходимо сохранять в БД. Этот процесс обычно называют логическим (или концептуальным) проектированием БД. После определения содержимого БД на абстрактном уровне, администратор БД создает соответствующую концептуальную схему, с помощью концептуального ЯОД.
  2. Определение внутренней схемы. Администратор БД решает, как данные должны быть представлены в хранимой БД. Этот процесс называют физическим проектированием. После завершения физического проектирования администратор БД с помощью внутреннего ЯОД должен создать соответствующую структуру хранения, а также определить отображение между внутренней и концептуальной схемой.
  3. Взаимодействие с пользователями. Администратор БД обеспечивает пользователей необходимыми им данными. Для этого администратор БД должен написать (или оказать пользователям помощь в написании) необходимых внешних схем. Кроме этого необходимо определить отображение между внешней и концептуальной схемами.
  4. Определение правил безопасности и целостности.
  5. Определение процедур резервного копирования и восстановления.
  6. Управление производительностью и реагирование на изменяющиеся требования.

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

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

  1. возможность сокращения избыточности;
  2. возможность устранения (до некоторой степени) противоречивости;
  3. возможность общего доступа к данным;
  4. возможность соблюдения стандартов;
  5. возможность введения ограничений для обеспечения безопасности
  6. возможность обеспечения целостности данных;
  7. возможность сбалансировать противоречивые требования;
  8. возможность обеспечения независимости данных. Поскольку программное обеспечение отделяется от данных, хранимых БД, изменения, вносимые в структуру БД, в большинстве случаев не приводят к необходимости внесения радикальных изменений в программное обеспечение.


Основні функції СКБД

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

В большинстве современных СУБД база данных представляется в виде совокупности таблиц. Рассматриваемая функция позволяет описать и создать в памяти структуру таблицы, провести начальную загрузку данных в таблицы. Примеры таких действий для СУБД MS Access и Sybase SQL Anywhere приведены на рисунках 2, 3.

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

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

В MS Access реализация данной функции сводится к созданию и выполнению запросов и форм ввода.

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

Для Sybase SQL Anywhere средством для создания и выполнения запросов является программа Sybase ISQL, а средством создания GUI – Sybase Power Designer. Пример работы ISQL приведен на рис. 5. Конечно, вовсе не обязательно использовать именно эти программные продукты. В настоящее время любой современный язык программирования имеет средства для доступа к базам данных.

3. Обеспечение логической и физической независимости данных.

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

4. Защита логической целостности базы данных.

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

5. Защита физической целостности.

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

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

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

7. Синхронизация работы нескольких пользователей.

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

8. Управление ресурсами среды хранения.

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

9. Поддержка деятельности системного персонала.

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

Ця функція включає забезпечення необхідних структур зовнішньої пам'яті для зберігання даних, прискорення доступу до даних у деяких випадках (звичайно для цього використовуються індекси). У деяких реалізаціях СУБД активно використовуються існуючих файлових систем, в інших робота виробляється аж до рівня пристроїв зовнішньої пам'яті.
  1. Керування буферами зовнішньої пам'яті.

Якщо при звертання до будь-якого елемента даних буде вироблятися обмін із зовнішньою пам'яттю, то вся система буде працювати зі швидкістю пристрою зовнішньої пам'яті.
  1. Керування транзакціями.

Транзакція - це послідовність операцій над БД, розглянута СУБД як єдине ціле. З керуванням транзакціями в багатокористувальницької СУБД зв'язані важливі поняття сериализации транзакцій і сериального плану виконання суміші транзакцій - плану, що приводить до сериализации транзакцій. Якщо вдається домогтися дійсно сериального виконання суміші транзакцій, то для кожного користувача, з ініціативи якого утворена транзакція, присутність інших транзакцій буде непомітно(якщо не вважати деякого вповільнення роботи з порівняння з однокористувальницьким режимом). У централизованых СУБД найбільше расптостранены алгоритми сериализации транзакцій, засновані на синхранизационных захопленнях об'єктів БД.
  1. Журнализация.

Під надійністю зберігання понимаеться те, що СУБД повинна могти відновити останній погоджений стан БД після будь-якого апаратного або програмного збоїти. Два можливих види збоїти: так звані м'які збої, які можна трактувати як раптову зупинку роботи комп'ютера(наприклад, аварійне вимикання харчування), і тверді збої, характеризуемые втратою інформації на носіях зовнішньої пам'яті. Для відновлення БД потрібно мати деяку додаткову інформацію, потрібна надмірність хранеия даних. Найбільше распространненный метод підтримки такий йзбыточности - ведення журналу змін БД. Журнал - особлива частина БД, недоступна користувачам СУБД і підтримувана з особливою старанністю. Стратегія «» запису, щопопереджає, у журнал: запис про зміну будь-якого об'єкта БД повинна потрапити в зовнішню пам'ять журналу раніше, ніж змінений об'єкт потрапить у зовнішню пам'ять основній частині БД. Метою процесу відновлення після м'якого збою є стан зовнішньої пам'яті основної частини БД, що виникло б при фіксації в зовнішній пам'яті змін всіх транзакцій, що завершилися.
  1. Підтримка мов БД.

У ранніх СУБД підтримувалося трохи спеціалізованих за своїми функціями язиків. Виділялися два язики: язик визначення схеми БД (SDL - Schema Definition Language) і язик маніпулювання даними(DML - Data Manipulation Language). У сучасних СУБД звичайно поддержывается єдиний інтегрований язик SQL (Structured Query Language), що сполучить засобу SDL і DML. Оператори язика SQL дозволяють визначати так звані подання БД - збережені в БД запити. Для користувача подання є такою ж таблицею, як будь-яка базова таблиця. Авторизаци доступу до об'єктів БД виробляється на основі спеціального наьора операторів SQL. Повноваження користувачів описуються в спеціальних таблицях-каталогах, контроль повноважень підтримується на язиковому рівні.
  1. Определение данных. СУБД должна допускать определения данных (внешние схемы, концептуальную и внутреннюю схемы, соответствующие отображения). Для этого СУБД включает в себя языковый процессор для различных языков определений данных.
  2. Обработка данных. СУБД должна обрабатывать запросы пользователя на выборку, а также модификацию данных. Для этого СУБД включает в себя компоненты процессора языка обработки данных.
  3. Безопасность и целостность данных. СУБД должна контролировать запросы и пресекать попытки нарушения правил безопасности и целостности.
  4. Восстановление данных и дублирование. СУБД должна обеспечить восстановление данных после сбоев.
  5. Словарь данных. СУБД должна обеспечить функцию словаря данных. Сам словарь можно считать системной базой данных, которая содержит данные о данных пользовательской БД, т.е. содержит определения других объектов системы. Словарь интегрирован в определяемую им БД и, поэтому, содержит описание самого себя.
  6. Производительность. СУБД должна выполнять свои функции с максимальной производительностью.


Найбільш розповсюджені СКБД: dBase, FoxPro, Microsoft Access для Windows з інтегрованого пакета Microsoft Office, Oraclе, My SQL Server, InterBase, MySQL.

  1. Моделі даних. Поняття про елементи бази даних


Особливості використання БД:
  • дані в БД створюються і зберігаються як єдине ціле для рішення всіх задач предметної області, тобто відпадає необхідність дублювання даних (економія пам'яті комп'ютера);
  • кожна прикладна програма вибирає з БД дані для рішення тільки своєї задачі;
  • незалежність прикладних програм від даних (зміни в даних не викликають необхідність зміни програми і навпаки).


Прийнято виділяти наступні моделі даних:
  1. Ієрархічна модель даних
  2. Мережна модель даних
  3. Реляційна модель даних
  4. Объектно-ориентированные
  5. Гибридные (объектно-реляционные)

В Ієрархічній БД всі елементи розташовані у послідовності від найвищого до най низького. Ієрархічна БД складається з упорядкованого набору дерев. Дерево складається з одного кореневого стовпця й упорядкованого набору декількох поддеревев. Тип дерева в цілому являє собою ієрархічно організований набір типів записів. Наприклад, структуру БД телефонної довідкової 09 можна представити у вигляді: Місто → Вулиця → Будинок → Квартира → ПІБ → Номер телефону.

Тут Місто є предком вулиці й т.і. В ієрархічних БД визначений повний порядок обходу – зверху долілиць, ліворуч праворуч. Тут не один нащадок не може існувати без свого батька. Завдяки цьому автоматично підтримується цілісність посилань між предками й нащадками.

Реєстр Windows – ієрархічна БД






Рисунок 1_1_1. «Ієрархічна БД»


Мережний підхід до організації даних є розширенням ієрархічної моделі. В ієрархічній моделі запис - нащадок повинен мати тільки одного предка, у мережній структурі даних запис може мати будь-яке число предків.





Рисунок 1_1_2. «Мережна БД»


Реляційна модель опирається на систему понять реляційної алгебри: таблиця, відношення, рядок, стовпець, первинний ключ.

У реляційної БД вся інформація представлена у вигляді прямокутних таблиць. Реляційна модель розроблена Коддом на початку 70-х років. У таких БД набір повторюваних даних вноситься в окрему таблицю - довідник, завдяки йому виключено або зведено до мінімуму дублювання інформації.




Рисунок 1_1_3. «Реляційна БД»


  1. Реляційна база даних

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

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

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

Поняття, які використовуються у реляційних БД:

Клас об'єктів - сукупність об'єктів, що володіють однаковим набором властивостей. Об’єкти одного класа об’єднують у одну таблицю. Наприклад, у базі даних про ВНЗ класами об'єктів є студенти, викладачі, предмети. Для кожного окремого об'єкта з даного класу об'єктів у таблиці створюється окремий запис.

Запис БД (кортеж) - це рядок таблиці, конкретна реалізація (значення) поняття предметної області – мість інформацію про один об’єкт.

Поле БД (властивість, атрибут) - це стовпець у таблиці даних - властивість - атрибут даного поняття предметної області (певна частина інформації про деякий об'єкт).

Для кожного поля задається тип даних, що можуть знаходитися в ньому. Записи у таблиці відрізняються значеннями своїх полів.

Домен – множество атомарных значений одного и того же типа. Так, домен названий групп – множество названий групп в университете.

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

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


Зв'язок (відношення) – спосіб, яким зв'язана інформація про різні об'єкти.

Ключове поле БД (ключ, первинний ключ) - поле або кілька полів, які однозначно ідентифікують запис.

При визначенні состава таблиць варто керуватися правилом: у кожній таблиці повинні зберігатися дані тільки про один клас об'єктів. Наприклад, в одній таблиці не можна зберігати анкетні дані студента й прізвища викладачів, яким він здавав іспити, тому що це властивості різних класів об'єктів.

Якщо в базі даних повинна втримуватися інформація про різні класи об'єктів, то вона повинна бути розбита на окремі таблиці. Зв'язок між таблицями здійснюється за допомогою загальних полів.


рис. 0.2 Отношение.

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

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

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

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

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

Гібрідні та об’єктно-орієнтовані

……


Поняття про елементи бази даних

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




5. Жизненный цикл приложения баз данных


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

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

Действия, выполняемы на каждом этапе жизненного цикла БД:






Основні етапи проектування БД


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



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

Процесс проектирования (моделирования) базы данных представляет собой многоэтапный процесс.

Рассмотрим основные этапы этого процесса (рис. 14).



Рис. 14. Этапы проектирования базы данных

Заметим, что в представленном процессе проектирования достаточно часто возникает необходимость возврата на один или несколько шагов назад. Так, например, при проектировании логической модели (блок 5) не удается достичь адекватного представления концептуальной модели средствами модели данных СУБД. В этом же случае необ-ходимо либо вернуться на шаг назад и выбрать другую СУБД, либо вернуться к блоку 3 и изменить вид концептуальной модели. Так же, если полученные при реализации блока 7 оценки эксплуатационных характеристик не отвечают требованиям пользователя, возможны пересмотры всех ранее полученных решений (блоки 7, 6, 5, 4, 3).


5. Нормалізація бази даних


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

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

Надмірність інформації усувається не стільки з метою економії пам'яті, скільки для виключення можливої суперечності збережених даних і спрощення керування ними.

Використання ненормалізованих таблиць може привести до порушення цілісності даних у БД.

Проблеми, що виникають при використанні ненормалізованих таблиць:


Надмірність даних.

Аномалії відновлення.

Аномалії видалення.

Аномалії уведення.


Приклад опису предметної області «Приймальна комісія» для варіанта 31.

Ви працюєте в приймальній комісії в деякому ВНЗ України і ведете облік зарахування абітурієнтів на бюджетні місця. Абітурієнти складають іспити на один або декілька факультетів ВНЗ. Відомий розклад іспитів: дата, предмет іспиту, факультет, на який іспит задається. На іспитах абітурієнти отримують оцінки. Щодо кожного абітурієнта зберігаються деякі дані, зокрема, прізвище, ім'я, по батькові, номер і дата видачі атестата.


Структура ненормалізованої таблиці «Оцінки»:


Код оцінки

Прізвище

Ім'я

По батькові

Номер атестату

Дата видачі

Предмет

Дата іспиту

Тип іспиту

Факультет

Оцінка

Схема 3.1 «Оцінки»


Надмірність даних

Надмірність даних проявляється в тім, що в декількох записах таблиці БД повторюється та сама інформація. Наприклад, один і той абітурієнт може сдавати декілька іспитів, у тому числі на різні факультети. Таким чином, якщо він сдає декілька іспитів, то його особисті дані будуть дублюватися, що приведе до невиправданого збільшення обсягу зовнішньої пам'яті.


Аномалії відновлення

Аномалії відновлення тісно пов'язані з надмірністю даних. При відновленні даних у ненормалізованій таблиці виправлення буде внесено не в усі записи, виникне невідповідність інформації - аномалія відновлення. Так, наприклад, якщо абітурієнтка змінює прізвище, то зміни можуть бути внесено не у всі записи.


Аномалії видалення

Аномалії видалення виникають при видаленні даних з ненормалізованої таблиці. Наприклад, якщо на якусь спеціальність відміняється набір, то певні іспити анулюються. Видалення іспитів приведе до втрати даних про абітурієнта, який на ці іспити зареєстрований. Так само, якщо абітурієнт відмовляється від іспитів, то відаляється інформація про іспити, на які він зареєстрований.


Аномалії уведення

Аномалії уведення виникають при додаванні в таблицю записів і звичайно виникають, коли для деяких полів таблиці задані обмеження not null (не порожнє поле), наприклад, поле «Оцінка» не може бути not null, тому що спочатку оцінка не відома.


Теорія нормалізації заснована на концепції нормальних форм. У теорії БД звичайно ведеться наступна послідовність нормальних форм:
  • Перша нормальна форма (1NF)
  • Друга нормальна форма (2NF)
  • Третя нормальна форма (3NF)
  • Нормальна форма Бойса-Кодда (BCNF)
  • Четверта нормальна форма (4NF)
  • П'ята нормальна форма або нормальна форма проекції-з'єднання (5NF або PI/NF).


Основні властивості нормальних форм:
  1. Кожна наступна NF у деякому змісті краще попередньої.
  2. При переході до наступної NF властивості попередніх нормальних форм зберігаються.

В основі процесу проектування лежить метод нормалізації - декомпозиція відносин перебувающих в попередньої NF, у двоє або більше відносин, що задовольняє вимоги наступної NF.

Перша NF - значення всіх атрибутів відносини повинні бути атомарними. По визначенню таблиця «Оцінки» уже перебуває в 1NF.

Друга NF - відносини перебувають в 2NF, їли відношення перебуває в 1NF і кожний не ключовий атрибут повністю залежить від первинного ключа.

Не ключовим атрибутом називається атрибут відносини, що не входять до складу первинного ключа.

Щоб перейти від 1NF до 2NF, потрібно виконати наступні кроки:
  1. Визначити на які частини можна розбити первинний ключ так, щоб деякі з не ключових полів залежали від однієї із цих частин (причому ці частини можуть містити кілька атрибутів).
  2. Створити нову таблицю для кожної такої частини ключа й групи залежних від її полів і перемістити їх у цю таблицю. Частина колишнього первинного ключа стане при цьому первинним ключем нової таблиці.
  3. Видалити з вихідної таблиці поля, переміщені в інші таблиці, крім тих з них, які стануть зовнішнім ключем.


Приклад

Таблицю «Оцінки» ділимо на дві частини. Первинний ключ таблиці «Оцінки» складається із двох атрибутів: «Код Оцінки» і «Код абітурієнта». Всі особисті дані про абітурієнтів залежать тільки від атрибута «Код Абітурієнта». Атрибути відповідним цим даним, виділимо в таблицю «Абітурієнти». Інформацію про оцінки та іспити винести (залишити) у таблицю «Оцінки».


Код абітурієнта

Прізвище

Ім'я

По батькові

Номер атестату

Дата видачі




Схема 3.2 «Абітурієнти»


Код оцінки

Код абітурієнта

Предмет

Дата іспиту

Тип іспиту

Факультет

Оцінка




Схема 3.3 «Оцінки»


Дві таблиці зв'язані між собою по полю «Код абітурієнта», що є первинним ключем для таблиці «Абітурієнти» і зовнішнім для таблиці «Оцінки». Дане поле додане при нормалізації.

Третя NF - відношення R перебуває в третьої NF у випадку, якщо воно перебуває в 2NF і кожний не ключовий атрибут не транзитивно залежить від первинного ключа.

Функціональна залежність атрибутів Х и Y відносини R називається транзитивної, якщо існує такий атрибут Z, що є функціональні залежності X->Z і Z->Y, але відсутня функціональна залежність Z->X.

Замечание:

Процесс нормализации основан на понятии функциональной зависи­мости атрибутов. Говорят, что атрибут В функционально зависит от атрибута А (обозначается А->В), если в любой момент времени каждому значению атрибута А соответствует не более одного значения атрибута В. Если неключевой атрибут зави­сит от всего составного ключа и не зависит от его частей, то говорят о полной функциональной зависимости атрибута от составного ключа. Если атрибут А зависит от атрибута В, а В зависит от атрибута С, но обратная зависимость отсутствует, то говорят, что атрибут С зависит от А транзитивно.


Приклад

Між атрибутами «Код оцінки» і «Факультет» транзитивний зв'язок. Факультет залежить не від коду оцінки, а від предмету. Ми не можемо занести в БД факультет з певними даними про іспит, поки не буде оцінки, яку отримав абітурієнт за іспит.

Або

Між атрибутами «Код оцінки» і «Предмет» транзитивний зв'язок. Предмет залежить не від коду оцінки, а від факультету. Ми не можемо занести в БД предмет, який здається на факультет, поки не буде оцінки, яку отримав абітурієнт на даному факультеті.


Щоб перейти від 2NF до 3NF, потрібно виконати наступні кроки:
  1. Визначити всі поля (або групи полів), від яких залежать інші поля.
  2. Створити нову таблицю для кожного такого поля (або групи полів) і групи залежних від нього полів перемістити в цю таблицю. Поле (або група полів), від якого залежать всі інші переміщені поля, стане при цьому первинним ключем нової таблиці.
  3. Видалити переміщені поля з вихідної таблиці, залишивши лише ті з них, які стануть зовнішніми ключами.


Таблиця «Оцінки» ділиться на дві - «Оцінки» і «Іспити»:

Код оцінки

Код абітурієнта

Код іспиту

Оцінка

Схема 3.4 «Оцінки»


Код іспиту

Предмет

Дата іспиту

Тип іспиту

Факультет

Схема 3.5 «Іспити»

На практиці 3NF у більшості випадків досить.



Код абітурієнта

Прізвище

Ім'я

По батькові

Номер атестату

Дата видачі




Код оцінки

Код абітурієнта

Код іспиту

Оцінка

Код іспиту

Предмет

Дата іспиту

Тип іспиту

Факультет




Схема 3.6. Таблиці «Абітурієнти», «Оцінки», «Іспити»


Лекция 3-4

  1. Цілісність реляційних БД. Аналіз обмежень цілісності в БД, розробка методів їхньої підтримки


Забезпечення цілісності даних - одне з найважливіших завдань, що виникають при проектуванні бази даних. Поняття «цілісність» уживається в контексті «несуперечність». Обмеження цілісності являють собою твердження про припустимі значення окремих інформаційних одиниць і зв'язках між ними. Обмеження цілісності визначаються в більшості випадків особливостями предметної галузі, тому що використання обмежень також зв'язано й з адекватністю відображення предметної галузі за допомогою даних, збережених у БД.

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

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

Внутрішні обмеження цілісності бази даних – це обмеження, пов'язані з обмеженнями, накладеними на структуру даних.

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

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

Щоб інформація, що зберігається в БД була однозначної й несуперечливої, у БД установлюються деякі обмежувальні умови.

Обмежувальні умови - це правила, що визначають можливі значення даних.

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

Найважливішими обмеженнями є:

1. Категорична цілісність: рядок не може бути занесена в БД доти, поки не будуть визначені всі атрибути її первинного ключа. Первинний ключ не може бути порожнім.

2. Посилальна цілісність: якщо дві таблиці зв'язані між собою, те зовнішній ключ таблиці повинен містити тільки ті значення, які вже є серед значень ключа, по якому здійснюється зв'язок.