Changes between Version 11 and Version 12 of RelationalModel


Ignore:
Timestamp:
04/20/26 02:03:33 (13 days ago)
Author:
231007
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • RelationalModel

    v11 v12  
    1717
    1818
    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
     46Manager е исто така специјализација на 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-и
    6792
    6893Содржи:
     
    7095 * valid_to
    7196
    72 Ова овозможува следење на историја и временска зависност.
    73 
    74 
    75 '''4. Business ↔ Employee (M:N)'''
    76 
    77 Релацијата '''business_employee''' ги поврзува вработените со бизнисите.
    78 
    79  * еден employee може да работи во повеќе бизниси
    80  * еден бизнис има повеќе вработени
     97Причина:
     98 * релацијата има временска компонента
     99 * се чува историја
     100
     101
     102'''8. Business ↔ Employee (M:N)'''
     103
     104Релацијата business_employee ги поврзува employee и business.
     105
     106 * employee може да работи во повеќе business-и
     107 * business има повеќе employee-и
    81108
    82109Содржи:
     
    84111 * date_finish
    85112
    86 Ова овозможува следење на периодот на ангажман.
    87 
    88 
    89 '''5. Service → Service Category (1:N)'''
    90 
    91 Секој service припаѓа на една категорија.
    92 
    93 Категоријата е посебен ентитет за:
     113Причина:
     114 * се моделира реален ангажман
     115 * се овозможува tracking на историја
     116
     117
     118'''9. Service → Service Category (1:N)'''
     119
     120Секој service припаѓа на една category.
     121
     122Причина:
     123 * категоризација на услуги
    94124 * избегнување на дуплирање
    95  * стандардизација
    96  * полесно проширување
    97 
    98 
    99 '''6. Business ↔ Service (M:N)'''
    100 
    101 Релацијата '''business_service''' содржи:
     125 * подобра организација
     126
     127
     128'''10. Business ↔ Service (M:N)'''
     129
     130Релацијата business_service ги поврзува business и service.
     131
     132Содржи:
    102133 * price
    103134 * duration_minutes
    104135 * is_active
    105136
    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
     181Slot претставува временски интервали кои произлегуваат од работниот распоред.
     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
     214Appointment е поврзан со конкретна услуга.
     215
     216Причина:
     217 * јасна дефиниција што се извршува
     218
     219
     220'''20. Appointment → Slot (N:1)'''
     221
     222Appointment е врзан за конкретен временски слот.
     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
     257Review е поврзан со employee.
     258
     259Причина:
     260 * оценување на извршител
     261
     262
     263'''25. Review → Business (N:1)'''
     264
     265Review се однесува и на business.
     266
     267Причина:
     268 * оценување на услугата како целина
     269
     270
     271'''26. Review → Appointment (1:1 или N:1)'''
     272
     273Review е врзан за конкретен appointment.
     274
     275Причина:
     276 * гарантира валидност
     277 * спречува лажни рецензии