Ставање на база на податоци во втора нормална форма
Во текот на изминатиот месец, разгледавме неколку аспекти на нормализирање на табелата со база на податоци. Прво, разговаравме за основните принципи на нормализацијата на базата. Последен пат, ги истражувавме основните барања утврдени со првата нормална форма (1NF). Сега, да го продолжиме нашето патување и да ги покриеме принципите на втората нормална форма (2NF).
Сети се на општите барања на 2NF:
- Отстранете ги подмножества на податоци што се однесуваат на повеќе редови на табелата и ставете ги во посебни табели.
- Создајте односи меѓу овие нови табели и нивните претходници преку употреба на странски клучеви.
Овие правила може да се сумираат во едноставна изјава: 2NF се обидува да ја намали количината на излишни податоци во табела со тоа што ја извлекува, ставајќи ја во нова табела и создавајќи односи меѓу тие табели.
Ајде да погледнеме еден пример. Замислете онлајн продавница која ги одржува информациите за клиентите во базата на податоци. Тие може да имаат по една табела наречена Купувачи со следниве елементи:
- CustNum
- Име
- Презиме
- Адреса
- Град
- Држава
- ZIP
Краток преглед на оваа табела открива мала количина на непотребни податоци. Ние сме складирање на "Море Клиф, NY 11579" и "Мајами, FL 33157" записи двапати секој. Сега, тоа можеби не изгледа како премногу додадено складирање во нашиот едноставен пример, но замислете го залудно потрошениот простор ако имавме илјадници редови во нашата табела. Покрај тоа, ако поштенски код за Sea Cliff требаше да се промени, би требало да ја направиме таа промена на многу места низ целата база на податоци.
Во структурата на базата на податоци што е во согласност со 2NF, овие излишни информации се извлекуваат и се чуваат во посебна табела. Нашата нова табела (да ги наречеме ZIPs) може да ги има следните полиња:
- ZIP
- Град
- Држава
Ако сакаме да бидеме супер-ефикасни, можеме дури и да ја пополниме оваа табела однапред - поштата обезбедува директориум за сите валидни поштенски кодови и нивните односи меѓу град и држава. Навистина, сте наишле на ситуација кога овој тип на база на податоци беше искористена. Некој што земал нарачка можеби најпрво го прашал за вашиот поштенски код, а потоа го знаел градот и државата од каде што повикувате. Овој тип на аранжман ја намалува операторската грешка и ја зголемува ефикасноста.
Откако ги отстранивме дуплираните податоци од табелата на Клиентите, го задоволивме првото правило од втората нормална форма. Сè уште треба да користиме странски клуч за да ги поврземе двете маси заедно. Ќе го користиме поштенскиот код (примарниот клуч од табелата со поштенски број ) за да ја создадеме таа врска. Еве ја новата табела на клиенти:
- CustNum
- Име
- Презиме
- Адреса
- ZIP
Ние сега го минимизираме количеството на непотребни информации зачувани во базата на податоци и нашата структура е во втора нормална форма!
Ако сакате да се осигурате дека вашата база на податоци е нормализирана, истражете ги другите наши написи во оваа серија:
- Основи на нормализација на бази на податоци
- Ставањето на вашата база на податоци во првата нормална форма
- Ставањето на вашата база на податоци во втора нормална форма
- Ставањето на вашата база на податоци во третиот нормален образец