| 84 | |
| 85 | |
| 86 | |
| 87 | === Нормализација на Notification === |
| 88 | |
| 89 | Првично: **Notification(__NotificationId__, __!TransactionId*__, __!MessageId*__, __!FriendRequestId*__, __!BookRequestId*__, Type, !NotifTime, !NotifDate, Description, !NotificationStatus)** |
| 90 | |
| 91 | • !TransactionId референцира кон Transaction(!TransactionId) |
| 92 | • !MessageId референцира кон Transaction(!MessageId) |
| 93 | • !FriendRequestId референцира кон Transaction(!FriendshipId) |
| 94 | • !BookRequestId референцира кон Transaction(!RequestId) |
| 95 | |
| 96 | ||= !NotificationId =||= !TransactionId =||= !MessageId =||= !FriendRequestId =||= !BookRequestId =||= Type =||= !NotifTime =||= !NotifDate =||= Description =||= !NotificationStatus =|| |
| 97 | ||= 1 =||= 1 =||= NULL =||= NULL =||= NULL =||= Transaction =||= 14:34:54 =||= 2025-01-02 =||= Ongoing Transaction! =||= Unread =|| |
| 98 | ||= 3 =||= NULL =||= 2 =||= NULL =||= NULL =||= Message =||= 12:02:04 =||= 2025-03-04 =||= Anya sent you a message! =||= Dismissed =|| |
| 99 | |
| 100 | **1НФ**: Вредностите на атрибутите се атомични. |
| 101 | |
| 102 | |
| 103 | **2НФ**: Сите атрибути се функционално определени од примарниот клуч !NotificationId, кој е составен од само еден атрибут (не е композитен). |
| 104 | |
| 105 | **3НФ**: Во случајов има транзитивни зависности: |
| 106 | |
| 107 | **!NotificationId -> Type**, |
| 108 | **Type -> !TransactionId** |
| 109 | |
| 110 | **!NotificationId -> Type**, |
| 111 | **Type -> !MessageId** |
| 112 | |
| 113 | **!NotificationId -> Type**, |
| 114 | **Type -> !FriendRequestId** |
| 115 | |
| 116 | **!NotificationId -> Type**, |
| 117 | **Type -> !BookRequestId** |
| 118 | |
| 119 | |
| 120 | Ова може да се реши со чување на главните податоци за нотификацијата во ентитетот Notification, и креирање на нови релации за секоја од видовите нотификации, со надворешен клуч од ентитетот Notification, и надворешен клуч од соодветниот ентитет кој ја предизвикал нотификацијата: |
| 121 | |
| 122 | **Notification(__NotificationId__, Type, !NotifTime, !NotifDate, !NotificationStatus)** |
| 123 | |
| 124 | **!TransactionNotification(__!TransactionId*__, __!NotificationId*__, Description)** |
| 125 | |
| 126 | -!TransactionId референцира кон Transaction(!TransactionId) |
| 127 | |
| 128 | -!NotificationId референцира кон Notification(!NotificationId) |
| 129 | |
| 130 | **!MessageNotification(__MessageId*__, __!NotificationId*__, Description)** |
| 131 | |
| 132 | -!MessageId референцира кон Message(!MessageId) |
| 133 | |
| 134 | -!NotificationId референцира кон Notification(!NotificationId) |
| 135 | |
| 136 | **!FriendRequestNotification(__FriendRequestId*__, __!NotificationId*__, Description)** |
| 137 | |
| 138 | -!FriendRequestId референцира кон !FriendRequest(!FriendRequestId) |
| 139 | |
| 140 | -!NotificationId референцира кон Notification(!NotificationId) |
| 141 | |
| 142 | **!BookRequestNotification(__BookRequestId__, __!NotificationId*__, Description)** |
| 143 | |
| 144 | -!BookRequestId референцира кон !BookRequest(!BookRequestId) |
| 145 | |
| 146 | -!NotificationId референцира кон Notification(!NotificationId) |
| 147 | |
| 148 | На овој начин релациите се во 3НФ. |
| 149 | |
| 150 | **БКНФ**: Notification, како и !TransactionNotification, !MessageNotification, !FriendRequestNotification, !BookRequestNotification, се во БКНФ и на левата страна од функционите зависности имаат суперклуч. |