Changes between Initial Version and Version 1 of Normalization


Ignore:
Timestamp:
06/09/25 15:42:59 (4 days ago)
Author:
223270
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • Normalization

    v1 v1  
     1== Нормализација на база и подобрување на дизајн
     2=== Функциски зависности и нормализација
     3
     4
     5Со цел да се постигне функционален и скалабилен дизајн на базата на податоци за веб-апликацијата TravelSage, започнав со обединета релација која ги содржи сите атрибути од моделот. Оваа релација служи како почетна точка за анализа на функционските зависности. Врз основа на таа анализа, се применува нормализација до третата нормална форма (3НФ), при што секој чекор вклучува логичка декомпозиција на релациите со цел да се избегнат вишоци, аномалии при ажурирање и несоодветни зависности.
     6Бидејќи табелата на сите атрибути би била преголема, ја поделив по функционалност на апликацијата:
     71.      Менаџирање на дестинации и тагови
     82.      Менаџирање на корисници и нивни активности (рецензии, преференци)
     93.      Менаџирање на патувања (пакети, активности, резервации)
     104.      Менаџирање на настани, временски услови
     11
     12
     13=== 1. Менаџирање на дестинации и тагови
     14Почетна релација:
     15R = { idDest, imeLokacija, opisLokacija, tipoviMesta, preporachanaSezona, prosechnaTemp, geoLokacija, drzhava, popularnost, ime, opis, idTag, tagOznaka }
     16Функциски зависности:
     17•       idDest → сите атрибути што се однесуваат на една конкретна дестинација
     18•       idTag → tagOznaka (секој таг има уникатна ознака)
     19Објаснување:
     20Секој ред во оваа релација ја претставува комбинацијата од дестинација и некој нејзин таг. Бидејќи една дестинација може да има повеќе тагови, а еден таг може да се користи кај повеќе дестинации, станува збор за многу-на-многу релација меѓу idDest и idTag.
     21Декомпозиција:
     22•       R1 = { idDest, imeLokacija, opisLokacija, tipoviMesta, preporachanaSezona, prosechnaTemp, geoLokacija, drzhava, popularnost, ime, opis }
     23•       R2 = { idTag, tagOznaka }
     24•       R3 = { idDest, idTag } → релација DESTINACII_HAS_TAGOVI
     25
     26
     27
     28=== 2. Менаџирање на корисници и нивни активности
     29Почетна релација:
     30R = { idKorisnik, ime, prezime, ePoshta, telBr, datumRagjanje, tip, idDest, idRecenzija, idRezervacija, korisnichkoIme, kvalitet, zabeleshka, datumRecenzija, brGlasovi, idPreferenca, tipPreferenca, prioritet }
     31Функциски зависности:
     32•       idKorisnik → сите лични податоци
     33•       idKorisnik, idDest → рецензии и резервации
     34•       idKorisnik → преференци
     35Објаснување:
     36Еден корисник може да има повеќе рецензии и преференци, но секоја преференца е поврзана со само еден корисник. Резервациите и рецензиите зависат од комбинацијата на корисник и дестинација.
     37Декомпозиција:
     38•       R4 = { idKorisnik, ime, prezime, ePoshta, telBr, datumRagjanje, tip }
     39•       R5 = { idKorisnik, idDest, idRecenzija, idRezervacija, korisnichkoIme, kvalitet, zabeleshka, datumRecenzija, brGlasovi }
     40•       R6 = { idPreferenca, idKorisnik, tipPreferenca, prioritet }
     41
     42
     43
     44=== 3. Менаџирање на патувања, активности и резервации
     45Почетна релација:
     46R = { idPaket, imePaket, cena, pochetok, kraj, idDest, idAktivnost, imeAktivnost, informacii, kategorija, iznos, idRezervacija, idKorisnik, vremenskaTochka, status, vkupnaCena, idMeteo }
     47Функциски зависности:
     48•       idPaket → основни податоци за патниот пакет
     49•       idAktivnost → опис на активноста
     50•       idRezervacija → информации за резервацијата
     51•       idAktivnost, idPaket → активности во конкретен пакет
     52Објаснување:
     53Секој патен пакет може да содржи повеќе активности, а секоја активност може да биде вклучена во повеќе пакети (многу-на-многу). Корисникот прави резервација за конкретен пакет, а понекогаш и за поединечна активност.
     54Декомпозиција:
     55•       R7 = { idPaket, imePaket, cena, pochetok, kraj, idDest, vkupnaCena, idMeteo }
     56•       R8 = { idAktivnost, imeAktivnost, informacii, kategorija, iznos, idDest }
     57•       R9 = { idPaket, idAktivnost }
     58•       R10 = { idRezervacija, idKorisnik, idPaket, vremenskaTochka, status }
     59•       R11 = { idRezervacija, idAktivnost }
     60
     61
     62
     63=== 4. Менаџирање на настани и метеоролошки услови
     64Почетна релација:
     65R = { idNastan, naziv, vidovi, pochetenDatum, kraenDatum, detali, idDest, idMeteo, momentTemp, sostojbaVreme, predupreduvanja, vlazhnost, veter, mesec, datum }
     66Функциски зависности:
     67•       idNastan → сите податоци за настанот
     68•       idMeteo → временски параметри
     69Објаснување:
     70Секој настан е поврзан со одредена дестинација и има временски услови регистрирани преку idMeteo. Метео податоците може да се поврзат и со други настани на истата локација, така што е логично да се одвојат.
     71Декомпозиција:
     72•       R12 = { idNastan, naziv, vidovi, pochetenDatum, kraenDatum, detali, idDest, idMeteo }
     73•       R13 = { idMeteo, momentTemp, sostojbaVreme, predupreduvanja, vlazhnost, veter, mesec, datum, idDest }
     74
     75
     76=== Кратко резиме
     77Примената на функционска декомпозиција и нормализација до третата нормална форма (3НФ) резултира со оптимизирана структура на базата која ги исполнува следниве цели:
     78•       Елиминација на вишоци и дупликации
     79•       Отстранување на аномалии при внесување, бришење или ажурирање
     80•       Подобра логичка организација на податоците
     81•       Јасна поделба според функционалност (модули)
     82•       Можност за идно проширување на моделот без пречки
     83На овој начин, дизајнот на базата не само што ги задоволува тековните барања на апликацијата TravelSage, туку и обезбедува стабилна основа за нејзина понатамошна еволуција.
     84