Changes between Version 13 and Version 14 of P5


Ignore:
Timestamp:
04/17/26 23:42:31 (2 weeks ago)
Author:
211099
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • P5

    v13 v14  
    127127
    128128=== BCNF Check
    129 1. USERS(user_id, username, email, user_name, surname, password,
    130          user_created_at, user_updated_at) → satisfies BCNF
    131 
    132 2. ADMINS(user_id) → satisfies BCNF
    133 
    134 3. REGULAR_USER(user_id) → satisfies BCNF
    135 
    136 4. WRITER(user_id) → satisfies BCNF
    137 
    138 5. STORY(story_id, mature_content, short_description, image, story_content, user_id, story_created_at, story_updated_at) → satisfies BCNF
    139 6. STATUS(story_id, status) → satisfies BCNF
    140 7. CHAPTER(chapter_id, chapter_number, chapter_name, title, chapter_content, word_count, rating, published_at, view_count, story_id, chapter_created_at, chapter_updated_at) → satisfies BCNF
    141 8. GENRE(genre_id, genre_name) → satisfies BCNF
    142 9. READING_LIST(list_id, list_name, list_content, is_public, user_id, list_created_at, list_updated_at) → satisfies BCNF
    143 10. NOTIFICATION(notification_id, notification_content, is_read, recipient_user_id, type, link, notification_created_at) → satisfies BCNF
    144 11. CONTENT_TYPE(notification_id, content_type) → satisfies BCNF
    145 12. AI_SUGGESTION(suggestion_id, original_text, suggested_text, accepted, suggestion_created_at, applied_at, story_id) → satisfies BCNF
    146 13. SUGGESTION_TYPE(suggestion_id, suggestion_type) → satisfies BCNF
    147 14. LIKES(user_id, story_id, like_created_at) → satisfies BCNF
    148 15. COMMENT(comment_id, comment_content, user_id, story_id, comment_created_at, comment_updated_at) → satisfies BCNF
    149 16. COLLABORATION(user_id, story_id, collab_created_at) → satisfies BCNF
    150 17. ROLES(user_id, story_id, roles) → satisfies BCNF
    151 18. PERMISSION_LEVEL(user_id, story_id, permission_level) → satisfies BCNF
    152 19. HAS_GENRE(story_id, genre_id) → satisfies BCNF
    153 20. READING_LIST_ITEMS(list_id, story_id, added_at) → satisfies BCNF
    154 21. NOTIFY(user_id, story_id, notification_id) → satisfies BCNF
    155 22. NEED_APPROVAL(suggestion_id, story_id, chapter_id) → satisfies BCNF
     129We analyze each relation for BCNF violations:
     130USERS(user_id, username, email, user_name, surname, password, user_created_at, user_updated_at) — FD2: username → user_id and FD3: email → user_id exist, but username and email are both superkeys (their closure contains all attributes of USERS). No BCNF violation.
     131STORY(story_id, ...) — only FD4 applies, story_id is the sole candidate key and the only determinant. No BCNF violation.
     132CHAPTER(chapter_id, ...) — FD5: chapter_id → all others, FD6: {story_id, chapter_number} → chapter_id. Both chapter_id and {story_id, chapter_number} are candidate keys, so both are superkeys. No BCNF violation.
     133GENRE(genre_id, genre_name) — FD7: genre_id → genre_name and FD8: genre_name → genre_id. Both are candidate keys, so both are superkeys. No BCNF violation.
     134READING_LIST(list_id, ...) — only FD9 applies, list_id is the only determinant and is the candidate key. No BCNF violation.
     135NOTIFICATION(notification_id, ...) — only FD10 applies, notification_id is the only determinant and is the candidate key. No BCNF violation.
     136AI_SUGGESTION(suggestion_id, ...) — only FD11 applies, suggestion_id is the only determinant and is the candidate key. No BCNF violation.
     137COMMENT(comment_id, ...) — only FD12 applies, comment_id is the only determinant and is the candidate key. No BCNF violation.
     138All remaining tables — no non-trivial functional dependencies beyond the primary key. No BCNF violations.
     139Since every determinant in every relation is a superkey, all relations satisfy BCNF.
     140=== BCNF Decomposition
     141Since no BCNF violations were identified in the BCNF Check, no decomposition is required
    156142
    157143=== Conclusion