Дали треба да ја нормализирам мојата база на податоци?

Нормализација во Реалниот свет

Нормализацијата на базата на податоци е една од светите крави за развој на апликации. Секој курсеви за додипломски програми кои сте ги направиле или сте ги прочитале најверојатно ја проповеда важноста за нормализирање на базите на податоци .

Време е да го оспориме тоа тврдизмот. Понекогаш е во ред да ја денормализира вашата база на податоци!

Кога треба да се нормализира?

Нормализацијата на базата на податоци го штити интегритетот на вашите податоци. Тоа е одлична идеја во многу случаи, и треба да започнете било кој проект за базата на податоци настојуваат со нормализација на ум. Ако можете да ја нормализирате вашата база на податоци, одете по неа! Всушност, Еве неколку практични совети за тоа како да ја нормализирате вашата база на податоци на оваа страница:

Во крајна линија е дека треба да се нормализира вашата база на податоци, освен ако немате навистина добра причина да не го сторите тоа. Нормализирањето е обично звук дизајн практика. Ги намалува непотребните информации, ги оптимизира перформансите и ја намалува веројатноста дека ќе имате проблеми со интегритетот на податоците што произлегуваат од тоа што ги имаат истите податоци затрупани во различни делови на вашата база на податоци.

Некои добри причини да не се нормализираат

Тоа, рече, постојат некои добри причини да не се нормализира вашата база на податоци. Ајде да погледнеме неколку:

  1. Придружувањето е скапо . Нормализирањето на вашата база често вклучува создавање на многу табели. Всушност, лесно можете да завршите со она што мислите дека треба да биде едноставно пребарување кое опфаќа пет или 10 табели. Ако некогаш сте се обиделе да се приклучите на пет табели, знаете дека тоа функционира принципиелно, но тоа е многу бавно во пракса. Ако градите веб-апликација која се потпира на повеќекратни приклучувања против големите табели, можеби ќе си помислите: "Ако само оваа база на податоци не е нормализирана!" Кога ја слушате таа мисла во вашата глава, добро е време да размислете за денормализирање. Ако можете да ги држите сите податоци користени од барањето во една табела без навистина да го загрозите интегритетот на податоците, одете по неа! Бидете бунтовници и денормализирајте ја вашата база на податоци. Вие нема да се вратите назад!
  2. Нормализиран дизајн е тежок . Ако работите со сложена шема на база на податоци , најверојатно ќе се најдете да ја удирате главата од табелата во текот на сложеноста на нормализацијата. Како едноставно правило, ако трошите цел ден да дознаете како да се преселите во четвртата нормална форма, може да претерате нормализација. Вратете се и запрашајте се дали навистина вреди да продолжите.
  1. Брзиот и валкан треба да биде брз и валкан . Ако сте само развивање на прототип, само направете што работи брзо. Навистина. Во ред е. Брзиот развој на апликации понекогаш е поважен од елегантен дизајн. Само не заборавајте да се вратите назад и внимателно да го разгледате вашиот дизајн откако ќе бидете подготвени да ја преместите фазата на прототипирање. Цената што ја плаќаат за брз и валкан дизајн на бази на податоци е дека можеби ќе треба да го фрлите и да започнете кога ќе дојде време да се изгради за производство.
  2. Ако користите базата на податоци NoSQL , традиционалната нормализација не е пожелна. Наместо тоа, дизајнирајте ја вашата база на податоци користејќи го моделот BASE, кој е многу повеќе простување. Ова е корисно кога чувате неорганизирани податоци како што се пораки, слики или видеа.

Некои зборови на претпазливост

Нормализацијата на базата на податоци генерално е добра идеја. Треба да се обидете да ги следите принципите на нормализација кога се чини разумно да го сторите тоа. Но, ако сите индикатори упатуваат на нормализација, што е премногу сложено да се спроведе, размислете за пристап кој ќе ја заврши работата додека сеуште ги заштитувате вашите податоци.

Конечно - ако одлучите да залутате од правилата за нормализација, бидете внимателни во врска со тоа како го спроведувате интегритетот на базата на податоци. Ако чувате непотребни информации, ставете тригери и други контроли за да бидете сигурни дека информациите остануваат доследни.