Опитвам се да се опитам да обясня нормализирането на лаици тук. Първо, това е нещо, което се отнася за релационна база данни (Oracle, Access, MySQL), така че не е само за MySQL.
Нормализирането е да се уверите, че всяка таблица има единствените минимални полета и да се отървете от зависимостите. Представете си, че имате досие на служител и всеки служител принадлежи към отдел. Ако съхраните отдела като поле заедно с останалите данни на служителя, имате проблем - какво се случва, ако отдел бъде премахнат? Трябва да актуализирате всички полета на отдела и има възможност за грешка. И какво ще стане, ако някои служители нямат отдел (може би новоназначен?). Сега ще има нулеви стойности.
Така че нормализирането, накратко, е да се избегне наличието на полета, които биха били нулеви, и да се гарантира, че всички полета в таблицата принадлежат само на един домейн от данни, които се описват. Например в таблицата на служителите полетата могат да бъдат идентификатор, име, социалноосигурителен номер, но тези три полета нямат нищо общо с отдела. Само идентификаторът на служителя описва към кой отдел принадлежи служителят. Така че това означава, че кой отдел е служител трябва да бъде в друга таблица.
Ето един прост процес на нормализиране.
EMPLOYEE ( < employee_id >, name, social_security, department_name)
Това не е нормализирано, както е обяснено. Нормализираната форма може да изглежда така
EMPLOYEE ( < employee_id >, name, social_security)
Тук таблицата Employee отговаря само за един набор от данни. И така, къде съхраняваме към кой отдел принадлежи служителят? В друга таблица
EMPLOYEE_DEPARTMENT ( < employee_id >, department_name )
Това не е оптимално. Ами ако името на отдела се промени? (това се случва в правителството на САЩ през цялото време). Затова е по-добре да направите това
EMPLOYEE_DEPARTMENT ( < employee_id >, department_id )
DEPARTMENT ( < department_id >, department_name )
Има първа нормална форма, втора нормална форма и трета нормална форма. Но освен ако не изучавате DB курс, обикновено се насочвам към най-нормализираната форма, която мога да разбера.
Надявам се това да помогне.