Changes between Version 6 and Version 7 of Conceptual_design


Ignore:
Timestamp:
02/26/26 10:28:27 (3 weeks ago)
Author:
202033
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • Conceptual_design

    v6 v7  
    1313* phone – varchar (задолжителен атрибут)
    1414* created_at – datetime (задолжителен атрибут)
     15* password_hash – text (задолжителен атрибут)
    1516
    16172. **Role** - Ентитет што ги претставува улогите што корисниците можат да ги имаат во системот
     
    21223. **Review** - Ентитет што ги претставува рецензиите дадени од корисниците
    2223
    23 * review_id – primary key(примарен клуч)
    24 
     24* review_id – primary key (примарен клуч)
     25* rating – int (задолжителен атрибут)
     26* comment – text (опционален атрибут)
     27* created_at – datetime (задолжителен атрибут)
     28* payment_id – int (задолжителен атрибут)
    2529
    26304. **Service** - Ентитет што ги претставува услугите што ги нуди салонот
    2731
    28 * service_id – primary key(примарен клуч)
     32* service_id – primary key (примарен клуч)
    2933* name – varchar (задолжителен атрибут)
    3034* price – decimal (задолжителен атрибут)
    3135* duration_minutes – int (задолжителен атрибут)
     36* category_id – int (задолжителен атрибут)
    3237
    3338
     
    4247* name – varchar (задолжителен атрибут)
    4348* max_usage – int (задолжителен атрибут)
     49* total_price – decimal (задолжителен атрибут)
    4450
    4551
    46527. **Appointment** - Ентитет што ги претставува закажаните термини на корисниците
    4753
    48 * appointment_id – primary key(примарен клуч)
     54* appointment_id – primary key (примарен клуч)
    4955* appointment_time – datetime (задолжителен атрибут)
    5056* end_time – datetime (задолжителен атрибут)
    51 * notes – text
     57* notes – text (опционален атрибут)
     58* type – enum('pre-booked','walk-in') (задолжителен атрибут)
    5259* total_price – decimal (задолжителен атрибут)
    53 * type – enum('pre-booked','walk-in') (задолжителен атрибут)
     60* user_id – int (задолжителен атрибут)
     61* status_id – int (задолжителен атрибут)
     62* points_awarded – boolean (задолжителен атрибут)
    5463
    55648. **Status** - Ентитет што ги претставува можните статуси на термините
     
    5766* status_id – primary key(примарен клуч)
    5867* name – varchar (задолжителен атрибут)
     68* user_id – int (задолжителен атрибут)
    5969
    60709. **LoyaltyCard** - Ентитет што ги претставува картичките за лојалност на корисниците
     
    7080* timestamp – datetime (задолжителен атрибут)
    7181* status – varchar (задолжителен атрибут)
     82* points_used – int (задолжителен атрибут)
     83* appointment_id – int (опционален атрибут)
     84* package_purchase_id – int (опционален атрибут)
    7285
     8611. **UserPackagePurchase** - Ентитет што ги претставува купените пакети по корисник
     87
     88* purchase_id – primary key (примарен клуч)
     89* user_id – int (задолжителен атрибут)
     90* package_id – int (задолжителен атрибут)
     91* purchased_at – datetime (задолжителен атрибут)
     92* total_uses – int (задолжителен атрибут)
     93* remaining_uses – int (задолжителен атрибут)
     94* status – varchar/text (задолжителен атрибут)
     95* expires_at – date (опционален атрибут)
     96
     9712. **AppointmentPackageUsage** - Ентитет што евидентира користење пакет за термин
     98* appointment_id – primary key (примарен клуч, истовремено FK)
     99* purchase_id – int (задолжителен атрибут)
     100* service_id – int (задолжителен атрибут)
     101* used_units – int (задолжителен атрибут)
     102* finalized_at – datetime (опционален атрибут)
     103
     104
     10513. **Availability** - Ентитет што ги претставува временските прозорци за достапност
     106* availability_id – primary key (примарен клуч)
     107* date – date (задолжителен атрибут)
     108* start_time – time (задолжителен атрибут)
     109* end_time – time (задолжителен атрибут)
     110* is_closed – boolean (задолжителен атрибут)
    73111
    74112
     
    78116Еден корисник може да има повеќе улоги, и една улога може да биде доделена на повеќе корисници. Оваа релација овозможува флексибилен систем за управување со дозволи.
    79117
     118**2. ReviewPayment – 1:0..1 релација помеѓу Review и Payment**
     119Секој Review е поврзан со точно еден Payment, а еден Payment може да има најмногу еден Review. На овој начин, само корисници со извршено плаќање можат да остават рецензија.
    80120
    81 **2. ReviewPayment – 1:1 релација помеѓу Review и Payment
    82 **
    83 Секој Review е поврзан со точно едно Payment. На овој начин, само корисници кои платиле може да остават рецензија.
     121**3. ServiceCategory – N:1 релација помеѓу Service и Category**
     122Повеќе услуги можат да припаѓаат на иста категорија, но секоја услуга припаѓа на точно една категорија. Оваа релација ги организира услугите по категории.
    84123
    85 **3. ServiceCategory – N:1 релација помеѓу Service и Category
    86 **
    87 Повеќе услуги можат да припаѓаат на иста категорија, но секоја услуга припаѓа на точно една категорија. Оваа релација ги организира услугите во категории.
     124**4. PackageService – M:N релација помеѓу Package и Service**
     125Еден пакет може да содржи повеќе услуги, и една услуга може да биде дел од повеќе пакети. Оваа релација овозможува креирање на промотивни пакети со попуст.
    88126
    89 **4. PackageService – M:N релација помеѓу Package и Service
    90 **
    91 Еден пакет може да содржи повеќе услуги, и една услуга може да биде дел од повеќе пакети. Оваа релација овозможува креирање на промотивни пакети со попуст. Дополнителен атрибут: discounted_price.
    92 
    93 **5. UserAppointment – 1:N релација помеѓу User и Appointment
    94 **
     127**5. UserAppointment – 1:N релација помеѓу User и Appointment**
    95128Еден корисник може да има повеќе термини, но еден термин припаѓа на точно еден корисник. Оваа релација ги следи закажаните термини на секој корисник.
    96129
    97 **6. AppointmentService – M:N релација помеѓу Appointment и Service
    98 **
     130**6. AppointmentService – M:N релација помеѓу Appointment и Service**
    99131Еден термин може да вклучува повеќе услуги, и една услуга може да биде дел од повеќе термини. Оваа релација овозможува флексибилно закажување на комбинирани услуги.
    100132
    101 **7. AppointmentStatus – N:1 релација помеѓу Appointment и Status
    102 **
    103 Повеќе термини можат да имаат ист статус, но секој термин има точно еден статус. Оваа релација го следи статусот на термините (закажан, завршен, откажан, итн.).
     133**7. AppointmentStatus – N:1 релација помеѓу Appointment и Status**
     134Повеќе термини можат да имаат ист статус, но секој термин има точно еден статус. Оваа релација го следи статусот на термините.
    104135
    105 **8. UserLoyaltyCard – 1:1 релација помеѓу User и LoyaltyCard
    106 **
    107 Еден корисник има точно една картичка за лојалност, и една картичка за лојалност припаѓа на точно еден корисник. Оваа релација овозможува систем за бодови и награди за лојални корисници.
     136**8. UserLoyaltyCard – 0..1:1 релација помеѓу User и LoyaltyCard**
     137Еден корисник може да има најмногу една картичка за лојалност, а секоја картичка за лојалност припаѓа на точно еден корисник. Оваа релација овозможува систем за поени и награди.
    108138
    109 **9. AppointmentPayment – N:1 релација помеѓу Payment и Appointment
    110 **
    111 Еден термин може да има повеќе плаќања поврзани со него (пр. аконтација и конечно плаќање), но секое плаќање се однесува на точно еден термин. Оваа релација ги следи финансиските трансакции за секој термин.
     139**9. AppointmentPayment – 0..N:0..1 релација помеѓу Appointment и Payment**
     140Еден термин може да има повеќе плаќања поврзани со него, а едно плаќање се однесува на најмногу еден термин. Релацијата е опционална на двете страни бидејќи дел од плаќањата се за купување пакет.
     141
     142**10. UserPurchase – 1:N релација помеѓу User и UserPackagePurchase**
     143Еден корисник може да купи повеќе пакети, но секое купување на пакет припаѓа на точно еден корисник.
     144
     145**11. PurchasePackage – N:1 релација помеѓу UserPackagePurchase и Package**
     146Повеќе кориснички купувања можат да се однесуваат на ист пакет, но секое купување се однесува на точно еден пакет.
     147
     148**12. PackagePayment – 0..N:0..1 релација помеѓу UserPackagePurchase и Payment**
     149Едно купување на пакет може да има повеќе плаќања (обиди/трансакции), а едно плаќање може да се однесува на најмногу едно купување на пакет.
     150
     151**13. AppointmentUsage – 0..1:1 релација помеѓу Appointment и AppointmentPackageUsage**
     152Еден термин може да има најмногу едно евидентирано користење пакет, а секоја евиденција за користење пакет припаѓа на точно еден термин.
     153
     154**14. ServiceUsage – N:1 релација помеѓу AppointmentPackageUsage и Service**
     155Повеќе записи за користење пакет можат да се однесуваат на иста услуга, но секој запис се однесува на точно една услуга.
     156
     157**15. PurchaseUsage – N:1 релација помеѓу AppointmentPackageUsage и UserPackagePurchase**
     158Повеќе записи за користење пакет можат да се однесуваат на исто корисничко купување пакет, но секој запис се однесува на точно едно купување.
     159
     160Забелешка:
     161Availability во тековната шема нема директна FK релација со други табели, се користи како правило за валидација на временски прозорци за термини.