інформаційна надмірність
Проектування баз даних. Інформаційна надмірність. Надмірність даних в базі даних. Проблеми виникають через інформаційну надмірності
Привіт, шановні відвідувачі мого скромного блогу для початківців Вебразработчик і web майстрів ZametkiNaPolyah.ru. Продовжуємо сьогодні рубрику Нотатки про MySQL. в якій я встиг описати установку MySQL сервера. настройку MySQL сервера і файл my.ini. а також поговорив про видах і типах баз даних. Сьогодні я хотів би поговорити про аномалії в базі даних і проблеми надмірності даних в базі даних. тобто про надмірності інформації.

Позбутися від надмірності даних, а отже і від аномалій баз даних - це питання проектування баз даних. І вирішувати питання усунення надмірності в базі даних слід до того, як ви почали її реалізовувати програмно, тобто, до того як почали створювати базу даних в тій чи іншій СУБД, в нашому випадку СУБД MySQL.
Щоб позбутися від інформаційної надмірності, а разом з тим вирішити проблему модифікації, видалення та додавання даних вам не потрібно будь-яких спеціальних програм, досить буде представляти структуру проектованого об'єкта (зауважте, поки ще не структуру бази даних), мати під рукою кілька чистих аркушів паперу, олівець або ручку. Але, щоб почати від чогось позбавлятися, потрібно знати суть самої проблеми, через що ця проблема виникає і так вона для вас критична.
Через надмірності інформації в базі даних виникають не тільки проблеми модифікації, додавання і видалення даних з бази даних, а й гостро постає питання економії місця на диску, погодьтеся нерозумно зберігати одну і ту ж інформацію в різних місцях. Надмірність баз даних тісно пов'язана з нормальними формами. Точніше, інформаційна надмірність - це негативний фактор, що впливає на цілісність бази даних. що змушує нас приводити свої бази даних до нормальної форми.
Інформаційна надмірність. Надмірність бази даних. Що таке надмірність.
Почнемо ми з інформаційної надмірності і надмірності реляційних баз даних зокрема. Оскільки, саме ця надмірність і змушує нас нормалізувалася бази даних.
Для початку напишу розумне визначення надмірності, а потім спробую пояснити його по-російськи.
Інформаційна надмірність - термін з теорії інформації, що означає перевищення кількості інформації, використовуваної для передачі або зберігання повідомлення, над його інформаційної ентропією.
Давайте почнемо розбиратися з визначенням надмірності і почнемо з терміна інформаційна ентропія.
Інформаційна ентропія - це міра невизначеності інформації, невизначеність появи будь-якого символу. Дане визначення з'явилося в теорії електрозв'язку. Для адміністратора баз даних інформаційну ентропію слід інтерпретувати трохи по-іншому: інформаційна ентропія все також міра невизначеності інформації, але, яка інформаційна невизначеність може виникнути в базі даних?
Наприклад, у нас є база даних, в якій зберігається бібліотека і є письменник Іванов І.І. скільки книг написав Іванов І.І. Бог його знає. Може одну, а може і сто. І скільки разів з'явиться цей Іванов І.І. в нашій таблиці, ми не знаємо. Така ось невизначеність інформації.
Будь-яка база даних призначена для зберігання інформації. І при проектування бази даних слід врахувати те, що якась інформація може повторюватися кілька разів. А кожна повторювана запис - це зайняте місце на диску. Тобто перевищення кількості інформації необхідного для зберігання даних.
Звичайно, можна сказати, що зараз, з появою терабайтних накопичувачів відпала необхідність економити місце на диску. Але інформаційна надмірність веде не тільки до збільшення необхідного обсягу пам'яті для зберігання інформації, яка міститься в базі даних.
Наслідки інформаційної надмірності в базі даних. Надмірність даних. Аномалії (проблеми) в базі даних.
Як ми вже з'ясували, надмірність інформації веде не тільки до того, що потрібне збільшення обсягу накопичувачів, але і призводить до аномалій в базі даних.
Аномалії в базі даних - це проблеми пов'язані з обробкою інформації, а точніше з видалення даних з бази даних, з модифікацією даних в таблиці бази даних і аномалія додавання даних в базу даних.
Як ви зрозуміли, в базі даних є три аномалії:
- Аномалія включення - це проблема, пов'язана з додаванням даних в базу даних
- Аномалія модифікації - це проблема, пов'язана зі зміною даних в базі даних
- Аномалія видалення - це проблема, пов'язана з видалення даних в базі даних
Всі ці проблеми пов'язані з цілісністю баз даних, а саме з надмірністю даних в базі даних. Давайте зупинимося детальніше на кожній аномалії.
Давайте подивимося на прикладі наближеному до реальності, що таке надмірність даних. Припустимо, у нас є таблиця, в якій зберігаються дані список викладачів і список предметів, які вони ведуть. Природно, в це таблиці присутні інформаційна надмірність.
Таблиця з інформаційної надмірністю
Надмірність даних в цій таблиці полягає в тому, що будь-який викладач може вести кілька предметів, як викладач Іванов і для кожного нового предмета доводиться додавати нові записи в таблицю.
Один викладач може вести різні предмети, а різні предмети можуть вести різні викладачі. Давайте подивимося, які аномалії можуть відбутися в даному конкретному випадку і як можна позбутися від аномалій в конкретному випадку.
Аномалія включення. Проблема додавання даних в базу даних.
Надмірність даних очевидна, оскільки сталося дублювання інформації, викладач Іванов веде два предмети і його довелося вписати двічі в таблицю. Але це ще не все. Припустимо, в нашій школі з'явився новий предмет і ми хочемо його додати в існуючу таблицю бази даних, але ми ще не знайшли викладача для цього предмета. А вписати в таблицю предмет потрібно вже зараз.
У цьому випадку ми повинні привласнити значення NULL кожному атрибуту викладача, але робити це ніяк не можна, так як атрибут «Код викладача» є первинним ключем відношення (первинним ключем таблиці). Результатом спроби створення такого запису буде порушення цілісності даних бази даних, а будь-яка СУБД. в тому числі і СУБД MySQL відхилить подібну спробу створення такого запису.
Все вищеописане є аномалією включення. Щоб позбутися від аномалії включення потрібно розбити таблицю на дві: таблиця викладачів і таблиця предметів. Приблизно це буде виглядати так:

Позбавляємося від надмірності даних в базі даних.
Тут ми розділили загальну таблицю, тим самим позбулися аномалії включення і від виниклої інформаційної надмірності, тобто від дублювання в базі даних. В принципі те, що ми зробили в даний момент - привели базу даних до другої нормальної форми.
Друга нормальна форма дозволяє нам позбутися від аномалії включення, а також від дублювання інформації в базі даних, тобто ми позбавляємося від надмірності інформації.
Аномалія модифікації. Проблема зміни бази даних.
Наступна проблема, яка може виникнути через надмірність бази даних - це проблема внесення змін до таблиці бази даних або як її ще називають - аномалія модифікації.
У нашому прикладі проблема модифікації могла б виникнути при спробі зміни прізвищ викладачів, наприклад, якби в цьому списку була незаміжня жінка з прізвищем Сидорова, то можливо, коли-небудь вона вийшла б заміж і змінила прізвище, а оператору довелося б для кожного запису, в якій була прізвище Сидорова замінити на нове прізвище. Це досить нудна робота. Кожна така запис або рядок таблиці бази даних називається кортежем.
Щоб позбутися від аномалії модифікацій і всі пов'язані з нею проблеми ми можемо вдатися до попереднього способу, просто розбиваємо одну велику таблицю на дві маленьких. Тобто, наводимо базу даних до другої нормальної форми або просто нормалізуємо.
І знову ж таки, таким чином ми позбавляємося від дублювання даних в базі даних. Все досить просто.
Аномалія видалення. Проблема видалення даних з бази даних.
Проблема видалення даних з бази даних - це ще одна проблема, яка з'являється, якщо дані в базі надлишкові її ще називають аномалія видалення. Проблема видалення даних з бази даних полягає в тому, що при видалення запису або кортежу з таблиці, що відноситься до будь-якого з викладачеві, разом із записом про викладача, з бази даних віддалиться вся інформація про предмет, який вів цей викладач.
Вирішується проблема видалення даних з бази даних дуже просто, нормалізуємо базу даних до другої нормальної форми, тобто поділяємо таблицю на дві, як це показано в розділі присвяченому аномалії включення.