| 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 | | * еден бизнис може да има повеќе менаџери |
| | 19 | '''1. User → Customer (1:1)''' |
| | 20 | |
| | 21 | Релацијата помеѓу user и customer е one-to-one. |
| | 22 | |
| | 23 | Секој customer мора да биде user, но не секој user е customer. |
| | 24 | |
| | 25 | Ова е моделирано преку наследување (generalization), каде customer ја проширува основната user структура. |
| | 26 | |
| | 27 | Причина: |
| | 28 | * се избегнува дуплирање на login податоци |
| | 29 | * се задржува централизирана автентикација |
| | 30 | * се одвојува улогата од идентитетот |
| | 31 | |
| | 32 | |
| | 33 | '''2. User → Employee (1:1)''' |
| | 34 | |
| | 35 | Слично како customer, employee е специјализација на user. |
| | 36 | |
| | 37 | Причина: |
| | 38 | * employee има дополнителни атрибути (bio, hire_date) |
| | 39 | * не секој user е employee |
| | 40 | |
| | 41 | Ова овозможува јасна поделба на улоги. |
| | 42 | |
| | 43 | |
| | 44 | '''3. User → Manager (1:1)''' |
| | 45 | |
| | 46 | Manager е исто така специјализација на user. |
| | 47 | |
| | 48 | Причина: |
| | 49 | * менаџерот има административна функција |
| | 50 | * потребно е да се контролира пристапот |
| | 51 | |
| | 52 | Овој модел овозможува scalability. |
| | 53 | |
| | 54 | |
| | 55 | '''4. Business → Location (1:N)''' |
| | 56 | |
| | 57 | Еден business може да има повеќе location записи. |
| | 58 | |
| | 59 | Причина: |
| | 60 | * бизнисите може да имаат повеќе филијали |
| | 61 | * адресата е составен атрибут (улица, град, телефон) |
| | 62 | |
| | 63 | Ова спречува редундантност и овозможува флексибилност. |
| | 64 | |
| | 65 | |
| | 66 | '''5. Business → Business Hours (1:N)''' |
| | 67 | |
| | 68 | Еден business има повеќе записи за работно време. |
| | 69 | |
| | 70 | Причина: |
| | 71 | * работното време варира по ден |
| | 72 | * не може да се чува како еден атрибут |
| | 73 | |
| | 74 | Ова овозможува динамички распоред. |
| | 75 | |
| | 76 | |
| | 77 | '''6. Business → Gallery (1:N)''' |
| | 78 | |
| | 79 | Еден business има повеќе слики. |
| | 80 | |
| | 81 | Причина: |
| | 82 | * секоја слика има свои атрибути (URL, опис) |
| | 83 | * ова е мултивредносен податок |
| | 84 | |
| | 85 | |
| | 86 | '''7. Business ↔ Manager (M:N)''' |
| | 87 | |
| | 88 | Релацијата business_manager е many-to-many. |
| | 89 | |
| | 90 | * еден manager може да управува повеќе business-и |
| | 91 | * еден business може да има повеќе manager-и |
| 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 | | * спречување злоупотреба |
| | 137 | Причина: |
| | 138 | * цената не е фиксна за service |
| | 139 | * зависи од business |
| | 140 | * релацијата има сопствени атрибути |
| | 141 | |
| | 142 | |
| | 143 | '''11. Employee ↔ Service (M:N)''' |
| | 144 | |
| | 145 | Релацијата employee_service дефинира кои услуги може да ги извршува employee. |
| | 146 | |
| | 147 | Причина: |
| | 148 | * различни вработени имаат различни вештини |
| | 149 | * овозможува флексибилна распределба |
| | 150 | |
| | 151 | |
| | 152 | '''12. Business ↔ Specialty (M:N)''' |
| | 153 | |
| | 154 | Релацијата business_specialty ги поврзува business и specialty. |
| | 155 | |
| | 156 | Причина: |
| | 157 | * еден business може да има повеќе специјалности |
| | 158 | * специјалностите се делат помеѓу повеќе business-и |
| | 159 | |
| | 160 | |
| | 161 | '''13. Employee ↔ Business Specialty (M:N)''' |
| | 162 | |
| | 163 | Релацијата employee_business_specialty дефинира која специјалност ја има employee во конкретен business. |
| | 164 | |
| | 165 | Причина: |
| | 166 | * специјалноста може да зависи од контекстот (business) |
| | 167 | * ова е покомплексна зависност |
| | 168 | |
| | 169 | |
| | 170 | '''14. Employee → Working Schedule (1:N)''' |
| | 171 | |
| | 172 | Еден employee има повеќе записи за работно време. |
| | 173 | |
| | 174 | Причина: |
| | 175 | * распоредот варира по ден |
| | 176 | * потребна е флексибилност |
| | 177 | |
| | 178 | |
| | 179 | '''15. Working Schedule → Slot (1:N или деривација)''' |
| | 180 | |
| | 181 | Slot претставува временски интервали кои произлегуваат од работниот распоред. |
| | 182 | |
| | 183 | Причина: |
| | 184 | * потребно е да се моделира достапност |
| | 185 | * се олеснува закажување |
| | 186 | |
| | 187 | |
| | 188 | '''16. Appointment → Customer (N:1)''' |
| | 189 | |
| | 190 | Еден customer може да има повеќе appointments. |
| | 191 | |
| | 192 | Причина: |
| | 193 | * customer прави повеќе резервации |
| | 194 | |
| | 195 | |
| | 196 | '''17. Appointment → Employee (N:1)''' |
| | 197 | |
| | 198 | Еден employee може да има повеќе appointments. |
| | 199 | |
| | 200 | Причина: |
| | 201 | * employee извршува повеќе услуги |
| | 202 | |
| | 203 | |
| | 204 | '''18. Appointment → Business (N:1)''' |
| | 205 | |
| | 206 | Секој appointment е поврзан со еден business. |
| | 207 | |
| | 208 | Причина: |
| | 209 | * услугата се извршува во конкретен business |
| | 210 | |
| | 211 | |
| | 212 | '''19. Appointment → Service (N:1)''' |
| | 213 | |
| | 214 | Appointment е поврзан со конкретна услуга. |
| | 215 | |
| | 216 | Причина: |
| | 217 | * јасна дефиниција што се извршува |
| | 218 | |
| | 219 | |
| | 220 | '''20. Appointment → Slot (N:1)''' |
| | 221 | |
| | 222 | Appointment е врзан за конкретен временски слот. |
| | 223 | |
| | 224 | Причина: |
| | 225 | * се избегнува overlap |
| | 226 | * се контролира достапност |
| | 227 | |
| | 228 | |
| | 229 | '''21. Appointment → Cancellation (1:0..1)''' |
| | 230 | |
| | 231 | Еден appointment може да има една cancellation или ниедна. |
| | 232 | |
| | 233 | Причина: |
| | 234 | * не сите резервации се откажуваат |
| | 235 | * cancellation има сопствени атрибути |
| | 236 | |
| | 237 | |
| | 238 | '''22. Appointment → Reschedule Request (1:N)''' |
| | 239 | |
| | 240 | Еден appointment може да има повеќе барања за промена. |
| | 241 | |
| | 242 | Причина: |
| | 243 | * може повеќе пати да се побара промена |
| | 244 | * се чува историја |
| | 245 | |
| | 246 | |
| | 247 | '''23. Review → Customer (N:1)''' |
| | 248 | |
| | 249 | Еден customer може да остави повеќе reviews. |
| | 250 | |
| | 251 | Причина: |
| | 252 | * повеќе искуства |
| | 253 | |
| | 254 | |
| | 255 | '''24. Review → Employee (N:1)''' |
| | 256 | |
| | 257 | Review е поврзан со employee. |
| | 258 | |
| | 259 | Причина: |
| | 260 | * оценување на извршител |
| | 261 | |
| | 262 | |
| | 263 | '''25. Review → Business (N:1)''' |
| | 264 | |
| | 265 | Review се однесува и на business. |
| | 266 | |
| | 267 | Причина: |
| | 268 | * оценување на услугата како целина |
| | 269 | |
| | 270 | |
| | 271 | '''26. Review → Appointment (1:1 или N:1)''' |
| | 272 | |
| | 273 | Review е врзан за конкретен appointment. |
| | 274 | |
| | 275 | Причина: |
| | 276 | * гарантира валидност |
| | 277 | * спречува лажни рецензии |