Normalized vs. Denormalized Databases

Kiedy po raz pierwszy zacząłem pracować z SQL, wszystko było w jednej tabeli. Co prawda, tabela ta wyglądała mniej więcej tak:

Większość baz danych będzie miała liiiittle więcej danych do nich niż cztery kolumny i pięć wierszy. Tak więc debata między znormalizowanymi i zdenormalizowanymi bazami danych szaleje od wieków (mówię w czasie deweloperskim). Na czym więc polega różnica?

Normalizowane bazy danych zawierają wiele tabel. Jak dane są zorganizowane w jednej tabeli i inne powiązane dane są umieszczone w innej tabeli. Dostęp do każdego elementu danych uzyskuje się poprzez relacje do każdej tabeli, głównie poprzez tabele join. Dobrą rzeczą jest to, że normalizacja zmniejsza redundancję i utrzymuje integralność danych. Wszystko jest zorganizowane w ładne małe tabele, gdzie wszystkie dane, które powinny pozostać razem, robią to.

Wszystkie szare kociaki w tej tabeli, proszę.

Ale, podobnie jak w przypadku minusów Railsów, znormalizowane bazy danych mogą powodować spowolnienie zapytań, zwłaszcza gdy mamy do czynienia z gównianą toną (termin techniczny) danych. To właśnie tutaj wkraczają zdenormalizowane bazy danych. Podczas gdy wielokrotne złączenia są satysfakcjonujące i zabawne, mogą one szybko stać się skomplikowane. Kiedy wszystko jest w tej samej tabeli, zapytanie nie musi skakać od tabeli do tabeli, aby znaleźć to, czego szukasz, to już tam jest. Wadą tego rozwiązania jest nadmiarowość danych – jest to małe poświęcenie, które trzeba ponieść, aby zyskać na szybkości.

Wszystkie koty w tej samej tabeli, bez ifs ands or buts.

Najlepsze w tym wszystkim jest to, że nie musisz wybierać jednego lub drugiego; Twoja baza danych nie musi być znormalizowana do n-tego stopnia lub całkowicie zdenormalizowana do jednej tabeli. Jeśli twoje zapytania działają zbyt wolno i jest to spowodowane złożonością zapytań, możesz zdenormalizować bazę danych na tyle, aby pozbyć się zbyt wielu złączeń. Alternatywnie, jeśli twoja baza danych jest gigantycznym bałaganem danych i potrzebujesz trochę organizacji, trochę uporządkowania danych w różnych tabelach i pozbycia się nadmiarowości jest w porządku. Bazy danych mogą dać ci to, co najlepsze z obu światów, przy odrobinie TLC.

Leave a Comment

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *