== Податочни побарувања == Оваа секција ги претставува концептуалниот дизајн на базата на податоци и податочните побарувања. === ЕР Дијаграм === [[Image(ER_Diagram_2, align=center, width=800)]] === Ентитети === ==== 1. Client ==== '''Id''' – SERIAL (Primary Key)\\ '''!FirstName''' – VARCHAR(50) (Mandatory attribute)\\ '''!LastName''' – VARCHAR(50)\\ '''!PhoneNumber''' – VARCHAR(20)\\ ==== 2. Mechanic ==== '''EMBG''' – VARCHAR(13) (Primary Key)\\ '''!FirstName''' – VARCHAR(50) (Mandatory attribute)\\ '''!LastName''' – VARCHAR(50) (Mandatory attribute)\\ ==== 3. Motorcycle ==== '''Id''' – SERIAL (Primary Key)\\ '''!ClientId''' – INT (Mandatory attribute, Foreign Key to Client.Id)\\ '''Model''' – VARCHAR(50) (Mandatory attribute)\\ '''Year''' – INT\\ '''!ChassisNumber''' – VARCHAR(50) (Unique)\\ '''Registration''' – VARCHAR(20)\\ '''Kilometers''' – INT\\ ==== 4. !ServiceItem ==== '''Id''' – SERIAL (Primary Key)\\ '''Description''' – TEXT (Mandatory attribute)\\ '''!MeasurementUnit''' – VARCHAR(20) (Mandatory attribute)\\ '''!PricePerUnit''' – DECIMAL(10,2) (Mandatory attribute)\\ '''Tax''' – DECIMAL(5,2) (Mandatory attribute)\\ ==== 5. Service ==== '''Id''' – SERIAL (Primary Key)\\ '''!MotorcycleId''' – INT (Mandatory attribute, Foreign Key to Motorcycle.Id)\\ '''!DateOfService''' – DATE (Mandatory attribute)\\ '''!LaborCost''' – DECIMAL(10,2) (Mandatory attribute)\\ '''!TotalPrice''' – DECIMAL(10,2) (Generated, Mandatory attribute)\\ ==== 6. !ServiceAssignment (Junction Table) ==== '''!ServiceId''' – INT (Foreign Key to Service.Id)\\ '''MechanicEMBG''' – VARCHAR(13) (Foreign Key to Mechanic.EMBG)\\ '''!ServiceItemId''' – INT (Foreign Key to !ServiceItem.Id)\\ '''!UnitsUsed''' – DECIMAL(10,2) (Mandatory attribute)\\ '''Composite Primary Key''': (!ServiceId, MechanicEMBG, !ServiceItemId)\\ ==== 7. !ServiceInvoice ==== '''Id''' – SERIAL (Primary Key)\\ '''!ServiceId''' – INT (Unique, Mandatory attribute, Foreign Key to Service.Id)\\ '''!IssueDate''' – TIMESTAMP (Mandatory attribute)\\ '''!ImagePath''' – TEXT (Mandatory attribute)\\ ==== 8. !FiscalBill ==== '''Id''' – SERIAL (Primary Key)\\ '''!ServiceInvoiceId''' – INT (Unique, Mandatory attribute, Foreign Key to !ServiceInvoice.Id)\\ '''!IssueDateTime''' – TIMESTAMP (Mandatory attribute)\\ '''Description''' – TEXT\\ '''DDV''' – DECIMAL(5,2) (Mandatory attribute, VAT)\\ '''EDB''' – VARCHAR(15) (Mandatory attribute, Tax ID)\\ === Релации === ==== Client → Motorcycle ==== '''1:N''' – Секој клиент може да има повеќе мотоцикли, но секој мотоцикл припаѓа на еден клиент.\\ '''Foreign Key''': !ClientId во Motorcycle референцира Client.Id. ==== Motorcycle → Service ==== '''1:N''' – Мотоциклот може да има повеќе сервиси, но секој сервис е поврзан со еден мотоцикл.\\ '''Foreign Key''': !MotorcycleId во Service референцира Motorcycle.Id. ==== Service ↔ Mechanic ↔ !ServiceItem ==== '''M:N''' – Сервисот може да го извршуваат повеќе механичари и да користат повеќе делови, а секој механичар/дел може да се користи во повеќе сервиси.\\ '''Јункција''': !ServiceAssignment ги поврзува Service, Mechanic, и !ServiceItem со композитен клуч (!ServiceId, MechanicEMBG, !ServiceItemId). ==== Service → !ServiceInvoice ==== '''1:1''' – Секој сервис има точно една фактура, и секоја фактура одговара на еден сервис.\\ '''Foreign Key''': !ServiceId во !ServiceInvoice референцира Service.Id. ==== !ServiceInvoice → !FiscalBill ==== '''1:1''' – Секоја сервисна фактура има една фискална сметка, и секоја фискална сметка е поврзана со една фактура.\\ '''Foreign Key''': !ServiceInvoiceId во !FiscalBill референцира !ServiceInvoice.Id.