Changes between Initial Version and Version 1 of Normalization012


Ignore:
Timestamp:
09/04/25 12:27:06 (5 days ago)
Author:
201205
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • Normalization012

    v1 v1  
     1== Нормализација ==
     2
     3**Почетна релација:**
     4
     5R(!UserId, !FirstName, !LastName, Email, Username, Password, City, Neighborhood, Bio, Quote,  !BookId, Title, Author, Language, !ImageURL,  !BookISBNId, ISBN,  !GenreId, Genre,  !InventoryId, Availability, Condition,    !WishId, Priority,  !RequestId, !RequestStatus, !RequestDate,  !TransactionId,  !BorrowDate, !ReturnDate, !BorrowDuration,  !SwapId,  !ReviewId, Rating, !ReviewerComment, !ReviewDate,  !MessageId,  !MsgTime, !MsgDate, !MessageContent,  !FriendshipId,  !DateCreated, !FriendshipStatus,  !ReportId, !ReportType, !ReportDate, Details, !ReportStatus, !ReportedEntity,  !NotificationId, Type, !NotifTime, !NotifDate, !NotificationStatus, !TN_Description, !MN_Description, !FR_Description, !BR_Description)
     6
     7
     8**Функционални зависности:**
     9
     10!UserId -> !FirstName, !LastName, Email, Username, Password, City, Neighborhood, Bio, Quote
     11Email -> !UserId, !FirstName, !LastName, Username, Password, City, Neighborhood, Bio, Quote
     12Username -> !UserId, !FirstName, !LastName, Email, Password, City, Neighborhood, Bio, Quote
     13
     14!BookId -> Title, Author, Language, !ImageURL
     15
     16!BookISBNId -> !BookId, ISBN
     17
     18!GenreId -> !BookId, Genre
     19
     20!InventoryId-> !UserId, Availability, Condition, !BookId
     21
     22!WishId -> !UserId, Priority, !BookId
     23
     24!RequestId -> !UserId, !InventoryId, !RequestStatus, !RequestDate
     25
     26!TransactionId -> !RequestId, !BorrowDate, !ReturnDate, !BorrowDuration
     27
     28!SwapId -> !TransactionId
     29
     30!ReviewId -> !TransactionId, !UserId, Rating, !ReviewerComment, !ReviewDate
     31
     32!MessageId -> !UserId, !MsgTime, !MsgDate, !MessageContent
     33
     34!FriendshipId -> !UserId, !DateCreated, !FriendshipStatus
     35
     36!ReportId -> !UserId, !ReportType, !ReportDate, Details, !ReportStatus, !ReportedEntity
     37
     38!NotificationId -> Type, !NotifTime, !NotifDate, !NotificationStatus
     39
     40!TransactionId -> !NotificationId, !TN_Description
     41
     42!MessageId -> !NotificationId, !MN_Description
     43
     44!FriendshipId -> !NotificationId, !FR_Description
     45
     46!RequestId -> !NotificationId, !BR_Description
     47
     48
     49
     50=== ===
     51
     52**Лево:** !BookISBNId,!GenreId, !WishId, !SwapId, !ReviewId, !ReportId
     53
     54**Десно:** FirstName, LastName, Password, City, Neighborhood, Bio, Quote,Title, Author, Language, ImageURL,  ISBN,  Genre, Availability, Condition, Priority, RequestStatus, RequestDate, BorrowDate, ReturnDate, BorrowDuration, Rating, ReviewerComment, ReviewDate, MsgTime, MsgDate, MessageContent,DateCreated, FriendshipStatus
     55
     56**Од двете страни:** !UserId, Email, Username, !BookId, !InventoryId, !RequestId, !TransactionId, !MessageId, !FriendshipId, !NotificationId, !TransactionId, !MessageId, !FriendRequestId, !BookRequestId
     57
     58=== ===
     59
     60
     611НФ: Вредностите на атрибутите се атомични.
     62
     632НФ: Сите атрибути се функционално определени од примарните клучеви кои се составени од само еден атрибут (не се композитни).
     64
     653НФ: Примарните клучеви ги одредуваат сите атрибути.
     66
     67**БКНФ:**
     68
     69
     70Според дефиницијата за БКНФ, секоја нетривијална функционална зависност X → A мора да има X како суперклуч во релацијата.
     71
     72Ако ја третираме целата шема како една релација R, тогаш многу од функционалните зависности (на пр. UserId = {!FirstName, !LastName, Email, Username, Password, City, Neighborhood, Bio, Quote}) ја нарушуваат БКНФ бидејќи UserId не е суперклуч на целата релација.
     73
     74Но во мојот случај, функционалните зависности веќе се распоредени по релации каде што левата страна е суперклуч.
     75
     76На пример: ReviewId = {TransactionId, UserId, Rating, ReviewerComment, ReviewDate} е веќе претставена како релација Review(ReviewId, TransactionId, UserId, Rating, ReviewerComment, ReviewDate), каде ReviewId е суперклуч.
     77
     78Ако продолжиме со декомпозиција на целосната релација според секоја функционална зависност, ќе изгубиме атрибути кои се потребни за другите зависности.
     79На пример, атрибутот UserId е присутен во функционалните зависности:
     80
     81InventoryId-> UserId, Availability, Condition, BookId
     82
     83WishId -> UserId, Priority, BookId
     84
     85RequestId -> UserId, InventoryId, RequestStatus, RequestDate
     86
     87ReviewId -> TransactionId, UserId, Rating, ReviewerComment, ReviewDate
     88
     89И многу други, и доколку тргнеме по традиционалната постапка на декомпозиција, UserId може да премине во една релација, а да биде потребна во неколку други.
     90
     91Затоа, сметам дека тековната структура на базата во случајов е веќе резултат на декомпозиција и ги почитува правилата на БКНФ.