ER дијаграм
Податочни барања
Ентитети
- User - Ентитет што ги претставува корисниците на системот
- user_id – primary key(примарен клуч)
- full_name – varchar (задолжителен атрибут)
- email – varchar (задолжителен атрибут)
- phone – varchar (задолжителен атрибут)
- created_at – datetime (задолжителен атрибут)
- password_hash – text (задолжителен атрибут)
- Role - Ентитет што ги претставува улогите што корисниците можат да ги имаат во системот
- role_id – primary key(примарен клуч)
- name – varchar (задолжителен атрибут)
- Review - Ентитет што ги претставува рецензиите дадени од корисниците
- review_id – primary key (примарен клуч)
- rating – int (задолжителен атрибут)
- comment – text (опционален атрибут)
- created_at – datetime (задолжителен атрибут)
- payment_id – int (задолжителен атрибут)
- Service - Ентитет што ги претставува услугите што ги нуди салонот
- service_id – primary key (примарен клуч)
- name – varchar (задолжителен атрибут)
- price – decimal (задолжителен атрибут)
- duration_minutes – int (задолжителен атрибут)
- category_id – int (задолжителен атрибут)
- Category - Ентитет што ги претставува категориите на услуги
- category_id – primary key(примарен клуч)
- name – varchar (задолжителен атрибут)
- Package - Ентитет што ги претставува пакетите на услуги што ги нуди салонот
- package_id – primary key(примарен клуч)
- name – varchar (задолжителен атрибут)
- max_usage – int (задолжителен атрибут)
- total_price – decimal (задолжителен атрибут)
- Appointment - Ентитет што ги претставува закажаните термини на корисниците
- appointment_id – primary key (примарен клуч)
- appointment_time – datetime (задолжителен атрибут)
- end_time – datetime (задолжителен атрибут)
- notes – text (опционален атрибут)
- type – enum('pre-booked','walk-in') (задолжителен атрибут)
- total_price – decimal (задолжителен атрибут)
- user_id – int (задолжителен атрибут)
- status_id – int (задолжителен атрибут)
- points_awarded – boolean (задолжителен атрибут)
- Status - Ентитет што ги претставува можните статуси на термините
- status_id – primary key(примарен клуч)
- name – varchar (задолжителен атрибут)
- user_id – int (задолжителен атрибут)
- LoyaltyCard - Ентитет што ги претставува картичките за лојалност на корисниците
- card_id – primary key(примарен клуч)
- points – int (задолжителен атрибут)
- Payment - Ентитет што ги претставува плаќањата направени од корисниците
- payment_id – primary key(примарен клуч)
- amount – decimal (задолжителен атрибут)
- method – varchar (задолжителен атрибут)
- timestamp – datetime (задолжителен атрибут)
- status – varchar (задолжителен атрибут)
- points_used – int (задолжителен атрибут)
- appointment_id – int (опционален атрибут)
- package_purchase_id – int (опционален атрибут)
- UserPackagePurchase - Ентитет што ги претставува купените пакети по корисник
- purchase_id – primary key (примарен клуч)
- user_id – int (задолжителен атрибут)
- package_id – int (задолжителен атрибут)
- purchased_at – datetime (задолжителен атрибут)
- total_uses – int (задолжителен атрибут)
- remaining_uses – int (задолжителен атрибут)
- status – varchar/text (задолжителен атрибут)
- expires_at – date (опционален атрибут)
- AppointmentPackageUsage - Ентитет што евидентира користење пакет за термин
- appointment_id – primary key (примарен клуч, истовремено FK)
- purchase_id – int (задолжителен атрибут)
- service_id – int (задолжителен атрибут)
- used_units – int (задолжителен атрибут)
- finalized_at – datetime (опционален атрибут)
- Availability - Ентитет што ги претставува временските прозорци за достапност
- availability_id – primary key (примарен клуч)
- date – date (задолжителен атрибут)
- start_time – time (задолжителен атрибут)
- end_time – time (задолжителен атрибут)
- is_closed – boolean (задолжителен атрибут)
Релации
1. UserRole – M:N релација помеѓу User и Role Еден корисник може да има повеќе улоги, и една улога може да биде доделена на повеќе корисници. Оваа релација овозможува флексибилен систем за управување со дозволи.
2. ReviewPayment – 1:0..1 релација помеѓу Review и Payment Секој Review е поврзан со точно еден Payment, а еден Payment може да има најмногу еден Review. На овој начин, само корисници со извршено плаќање можат да остават рецензија.
3. ServiceCategory – N:1 релација помеѓу Service и Category Повеќе услуги можат да припаѓаат на иста категорија, но секоја услуга припаѓа на точно една категорија. Оваа релација ги организира услугите по категории.
4. PackageService – M:N релација помеѓу Package и Service Еден пакет може да содржи повеќе услуги, и една услуга може да биде дел од повеќе пакети. Оваа релација овозможува креирање на промотивни пакети со попуст.
5. UserAppointment – 1:N релација помеѓу User и Appointment Еден корисник може да има повеќе термини, но еден термин припаѓа на точно еден корисник. Оваа релација ги следи закажаните термини на секој корисник.
6. AppointmentService – M:N релација помеѓу Appointment и Service Еден термин може да вклучува повеќе услуги, и една услуга може да биде дел од повеќе термини. Оваа релација овозможува флексибилно закажување на комбинирани услуги.
7. AppointmentStatus – N:1 релација помеѓу Appointment и Status Повеќе термини можат да имаат ист статус, но секој термин има точно еден статус. Оваа релација го следи статусот на термините.
8. UserLoyaltyCard – 0..1:1 релација помеѓу User и LoyaltyCard Еден корисник може да има најмногу една картичка за лојалност, а секоја картичка за лојалност припаѓа на точно еден корисник. Оваа релација овозможува систем за поени и награди.
9. AppointmentPayment – 0..N:0..1 релација помеѓу Appointment и Payment Еден термин може да има повеќе плаќања поврзани со него, а едно плаќање се однесува на најмногу еден термин. Релацијата е опционална на двете страни бидејќи дел од плаќањата се за купување пакет.
10. UserPurchase – 1:N релација помеѓу User и UserPackagePurchase Еден корисник може да купи повеќе пакети, но секое купување на пакет припаѓа на точно еден корисник.
11. PurchasePackage – N:1 релација помеѓу UserPackagePurchase и Package Повеќе кориснички купувања можат да се однесуваат на ист пакет, но секое купување се однесува на точно еден пакет.
12. PackagePayment – 0..N:0..1 релација помеѓу UserPackagePurchase и Payment Едно купување на пакет може да има повеќе плаќања (обиди/трансакции), а едно плаќање може да се однесува на најмногу едно купување на пакет.
13. AppointmentUsage – 0..1:1 релација помеѓу Appointment и AppointmentPackageUsage Еден термин може да има најмногу едно евидентирано користење пакет, а секоја евиденција за користење пакет припаѓа на точно еден термин.
14. ServiceUsage – N:1 релација помеѓу AppointmentPackageUsage и Service Повеќе записи за користење пакет можат да се однесуваат на иста услуга, но секој запис се однесува на точно една услуга.
15. PurchaseUsage – N:1 релација помеѓу AppointmentPackageUsage и UserPackagePurchase Повеќе записи за користење пакет можат да се однесуваат на исто корисничко купување пакет, но секој запис се однесува на точно едно купување.
Забелешка: Availability во тековната шема нема директна FK релација со други табели, се користи како правило за валидација на временски прозорци за термини.
Attachments (3)
- VenusBeauty_ER.png (243.6 KB ) - added by 6 weeks ago.
- VenusBeauty_ER_v2.png (232.9 KB ) - added by 6 weeks ago.
- ERModel_v3.png (219.6 KB ) - added by 3 weeks ago.
Download all attachments as: .zip

