Changes between Version 2 and Version 3 of Нормализација и подобрувања на дизајнот


Ignore:
Timestamp:
07/07/25 00:03:19 (11 days ago)
Author:
201205
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • Нормализација и подобрувања на дизајнот

    v2 v3  
    8282
    8383**БКНФ**: На левата страна од ФЗ има супер-клуч.
     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, се во БКНФ и на левата страна од функционите зависности имаат суперклуч.