== ER дијаграм [[Image(VenusBeauty_ER.png)]] == Податочни барања === Ентитети 1. ** User** - Ентитет што ги претставува корисниците на системот * user_id – primary key(примарен клуч) * full_name – varchar (задолжителен атрибут) * email – varchar (задолжителен атрибут) * phone – varchar (задолжителен атрибут) * created_at – datetime (задолжителен атрибут) 2. **Role** - Ентитет што ги претставува улогите што корисниците можат да ги имаат во системот * role_id – primary key(примарен клуч) * name – varchar (задолжителен атрибут) 3. **Review** - Ентитет што ги претставува рецензиите дадени од корисниците * review_id – primary key(примарен клуч) 4. **Service** - Ентитет што ги претставува услугите што ги нуди салонот * service_id – primary key(примарен клуч) * name – varchar (задолжителен атрибут) * price – decimal (задолжителен атрибут) * duration_minutes – int (задолжителен атрибут) 5. **Category** - Ентитет што ги претставува категориите на услуги * category_id – primary key(примарен клуч) * name – varchar (задолжителен атрибут) 6. **Package** - Ентитет што ги претставува пакетите на услуги што ги нуди салонот * package_id – primary key(примарен клуч) * name – varchar (задолжителен атрибут) * max_usage – int (задолжителен атрибут) 7. **Appointment** - Ентитет што ги претставува закажаните термини на корисниците * appointment_id – primary key(примарен клуч) * appointment_time – datetime (задолжителен атрибут) * end_time – datetime (задолжителен атрибут) * notes – text * total_price – decimal (задолжителен атрибут) 8. **Status** - Ентитет што ги претставува можните статуси на термините * status_id – primary key(примарен клуч) * name – varchar (задолжителен атрибут) 9. **LoyaltyCard** - Ентитет што ги претставува картичките за лојалност на корисниците * card_id – primary key(примарен клуч) * points – int (задолжителен атрибут) 10. **Payment** - Ентитет што ги претставува плаќањата направени од корисниците * payment_id – primary key(примарен клуч) * amount – decimal (задолжителен атрибут) * method – varchar (задолжителен атрибут) * timestamp – datetime (задолжителен атрибут) * status – varchar (задолжителен атрибут) === Релации **1. UserRole – M:N релација помеѓу User и Role** Еден корисник може да има повеќе улоги, и една улога може да биде доделена на повеќе корисници. Оваа релација овозможува флексибилен систем за управување со дозволи. **2. UserReview – 1:N релација помеѓу User и Review ** Еден корисник може да напише повеќе рецензии, но една рецензија припаѓа на точно еден корисник. Оваа релација го следи авторството на рецензиите. **3. ServiceReview – 1:N релација помеѓу Service и Review ** Една услуга може да добие повеќе рецензии, но една рецензија се однесува на точно една услуга. Оваа релација овозможува корисниците да оценуваат специфични услуги. **4. ServiceCategory – N:1 релација помеѓу Service и Category ** Повеќе услуги можат да припаѓаат на иста категорија, но секоја услуга припаѓа на точно една категорија. Оваа релација ги организира услугите во категории. **5. PackageService – M:N релација помеѓу Package и Service ** Еден пакет може да содржи повеќе услуги, и една услуга може да биде дел од повеќе пакети. Оваа релација овозможува креирање на промотивни пакети со попуст. Дополнителен атрибут: discounted_price. **6. UserAppointment – 1:N релација помеѓу User и Appointment ** Еден корисник може да има повеќе термини, но еден термин припаѓа на точно еден корисник. Оваа релација ги следи закажаните термини на секој корисник. **7. AppointmentService – M:N релација помеѓу Appointment и Service ** Еден термин може да вклучува повеќе услуги, и една услуга може да биде дел од повеќе термини. Оваа релација овозможува флексибилно закажување на комбинирани услуги. **8. AppointmentStatus – N:1 релација помеѓу Appointment и Status ** Повеќе термини можат да имаат ист статус, но секој термин има точно еден статус. Оваа релација го следи статусот на термините (закажан, завршен, откажан, итн.). **9. UserLoyaltyCard – 1:1 релација помеѓу User и LoyaltyCard ** Еден корисник има точно една картичка за лојалност, и една картичка за лојалност припаѓа на точно еден корисник. Оваа релација овозможува систем за бодови и награди за лојални корисници. **10. AppointmentPayment – N:1 релација помеѓу Payment и Appointment ** Еден термин може да има повеќе плаќања поврзани со него (пр. аконтација и конечно плаќање), но секое плаќање се однесува на точно еден термин. Оваа релација ги следи финансиските трансакции за секој термин.