== Функционални карактеристики и нормализација == '''Functional Dependencies:''' || UserID || Name || Surname || Email || Password || PhoneNumber || DataJoined || || 1 || Stefani Jovanoska || Sjovanoska@gmail.com || Sjovanoska123! || 078123123 || 27.4.2025 || || 2 || Stefani Jovanoska || Sjovanoska123@gmail.com || Sjovanoska123!!! || 078123321 || 27.4.2025 || R = { **UserID**, Name, Surname, Email, Password, PhoneNumber, DateJoined }\\ Функциски зависности:\\ **UserID** → Name, Surname, Email, PhoneNumber, Password, DateJoined\\ **Email** → UserID (email мора да биде уникатен)\\ **PhoneNumber** → UserID (ако е еден-на-еден релација)\\ 1NF: атомски вредности\\ 2NF: сите зависности се од целиот клуч UserID\\ 3NF: Email и PhoneNumber функционално зависат од UserID, значи нема транзитивни зависности.\\ R1 = { **UserID** , Name, Surname, Email, PhoneNumber, Password, DateJoined }\\ R2 = { Email , **UserID** }\\ R3 = { PhoneNumber , **UserID** }\\ Можна декомпозиција:\\ R1:{ (UserID, Name, Surname, DateJoined}\\ R2:{(UserID, Email, PhoneNumber, Password}\\ ________________________________________ 2. Destination Нормализација || DestinationID || Name || Country || Description || PopularAttraction || BestTimeToVisit || || 1 || Skopje || Macedonia || Short flight || Old town || Spring || || 2 || Ohrid || Macedonia || Short flight || The Lake || Summer || R = { **DestinationID**, Name, Country, Description, PopularAttraction, BestTimeToVisit }\\ Функционални зависности:\\ **DestinationID** → Name, Country, Description, PopularAttraction, BestTimeToVisit\\ R1:{ **DestinationID** , Name, Country, Description, PopularAttraction, BestTimeToVisit }\\ 1NF: сите атрибути се атомски\\ 2NF: сите атрибути зависат целосно од примарниот клуч\\ 3NF: бидејќи нема транзитивни зависности\\ BCNF: сите детерминанти се супер-клучеви\\ Заклучок: Нема потреба за дополнителна декомпозиција \\ ________________________________________\\ 3. Airport Нормализација\\ || AirportId || Name || City || Country || Code || || 1 || Aleksandar Veliki || Skopje || Macedonia || 1234 || || 1 || Apostol Pavle || Ohrid || Macedonia || 2345 || R = { **AirportID**, Name, City, Country, Code }\\ Функционални зависности:\\ **AirportID** → Name, City, Country, Code\\ Code → AirportID (ако е уникатен код, што реално е во авионска индустрија)\\ 1NF : сите атрибути се атомски\\ 2NF : сите атрибути зависат целосно од примарниот клуч\\ 3NF: бидејќи нема транзитивни зависности\\ BCNF : AirportID е супер-клуч\\ Можна декомпозиција (ако Code е уникатен):\\ R1:{ (AirportID, Name, City, Country}\\ R2:{ (AirportID, Code}\\ Заклучок:\\ Табелата Flight е целосно нормализирана и се наоѓа во 1NF, 2NF, 3NF и BCNF.\\ ________________________________________\\ Booking Нормализација:\\ || BookingID || UserID || FlightID || BookingDate || PaymentStatus || TotalCost || SeatNumber || || 1 || 1 || 1 || 1.1.2025 || Ok || 10000 || 1 || || 2 || 2 || 2 || 1.2.2025 || Ok || 100 || 2|| R = { BookingID, UserID, FlightID, BookingDate, PaymentStatus, TotalCost, SeatNumber } \\ Функциски зависности:\\ BookingID → UserID, FlightID, BookingDate, PaymentStatus, TotalCost, SeatNumber\\ 1NF:Сите атрибути содржат атомски вредности.\\ 2NF:Сите не-клучни атрибути зависат целосно од примарниот клуч BookingID.\\ 3NF:Нема транзитивни зависности — сите атрибути зависат директно од BookingID.\\ BCNF: супер-клуч (BookingID).\\ Заклучок:\\ Табелата Booking е во 1NF, 2NF, 3NF и BCNF.\\ ________________________________________\\ Review Нормализација:\\ || ReviewID || UserID || TargetID || ReviewComment || Rating || Date || || 1 || 1 || 1 || ок || 5 || 1.1.2025 || || 2 || 2 || 2 || ок || 5 || 1.2.2025 || R = { ReviewID, UserID, TargetID, ReviewComment, Rating, Date }\\ Функциски зависности:\\ ReviewID → UserID, TargetID, ReviewComment, Rating, Date\\ 1NF:Сите атрибути се атомски.\\ 2NF:Сите атрибути зависат целосно од примарниот клуч ReviewID.\\ 3NF:Нема транзитивни зависности.\\ BCNF:\\ ReviewID е супер-клуч за сите останати атрибути.\\ Заклучок:\\ Табелата Review е во 1NF, 2NF, 3NF и BCNF.\\ ________________________________________\\ Payment Нормализација :\\ || PaymentID || BookingID || UserID || PaymentMethod || Amount || TransactionDate || PaymentStatus || || 1 || 1 || 1 || card || 10000 || 1.2.2025 || ok || || 2 || 2 || 2 || card || 100 || 1.2.2025 || ok || R = { PaymentID, BookingID, UserID, PaymentMethod, Amount, TransactionDate, PaymentStatus }\\ Функциски зависности:\\ PaymentID → BookingID, UserID, PaymentMethod, Amount, TransactionDate, PaymentStatus\\ 1NF:Сите атрибути содржат атомски вредности.\\ 2NF:Сите атрибути зависат целосно од PaymentID.\\ 3NF:Нема транзитивни зависности.\\ BCNF:PaymentID е супер-клуч за останатите атрибути.\\ Заклучок:\\ Табелата Payment е во 1NF, 2NF, 3NF и BCNF.\\ ________________________________________\\ Notification Нормализација:\\ || NotificationID || UserID || Message || Type|| DateSent || || 1 || 1 || ok || 1 || 2.2.2015 || || 2 || 2 || ok || 2 || 2.2.2015|| R = { NotificationID, UserID, Message, Type, DateSent }\\ Функциски зависности:\\ NotificationID → UserID, Message, Type, DateSent\\ 1NF:Атомски вредности.\\ 2NF:Целосна зависност од NotificationID.\\ 3NF:Нема транзитивни зависности.\\ BCNF:NotificationID е супер-клуч.\\ Заклучок: Табелата Notification е во 1NF, 2NF, 3NF и BCNF.\\ ________________________________________\\ Wishlist Нормализација:\\ || WishlistID || UserID || TargetID || DateAdded || || 1 || 1 || 1 || 2.2.2025 || || 2 || 2 || 2 || 2.2.2025 || R = { WishlistID, UserID, TargetID, DateAdded }\\ Функциски зависности:\\ WishlistID → UserID, TargetID, DateAdded\\ 1NF:Атомски атрибути.\\ 2NF:Целосна зависност од WishlistID.\\ 3NF:Нема транзитивни зависности.\\ BCNF:\\ WishlistID е супер-клуч.\\ Заклучок:\\ Табелата Wishlist е во 1NF, 2NF, 3NF и BCNF.\\ ________________________________________\\ Administrator Нормализација :\\ || AdminID || Email || || 1 || stefanijovanoska@gmail.com || || 2 || Stefani123@gmail.com || R = { AdminID, Email }\\ Функциски зависности:\\ AdminID → Email\\ 1NF:Сите атрибути се атомски.\\ 2NF:Целосна зависност од AdminID.\\ 3NF:Нема транзитивни зависности.\\ BCNF:AdminID е супер-клуч.\\ Заклучок:\\ Табелата Administrator е во 1NF, 2NF, 3NF и BCNF.\\ ________________________________________\\ SupportTicket Нормализација:\\ || TicketID || UserID || Subject || Description || Status || DateCreated || DateResolved || AssignedTo || || 1 || 1 || Wrong id on the card || Need changes || waiting || 1.2.2015 || 1.2.2015 || Stefani || || 2 || 2 || Wrong id on the card || Need changes || waiting || 1.2.2015 || 1.2.2015 || Stefani || R = { TicketID, UserID, Subject, Description, Status, DateCreated, DateResolved, AssignedTo }\\ Функциски зависности:\\ TicketID → UserID, Subject, Description, Status, DateCreated, DateResolved, AssignedTo\\ 1NF:Атомски вредности.\\ 2NF:Сите атрибути зависат целосно од TicketID.\\ 3NF:Нема транзитивни зависности.\\ BCNF:TicketID е супер-клуч.\\ Заклучок:\\ Табелата SupportTicket е во 1NF, 2NF, 3NF и BCNF.\\