Changes between Version 6 and Version 7 of Conceptual_design
- Timestamp:
- 02/26/26 10:28:27 (3 weeks ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
Conceptual_design
v6 v7 13 13 * phone – varchar (задолжителен атрибут) 14 14 * created_at – datetime (задолжителен атрибут) 15 * password_hash – text (задолжителен атрибут) 15 16 16 17 2. **Role** - Ентитет што ги претставува улогите што корисниците можат да ги имаат во системот … … 21 22 3. **Review** - Ентитет што ги претставува рецензиите дадени од корисниците 22 23 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 (задолжителен атрибут) 25 29 26 30 4. **Service** - Ентитет што ги претставува услугите што ги нуди салонот 27 31 28 * service_id – primary key (примарен клуч)32 * service_id – primary key (примарен клуч) 29 33 * name – varchar (задолжителен атрибут) 30 34 * price – decimal (задолжителен атрибут) 31 35 * duration_minutes – int (задолжителен атрибут) 36 * category_id – int (задолжителен атрибут) 32 37 33 38 … … 42 47 * name – varchar (задолжителен атрибут) 43 48 * max_usage – int (задолжителен атрибут) 49 * total_price – decimal (задолжителен атрибут) 44 50 45 51 46 52 7. **Appointment** - Ентитет што ги претставува закажаните термини на корисниците 47 53 48 * appointment_id – primary key (примарен клуч)54 * appointment_id – primary key (примарен клуч) 49 55 * appointment_time – datetime (задолжителен атрибут) 50 56 * end_time – datetime (задолжителен атрибут) 51 * notes – text 57 * notes – text (опционален атрибут) 58 * type – enum('pre-booked','walk-in') (задолжителен атрибут) 52 59 * total_price – decimal (задолжителен атрибут) 53 * type – enum('pre-booked','walk-in') (задолжителен атрибут) 60 * user_id – int (задолжителен атрибут) 61 * status_id – int (задолжителен атрибут) 62 * points_awarded – boolean (задолжителен атрибут) 54 63 55 64 8. **Status** - Ентитет што ги претставува можните статуси на термините … … 57 66 * status_id – primary key(примарен клуч) 58 67 * name – varchar (задолжителен атрибут) 68 * user_id – int (задолжителен атрибут) 59 69 60 70 9. **LoyaltyCard** - Ентитет што ги претставува картичките за лојалност на корисниците … … 70 80 * timestamp – datetime (задолжителен атрибут) 71 81 * status – varchar (задолжителен атрибут) 82 * points_used – int (задолжителен атрибут) 83 * appointment_id – int (опционален атрибут) 84 * package_purchase_id – int (опционален атрибут) 72 85 86 11. **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 97 12. **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 105 13. **Availability** - Ентитет што ги претставува временските прозорци за достапност 106 * availability_id – primary key (примарен клуч) 107 * date – date (задолжителен атрибут) 108 * start_time – time (задолжителен атрибут) 109 * end_time – time (задолжителен атрибут) 110 * is_closed – boolean (задолжителен атрибут) 73 111 74 112 … … 78 116 Еден корисник може да има повеќе улоги, и една улога може да биде доделена на повеќе корисници. Оваа релација овозможува флексибилен систем за управување со дозволи. 79 117 118 **2. ReviewPayment – 1:0..1 релација помеѓу Review и Payment** 119 Секој Review е поврзан со точно еден Payment, а еден Payment може да има најмногу еден Review. На овој начин, само корисници со извршено плаќање можат да остават рецензија. 80 120 81 **2. ReviewPayment – 1:1 релација помеѓу Review и Payment 82 ** 83 Секој Review е поврзан со точно едно Payment. На овој начин, само корисници кои платиле може да остават рецензија. 121 **3. ServiceCategory – N:1 релација помеѓу Service и Category** 122 Повеќе услуги можат да припаѓаат на иста категорија, но секоја услуга припаѓа на точно една категорија. Оваа релација ги организира услугите по категории. 84 123 85 **3. ServiceCategory – N:1 релација помеѓу Service и Category 86 ** 87 Повеќе услуги можат да припаѓаат на иста категорија, но секоја услуга припаѓа на точно една категорија. Оваа релација ги организира услугите во категории. 124 **4. PackageService – M:N релација помеѓу Package и Service** 125 Еден пакет може да содржи повеќе услуги, и една услуга може да биде дел од повеќе пакети. Оваа релација овозможува креирање на промотивни пакети со попуст. 88 126 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** 95 128 Еден корисник може да има повеќе термини, но еден термин припаѓа на точно еден корисник. Оваа релација ги следи закажаните термини на секој корисник. 96 129 97 **6. AppointmentService – M:N релација помеѓу Appointment и Service 98 ** 130 **6. AppointmentService – M:N релација помеѓу Appointment и Service** 99 131 Еден термин може да вклучува повеќе услуги, и една услуга може да биде дел од повеќе термини. Оваа релација овозможува флексибилно закажување на комбинирани услуги. 100 132 101 **7. AppointmentStatus – N:1 релација помеѓу Appointment и Status 102 ** 103 Повеќе термини можат да имаат ист статус, но секој термин има точно еден статус. Оваа релација го следи статусот на термините (закажан, завршен, откажан, итн.). 133 **7. AppointmentStatus – N:1 релација помеѓу Appointment и Status** 134 Повеќе термини можат да имаат ист статус, но секој термин има точно еден статус. Оваа релација го следи статусот на термините. 104 135 105 **8. UserLoyaltyCard – 1:1 релација помеѓу User и LoyaltyCard 106 ** 107 Еден корисник има точно една картичка за лојалност, и една картичка за лојалност припаѓа на точно еден корисник. Оваа релација овозможува систем за бодови и награди за лојални корисници. 136 **8. UserLoyaltyCard – 0..1:1 релација помеѓу User и LoyaltyCard** 137 Еден корисник може да има најмногу една картичка за лојалност, а секоја картичка за лојалност припаѓа на точно еден корисник. Оваа релација овозможува систем за поени и награди. 108 138 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 Забелешка: 161 Availability во тековната шема нема директна FK релација со други табели, се користи како правило за валидација на временски прозорци за термини.
