| 48 | | FD4: owner_id → client_id |
| 49 | | }}} |
| 50 | | |
| 51 | | Notification |
| 52 | | {{{ |
| 53 | | FD5: notification_id → notification_type, notification_message, notification_created_at, is_read, user_id |
| 54 | | }}} |
| 55 | | |
| 56 | | Vet Clinic / application |
| 57 | | {{{ |
| 58 | | FD6: clinic_id → clinic_name, clinic_email, clinic_phone, clinic_address, clinic_location, clinic_city |
| 59 | | FD7: application_id → app_name, app_email, app_phone, app_city, app_address, submitted_at, app_status, reviewed_at, reviewed_by, denial_reason, clinic_id |
| 60 | | }}} |
| 61 | | |
| 62 | | Animal |
| 63 | | {{{ |
| 64 | | FD8: animal_id → animal_name, located_name, species, animal_type, breed, sex, date_of_birth, photo_url, owner_id |
| 65 | | }}} |
| 66 | | |
| 67 | | Listing |
| 68 | | {{{ |
| 69 | | FD9: listing_id → listing_status, listing_created_at, price, listing_description, animal_id, admin_id |
| 70 | | }}} |
| 71 | | |
| 72 | | Appointment |
| 73 | | {{{ |
| 74 | | FD10: appointment_id → date_time, appointment_status, notes, animal_id, clinic_id |
| 75 | | }}} |
| 76 | | |
| 77 | | Health Record |
| 78 | | {{{ |
| 79 | | FD11: healthrecord_id → hr_type, hr_description, hr_date, animal_id, appointment_id |
| 80 | | }}} |
| 81 | | |
| 82 | | Review and subtypes |
| 83 | | {{{ |
| 84 | | FD12: review_id → reviewer_id, rating, comment, review_created_at, updated_at, is_deleted |
| 85 | | FD13: review_id → target_user_id |
| 86 | | FD14: review_id → target_clinic_id |
| 87 | | }}} |
| 88 | | |
| 89 | | Favorite Listing |
| 90 | | {{{ |
| 91 | | The relation FavoriteListings has composite key (saved_user_id, saved_listing_id) |
| 92 | | and no additional non-trivial functional dependencies. |
| | 52 | }}} |
| | 53 | |
| | 54 | Subscription plan / subscription / payment |
| | 55 | {{{ |
| | 56 | FD4: plan_id → plan_name, price, duration_months, access_type |
| | 57 | FD5: subscription_id → user_id_sub, plan_id_sub, start_date, end_date, subscription_status |
| | 58 | FD6: payment_id → user_id_pay, subscription_id_pay, amount |
| | 59 | }}} |
| | 60 | |
| | 61 | Support ticket |
| | 62 | {{{ |
| | 63 | FD7: ticket_id → user_id_ticket, admin_id, subject, description, ticket_status, created_at |
| | 64 | }}} |
| | 65 | |
| | 66 | Category / course |
| | 67 | {{{ |
| | 68 | FD8: category_id → category_name, category_description |
| | 69 | FD9: course_id → course_name, course_price, course_status, instructor_id |
| | 70 | }}} |
| | 71 | |
| | 72 | CourseCategory |
| | 73 | {{{ |
| | 74 | The relation CourseCategory has composite key (course_id_cc, category_id_cc) and no additional non-trivial functional dependencies. |
| | 75 | }}} |
| | 76 | |
| | 77 | Course content hierarchy |
| | 78 | {{{ |
| | 79 | FD10: module_id → course_id_mod, module_title, module_description |
| | 80 | FD11: lesson_id → module_id_lesson, lesson_title, material |
| | 81 | FD12: quiz_id → lesson_id_quiz, total_points, passing_score |
| | 82 | FD13: attempt_id → user_id_attempt, quiz_id_attempt, score, attempt_date |
| | 83 | }}} |
| | 84 | |
| | 85 | Enrollment / certificate |
| | 86 | {{{ |
| | 87 | FD14: enrollment_id → user_id_enroll, course_id_enroll, enroll_date, completion_status, progress_percentage |
| | 88 | FD15: certificate_id → enrollment_id_cert, issue_date, certificate_code, certificate_status |