| 18 | | 1. User → Customer / Employee / Manager |
| 19 | | |
| 20 | | Моделот започнува со ентитетот user, кој ги содржи основните податоци за сите корисници (email, password, статус, датум на креирање). |
| 21 | | |
| 22 | | Наместо да се дуплираат овие податоци во повеќе табели, користен е пристап на наследување (generalization), при што customer, employee и manager се специјализации на user. |
| 23 | | |
| 24 | | Овој пристап е избран затоа што овозможува: |
| 25 | | |
| 26 | | централизирано управување со кориснички сметки |
| 27 | | избегнување на дуплирање на податоци |
| 28 | | можност за проширување (еден корисник потенцијално да има повеќе улоги) |
| 29 | | |
| 30 | | Секоја од овие табели содржи дополнителни атрибути специфични за улогата. |
| | 18 | |
| | 19 | '''1. User → Customer / Employee / Manager''' |
| | 20 | |
| | 21 | Ентитетот '''user''' претставува основа за сите типови корисници во системот. Ги содржи заедничките атрибути како email, password, статус и timestamps. |
| | 22 | |
| | 23 | Наместо да се дуплираат овие податоци, применета е generalization структура: |
| | 24 | * customer |
| | 25 | * employee |
| | 26 | * manager |
| | 27 | |
| | 28 | Овој пристап овозможува: |
| | 29 | * централизирана автентикација |
| | 30 | * избегнување на дуплирање |
| | 31 | * можност за проширување |
| | 32 | |
| | 33 | Секоја специјализација содржи дополнителни атрибути специфични за улогата. |
| | 34 | |
| | 35 | |
| | 36 | '''2. Business и основни зависности''' |
| | 37 | |
| | 38 | '''Business → Location (1:N)''' |
| | 39 | |
| | 40 | Еден бизнис може да има повеќе локации. Локацијата е моделирана како посебен ентитет бидејќи адресата содржи повеќе атрибути. |
| | 41 | |
| | 42 | Ова овозможува: |
| | 43 | * нормализација |
| | 44 | * избегнување на повторување |
| | 45 | * поддршка за повеќе филијали |
| | 46 | |
| | 47 | |
| | 48 | '''Business → Business Hours (1:N)''' |
| | 49 | |
| | 50 | Работното време е издвоено во посебна табела бидејќи варира по ден и не може да се претстави како едноставен атрибут. |
| | 51 | |
| | 52 | Ова овозможува: |
| | 53 | * флексибилност |
| | 54 | * лесно ажурирање |
| | 55 | |
| | 56 | |
| | 57 | '''Business → Gallery (1:N)''' |
| | 58 | |
| | 59 | Бизнисот може да има повеќе слики, при што секоја има сопствени атрибути (URL, опис, датум). |
| | 60 | |
| | 61 | |
| | 62 | '''3. Business ↔ Manager (M:N)''' |
| | 63 | |
| | 64 | Релацијата '''business_manager''' е many-to-many бидејќи: |
| | 65 | * еден менаџер може да управува со повеќе бизниси |
| | 66 | * еден бизнис може да има повеќе менаџери |
| | 67 | |
| | 68 | Содржи: |
| | 69 | * assigned_at |
| | 70 | * valid_to |
| | 71 | |
| | 72 | Ова овозможува следење на историја и временска зависност. |
| | 73 | |
| | 74 | |
| | 75 | '''4. Business ↔ Employee (M:N)''' |
| | 76 | |
| | 77 | Релацијата '''business_employee''' ги поврзува вработените со бизнисите. |
| | 78 | |
| | 79 | * еден employee може да работи во повеќе бизниси |
| | 80 | * еден бизнис има повеќе вработени |
| | 81 | |
| | 82 | Содржи: |
| | 83 | * date_start |
| | 84 | * date_finish |
| | 85 | |
| | 86 | Ова овозможува следење на периодот на ангажман. |
| | 87 | |
| | 88 | |
| | 89 | '''5. Service → Service Category (1:N)''' |
| | 90 | |
| | 91 | Секој service припаѓа на една категорија. |
| | 92 | |
| | 93 | Категоријата е посебен ентитет за: |
| | 94 | * избегнување на дуплирање |
| | 95 | * стандардизација |
| | 96 | * полесно проширување |
| | 97 | |
| | 98 | |
| | 99 | '''6. Business ↔ Service (M:N)''' |
| | 100 | |
| | 101 | Релацијата '''business_service''' содржи: |
| | 102 | * price |
| | 103 | * duration_minutes |
| | 104 | * is_active |
| | 105 | |
| | 106 | Овие атрибути зависат од конкретниот бизнис. |
| | 107 | |
| | 108 | Релацијата има сопствено значење и претставува дел од бизнис логиката. |
| | 109 | |
| | 110 | |
| | 111 | '''7. Employee ↔ Service (M:N)''' |
| | 112 | |
| | 113 | Релацијата '''employee_service''' дефинира кои услуги може да ги извршува секој вработен. |
| | 114 | |
| | 115 | Ова е потребно бидејќи: |
| | 116 | * не сите вработени имаат исти вештини |
| | 117 | * услугите бараат специфични способности |
| | 118 | |
| | 119 | |
| | 120 | '''8. Specialties''' |
| | 121 | |
| | 122 | Се користи ентитет '''specialty''' и поврзувачки табели: |
| | 123 | * business_specialty |
| | 124 | * employee_business_specialty |
| | 125 | |
| | 126 | Ова е затоа што: |
| | 127 | * специјалностите се мултивредносни |
| | 128 | * се избегнува дуплирање |
| | 129 | |
| | 130 | |
| | 131 | '''9. Working Schedule и Slot''' |
| | 132 | |
| | 133 | '''Employee → Working Schedule (1:N)''' |
| | 134 | |
| | 135 | Работното време е моделирано како посебна табела со записи по ден. |
| | 136 | |
| | 137 | Ова овозможува: |
| | 138 | * различни смени |
| | 139 | * динамичко управување |
| | 140 | |
| | 141 | |
| | 142 | '''Slot''' |
| | 143 | |
| | 144 | Ентитетот slot претставува временски интервали за закажување. |
| | 145 | |
| | 146 | Се користи за: |
| | 147 | * проверка на достапност |
| | 148 | * управување со термини |
| | 149 | |
| | 150 | |
| | 151 | '''10. Appointment''' |
| | 152 | |
| | 153 | Ентитетот '''appointment''' е централен дел од системот. |
| | 154 | |
| | 155 | Ги поврзува: |
| | 156 | * customer |
| | 157 | * employee |
| | 158 | * business |
| | 159 | * service |
| | 160 | * slot |
| | 161 | |
| | 162 | Ова овозможува јасна структура и лесен пристап до податоци. |
| | 163 | |
| | 164 | |
| | 165 | '''11. Cancellation''' |
| | 166 | |
| | 167 | Ентитетот '''cancellation''' е поврзан со appointment. |
| | 168 | |
| | 169 | Не секој appointment има cancellation, па затоа е издвоен. |
| | 170 | |
| | 171 | Содржи: |
| | 172 | * reason |
| | 173 | * refund_amount |
| | 174 | |
| | 175 | Ова овозможува јасна логика за откажувања. |
| | 176 | |
| | 177 | |
| | 178 | '''12. Reschedule Request''' |
| | 179 | |
| | 180 | Ентитетот '''reschedule_request''' се користи за промена на термин. |
| | 181 | |
| | 182 | Наместо директно ажурирање, се креира нов запис. |
| | 183 | |
| | 184 | Ова овозможува: |
| | 185 | * следење на историја |
| | 186 | * контрола на процесот |
| | 187 | |
| | 188 | |
| | 189 | '''13. Review''' |
| | 190 | |
| | 191 | Ентитетот '''review''' ги поврзува: |
| | 192 | * customer |
| | 193 | * employee |
| | 194 | * business |
| | 195 | * appointment |
| | 196 | |
| | 197 | Ова овозможува: |
| | 198 | * валидни рецензии |
| | 199 | * спречување злоупотреба |
| | 200 | |
| | 201 | |
| | 202 | '''Заклучок''' |
| | 203 | |
| | 204 | Моделот обезбедува: |
| | 205 | * нормализирана структура |
| | 206 | * минимална редундантност |
| | 207 | * флексибилност |
| | 208 | * точна репрезентација на реални процеси |
| | 209 | |
| | 210 | Релациите не се користат само за поврзување, туку и за моделирање на бизнис логика и зависности. |