Таблиці з рядками та стовпцями як основа реляційної бази даних

U_NRA_NAMEA_PREISA_STUECKDATUMV_NAMEV_ANSCH
1Сорочка39,804024.06.1999Мейєр, ЕмільWendeweg 10, 2800 Бремен
2пальто360,001024.06.1999Мейєр, ФранцКольштрассе 1, 2800 Бремен
3Сорочка44,207024.06.1999Мейєр, ЕмільWendeweg 10, 2800 Бремен
4-йСорочка44,2020-го25.06.1999Шульце, ФріцGemüseweg 3, 2800 Бремен
5пальто360,003525.06.1999Мейєр, ФранцКольштрассе 1, 2800 Бремен
6-йБрюки110,503524.06.1999Мейєр, ЕмільWendeweg 10, 2800 Бремен
7-йБрюки110,50524.06.1999Шульце, ФріцGemüseweg 3, 2800 Бремен
8-йСорочка39,801024.06.1999Шульце, ФріцGemüseweg 3, 2800 Бремен
9Сорочка44,2020-го25.06.1999Мейєр, ЕмільWendeweg 10, 2800 Бремен

основа

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

lfNrDelivery noDate Стаття (E) Номер постачальника EP Стаття (V) Номер одержувача EP
12415 лютого 2003 рШтани, синіFA Muster-Liefer GbR, Нюрнберг39,9050
22415 лютого 2003 рШтани, коричневіFA Muster-Liefer GbR, Нюрнберг39,9050
32716 лютого 2003 рШтаниМакс Мюллер, Берлін49,9010
4-й2817 лютого 2003 рСорочкиFA Groß-Handel AG, Гамбург18.4030-й
52817 лютого 2003 рСорочкиFA Groß-Handel AG, Гамбург18.4040
6-й3518 лютого 2003 рСорочкиЛіза Майєр, Мюнхен23,905

Особливості та недоліки повністю денормалізованої таблиці

  • З одного боку, кожну інформацію можна очевидно сортувати в таблицю, яка структурована таким чином і має велику кількість стовпців. Якщо потрібно архівувати додаткову інформацію, достатньо додати подальші рядки і, якщо потрібно, залишити їх порожніми. Теоретично будь-яка база даних може містити єдину таблицю, структуровану відповідно до цього шаблону. У найбільш крайньому випадку таблиця містила б одну велику колонку тексту, в якій вся інформація була б перелічена по порядку. З іншого боку, ця форма внутрішнього представництва має очевидні недоліки, про які слід поговорити нижче.
  • Надмірність цих прикладів очевидна. У першому прикладі одні й ті самі адреси перераховуються кілька разів, так що, якщо відбудуться зміни один Адресу кількох однакових комірок доведеться шукати та переписувати. У такому випадку можна говорити про одного Аномалія оновлення. Тоді могло бути двоє різних людей з однаковими іменем та прізвищем, так що пошук до оновлення міг би знайти кілька адрес, а потім змінити їх. Однозначні люди повинні бути чітко охарактеризованими.
  • Якщо ви шукаєте всі штани в прикладі 2, вам доведеться попрацювати з пошуковим заповнювачем, який шукає "Шланг *" або "* Шланг *" і використовує "*" як заповнювач. Оскільки клітинка «Закупівля: товар» містить одночасно кілька відомостей. Якщо цікавить лише частина інформації, невідомо, де вона знаходиться (на початку чи в середині комірки), тому вираз, який потрібно шукати, повинен доповнюватися заповнювачем із обох сторін. Подібна проблема існує при пошуку місць. Людина, у якої як прізвище є слово, яке також вводиться як місце, буде знайдено під час пошуку місця.
  • Здається, така таблиця містить лише текст. Завдяки цьому текст також можна було ввести в комірку дати або кому можна використовувати як роздільник замість точки в інформації про ціну, так що значення більше не може використовуватися правильно для арифметичних операцій.
  • Приклад 2 наразі включає лише замовлення та доставку. Якби видалення або скасування доставки до "Лізи Майєр", дані про адресу також зникли, хоча вони все ще можуть бути необхідними. Це називається Видалити аномалію названий. Альтернативою може бути введення "Lisa Mayer" без доставки. Це означає, що поля, які є абсолютно необхідними для доставки, не повинні оголошуватися NOT NULL, СУБД не може забезпечити узгодженість вводу. З іншого боку, якби замовлення було обов’язковим, це було б прикладом такого Вставте аномалію. Навіть зважаючи на прийнятність особи без замовлення, незрозуміло, чи слід вводити дані у стовпець "Постачальник" або "Одержувач". Нарешті, можна подумати, що компанія є і постачальником, і одержувачем, або товари надсилаються особі, зареєстрованій як працівник.
  • Якщо компанія Muster-Liefer постачає штани різних кольорів, цю інформацію можна проігнорувати. Це унеможливлює розподіл показників купівлі та продажу за кольором штанів. Якщо ця інформація також зберігається, усі адресні дані також повинні бути введені ще раз, щоб збільшилася ймовірність помилок введення. Помилка орфографії "FI Muster-Liefer" призведе до зникнення цього запису даних при текстовому пошуку для "FA Muster-Liefer *".
  • Дві поставки 02.15.2003 стосуються різних статей. З іншого боку, дві доставки від 17.02.2003 можна об'єднати в одну доставку на 70 штук, оскільки значення комірок однакові, за винятком стовпця "Кількість", і має сенс додати дві частини інформації для кількості.
Очевидно, що така конструкція створює різні проблеми та неправильні оцінки. На відміну від будь-якого паперового архіву, можливий пошук у чистому тексті. Однак результати доведеться перевіряти ще раз вручну; кожен неправильний запис можна визначити, лише перевіривши вихідну комірку. З цієї причини такий денормалізований дизайн знищить усі переваги автоматизованого архівування даних.

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