wiki:Conceptual_design

Version 7 (modified by 202033, 3 weeks ago) ( diff )

--

ER дијаграм

Податочни барања

Ентитети

  1. User - Ентитет што ги претставува корисниците на системот
  • user_id – primary key(примарен клуч)
  • full_name – varchar (задолжителен атрибут)
  • email – varchar (задолжителен атрибут)
  • phone – varchar (задолжителен атрибут)
  • created_at – datetime (задолжителен атрибут)
  • password_hash – text (задолжителен атрибут)
  1. Role - Ентитет што ги претставува улогите што корисниците можат да ги имаат во системот
  • role_id – primary key(примарен клуч)
  • name – varchar (задолжителен атрибут)
  1. Review - Ентитет што ги претставува рецензиите дадени од корисниците
  • review_id – primary key (примарен клуч)
  • rating – int (задолжителен атрибут)
  • comment – text (опционален атрибут)
  • created_at – datetime (задолжителен атрибут)
  • payment_id – int (задолжителен атрибут)
  1. Service - Ентитет што ги претставува услугите што ги нуди салонот
  • service_id – primary key (примарен клуч)
  • name – varchar (задолжителен атрибут)
  • price – decimal (задолжителен атрибут)
  • duration_minutes – int (задолжителен атрибут)
  • category_id – int (задолжителен атрибут)
  1. Category - Ентитет што ги претставува категориите на услуги
  • category_id – primary key(примарен клуч)
  • name – varchar (задолжителен атрибут)
  1. Package - Ентитет што ги претставува пакетите на услуги што ги нуди салонот
  • package_id – primary key(примарен клуч)
  • name – varchar (задолжителен атрибут)
  • max_usage – int (задолжителен атрибут)
  • total_price – decimal (задолжителен атрибут)
  1. 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 (задолжителен атрибут)
  1. Status - Ентитет што ги претставува можните статуси на термините
  • status_id – primary key(примарен клуч)
  • name – varchar (задолжителен атрибут)
  • user_id – int (задолжителен атрибут)
  1. LoyaltyCard - Ентитет што ги претставува картичките за лојалност на корисниците
  • card_id – primary key(примарен клуч)
  • points – int (задолжителен атрибут)
  1. Payment - Ентитет што ги претставува плаќањата направени од корисниците
  • payment_id – primary key(примарен клуч)
  • amount – decimal (задолжителен атрибут)
  • method – varchar (задолжителен атрибут)
  • timestamp – datetime (задолжителен атрибут)
  • status – varchar (задолжителен атрибут)
  • points_used – int (задолжителен атрибут)
  • appointment_id – int (опционален атрибут)
  • package_purchase_id – int (опционален атрибут)
  1. 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 (опционален атрибут)
  1. AppointmentPackageUsage - Ентитет што евидентира користење пакет за термин
  • appointment_id – primary key (примарен клуч, истовремено FK)
  • purchase_id – int (задолжителен атрибут)
  • service_id – int (задолжителен атрибут)
  • used_units – int (задолжителен атрибут)
  • finalized_at – datetime (опционален атрибут)
  1. 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)

Download all attachments as: .zip

Note: See TracWiki for help on using the wiki.