== ER дијаграм (верзија 7) [[Image(ERmodel_v7.jpg)]] == Ентитети **Users** - генерален ентитет кој што дефинира корисници на апликацијата. * ID - нумерички тип (примарен клуч) * firstname - текстуален тип (задолжителен атрибут) * lastName - текстуален тип (задолжителен атрибут) * phoneNumber - текстуален тип (задолжителен атрибут) * password - текстуален тип (задолжителен атрибут) * еmail - текстуален тип (задолжителен атрибут) **Roles** - ентитет кој чува податоци за тип на корисник кој што може да биде админ, менаџер, вработен или стандарден корисник. * ID - нумерички тип (примарен клуч) * type - текстуален тип **Cities** - ентитет во кој што ќе се чуваат сите градови во кои што има ветeринарен центар. * ID - нумерички тип (примарен клуч) * name - текстуален тип (задолжителен атрибут) **Vet_Centers** - ентитет во кој ќе се чуваат информации за ветеринарните центри. * ID - нумерички тип (примарен клуч) * name - текстуален тип (задолжителен атрибут) * address - текстуален тип (задолжителен атрибут) * description - текстуален тип * longitude - varchar тип * latitute - varchar тип * phoneNumber - текстуален тип (задолжителен атрибут) * workingHours - нумерички тип **Pets** - ентитет во кој се чуваат податоци за секое милениче кое што било примено во ветeринарниот центар. * ID - нумерички тип (примарен клуч) * description - текстуален тип * color - (hexadecimal ->char,short или int) * dateOfBirthday - дата * description - текстуален тип * name - текстуален тип **Pet_Galery** - ентитет во кој ќе се чуваат слики од миленичиња. * ID - нумерички тип (примарен клуч) * image **Type_Of_Pets** - ентитет во кој ќе се чуваат податоци за различни категории на миленичиња (куче, маче итн.). * ID - нумерички тип (примарен клуч) * kind_of_pet - текстуален тип **Breeds** - ентитет во кој ќе се чуваат податоци за одредена раса/сорта. Breeds e слаб ентитет бидејќи расата на милениче не постои ако не постои категоријата на милениче. * ID - нумерички тип (примарен клуч) * name - текстуален тип **Pet_Status** - ентитет во кој ќе се зачувуваат сите типови на состојби кога едно милениче е во ветеринарна служба, пример: примен, на чекање, операција, закрепнува итн.. * ID - нумерички тип (примарен клуч) * type - текстуелен тип * note - текстуален тип **Therapy** - ентитет во кој ќе се зачувуваат сите настани поврзани со едно милениче * ID - нумерички тип (примарен клуч) * appointmentDate - датум * description - текстуален тип **Medecines** - ентитет во кој ќе се чуваат сите лекови. * ID - нумерички тип (примарен клуч) * name - текстуален тип * description - текстуален тип **Manufacturer** - ентитет во кој ќе се чуваат производителите на лекови. * ID - нумерички тип (примарен клуч) * name - текстуален тип * description - текстуален тип * state - текстуален тип * city - текстуален тип **Diagnostics** - ентитет во кој ќе се чуваат дијагнозите за миленичињата. * ID - нумерички тип (примарен клуч) * description - текстуален тип **Jobs** - ентитет во кој ќе се чуваат слободните работни места во ветеринарните центри. * ID - нумерички тип (примарен клуч) * description - текстуален тип * predictedSalary - нумерички тип **Reports** - ентитет во кој ќе се чуваат пријавите за изгубени миленичиња. * ID - нумерички тип (примарен клуч) * description - текстуален тип **Pet_Cares** - ентитет во кој ќе се чуваат барањата за услуги (Пример: за чување на милениче). * ID - нумерички тип (примарен клуч) * title - текстуален тип * description - текстуален тип * dateEnding - дата * start_date - дата **Products** - ентитет во кој ќе се чуваат податоци за продуктите. * ID - нумерички тип (примарен клуч) * name - текстуален тип * description - текстуален тип * price - нумерички тип * dateAdded - дата * isActive - boolean (nullable) * category - текстуален тип * available_quantity - нумерички тип **Orders**- ентитет во кој ќе се чуваат податоци за нарачките. * ID - нумерички тип (примарен клуч) * Quantity - нумерички тип **Blog_Post_For_Consultations** - ентитет во кој ќе се чуваат сите консултации. * ID - нумерички тип (примарен клуч) * title - текстуален тип * description - текстуален тип * dateAsked - дата **Blog_Post_Answers** - ентитет во кој ќе се чуваат прашањата. * ID - нумерички тип (примарен клуч) * reply - текстуален тип * parentID - нумерички тип * date_answers - дата == Релации **1. servise_for** 1-N релација помеѓу Users и Pet_Cares. Еден корисник може да побара услуга за повеќе миленичиња. Едно милениче има само еден сопственик и истиот може да побара услуга од ветеринарниот центар. **2. are_adviced_on** 1-N релација помеѓу Users и Blog_Post_For_Consultations. Еден корисник може да побара повеќе совети. Секој од советите припаѓа на еден корисник. **3. respond_to** 1-N релација помеѓу Blog_Post_Answers и Users. Еден корисник може да одговара на повеќе прашања но секој одговор е даден од еден User. **4. need** 1-N релација помеѓу Jobs и Users. За една работа се потребни повеќе корисници. На еден корисник му треба само една работа. **5. is_the_owner_of** 1-N релација помеѓу Users и Pets. Еден корисник може да биде сопственик на повеќе миленичиња. Едно милениче има само еден сопственик. **6. made_by** N-1 релација помеѓу Users и Diagnostics. Еден корисник (ветеринар) може да воспостави повеќе дијагнози. Една дијагноза е воспоставена од еден ветеринар. **7. include** 1-N релација помеѓу Roles и Users. Kaде што за секој User ќе стои врската со неговата улога. Секој корисник ќе има една улога и една улога ќе биде за повеќе корисници. **8. extend** 1-N релација помеѓу Blog_Post_For_Consultations и Blog_Post_Answers. Едно прашање може да има повеќе одговори. Но секој одговор е само за едно прашање. **9. is_in** 1-N релација помеѓу Vet_Centers и Јоbs. Во еден ветеринарен центар може да има отворено повеќе работни позиции. Една работна позиција припаѓа само на еден ветеринарен центар. **10. is_located** 1-N релација помеѓу Cities i Vet_Centers. Во еден град може да има повеќе ветеринарни центри, ветеринарниот центар може да се наоѓа само во еден град. **11. visit** N-M релација помеѓу Pets и Vet_Centers. Во еден ветеринарен центар може да бидат донесени повеќе животни. Едно животно може да биде однесено само во еден ветeринарен центар. **12. thеre_are** N-M релација помеѓу Type_Of_Pets и Products. За едeн вид на животно има повеќе продукти за продажба. Еден продукт може да биде достапен за повеќе видови миленичиња. **13. are_made** N-M релација помеѓу Products и Orders. За еден продукт може да има повеќе нарачки. Во една нарачка може да има повеќе продукти. **14. available** N-M релација помеѓу Products и Type_Of_Pets. Еден продукт може да биде достапен за повеќе видови на миленичиња. За еден вид има повеќе продукти кои се достапни за нарачка. **15. from** 1-1 релација помеѓу Breeds и Type_Of_Pets. Една категорија на миленичиња припаѓа само на една раса. Една раса на миленичиња припаѓа само во една категорија. **16. takes** N-M релација помеѓу Pets и Therapy. За едно милениче има повеќе настани. За еден настан има повеќе животни. **17. has** 1-N релација помеѓу Pet_Status и Therapy. За една состојба има повеќе настани. За еден настан има само една состојба. **18. treated_by** 1-N релација помеѓу Diagnostics и Therapy. За една дијагноза има повеќе терапии кои што му се даваат на миленичето. За секоја терапија има една дијагноза. **19. prescribes** 1-N релација помеѓу Diagnostics и Medecines. За една дијагноза има повеќе лекови. Еден лек е само за одредена дијагноза. **20. produced** N-1 релација помеѓу Medecines и Manufacturers. Одреден лек го прави само еден производител. Еден производител може да произведе повеќе лекови. **21. is_being_prepared** 1-N релација помеѓу Pets и Reports. За едно милениче може да има повеќе извештаи. Еден извештај припаѓа само на едно милениче. **22. it_might_be** 1-N релација помеѓу Type_Of_Pets и Pets. Вo еден вид (куче, маче) на милениче припаѓаат повеќе миленичиња. Едно милениче неможе да припаѓа во различни вида. **23. there_are_in** 1-N релација помеѓу Pets и Pet_Galery. За едно милениче може да има повеќе слики. Една слика припаѓа само на едно милениче. **24. writes** 1-N релација помеѓу Users и Reports. Еден корисник (доктор) може да напише повеќе извештаи. Еден извештај е напишан од еден доктор. **25. requires** 1-N релација помеѓу Vet_Centers и Pet_Cares. Во еден ветеринарен центар може да биде побарано да се згрижат повеќе миленици. Услугата згрижување на едно милениче може да биде побарана само во еден ветеринарен центар. **26. is_made_in** 1-N релација помеѓу Vet_Centers и Diagnostics. Во еден ветеринарен центар може да се поставуваат повеќе дијагнози. Една дијагноза истовремено може да биде поставена само во еден ветеринарен центар. **27. established** N-M релација помеѓу Pets и Diagnostics. На едно милениче може да му бидат поставени повеќе дијагнози. Една иста дијагноза може да биде поставена кај повеќе миленичиња. **27. for** 1-N релација помеѓу Pets_Status и Pets. Еден статус на состојба (примен, на чекање) може да го имаат повеќе миленици. Едно милениче истовремено може да има само еден статус на состојба. **28. service_for_pets** 1-N релација помеѓу Pet_Cares и Pets. Една услуга може да биде побарана за повеќе милиничиња. За едно милениче истовремено може да биде побарана само една услуга. **29. make_or_aaprove** 1-N релација помеѓу Users и Orders. Едeн корисник може да направи/потврди повеќе нарачки. Една нарачка може да биде направена/потврдена од само еден корисник. == Историјат [https://develop.finki.ukim.mk/projects/VetCareConnect/attachment/wiki/ERModel/ERmodel_v1.jpg Верзија 1] - Иницијална верзија на моделот. Креирани се ентитетите и релациите меѓу истите. [https://develop.finki.ukim.mk/projects/VetCareConnect/attachment/wiki/ERModel/ERmodel_v2.jpg Верзија 2] - Од страна на демонстраторката на лабраториски вежби ни беше предложено да ја промениме релацијата made_by N:M (Users:Diagnostics) со made_by 1:N (Users:Diagnostics). [https://develop.finki.ukim.mk/projects/VetCareConnect/attachment/wiki/ERModel/ERmodel_v3.jpg Верзија 3] - Сами си воочивме една грешка во релацијата are_advised_on 1-N релација помеѓу Blog_Post_For_Consultations и Users. Истата ја поправивме на 1-N релација помеѓу Users и Blog_Post_For_Consultations. [https://develop.finki.ukim.mk/projects/VetCareConnect/attachment/wiki/ERModel/ERmodel_v4.jpg Верзија 4] - Го додадовме атрибутот name кај ентитетите Medecines и Manufacturers. [https://develop.finki.ukim.mk/projects/VetCareConnect/attachment/wiki/ERModel/ERmodel_v5.jpg Верзија 5] - Го додадовме атрибутот password кај ентитетот Users. [https://develop.finki.ukim.mk/projects/VetCareConnect/attachment/wiki/ERModel/ERmodel_v6.jpg Верзија 6] - Го избришавме атрибутот adress кај ентитетот Cities. [https://develop.finki.ukim.mk/projects/VetCareConnect/attachment/wiki/ERModel/ERmodel_v7.jpg Верзија 7] - 1. Со релацијата **is_made_in** ги поврзавме Vet_Centers со Diagnostics. \\2. Со **established** ги поврзавме Pets со Diagnostics. \\3. Со релацијата **for** ги поврзавме Pets со Pets_Status. \\4. Избришена релацијата помеѓу Pets и Products. Помеѓу Pets i Type_of_Pets преименувана релацијата од available во **there_are**. \\5. Во Blog_Post_Answers додаден атрибут **date_answers**. \\6. Во Pets додаден атрибут **name**. \\7. Во Type_of_Pets атрибутот name преименуван во **kind_of_pet**. \\8. Во Pet_Cares додаден атрибут **start_date**. \\9. Во Products додаден атрибут **available_quantity**. \\10. Со релацијата **make_or_approve** ги поврзавме Users со Orders. \\11. Релацијата помеѓу Medecines и Manufacturers преименувана во **produced** (заради две релации со исто име). \\12. Со релацијата **service_for_pets** ги поврзавме Pets со Pet_Cares. == Направени промени '''''Овој дел е самостојна изрботка.''''' Промените кои што се направени се по препорака од колегите. Направена е промена во релацијата **service_for_pets**. Релацијата е променета од 1:N Pet_Cares:Pets во 1:N Pets:Pet_Cares. Промената ја направив бидејќи не е логично за едно животно да може да се побара само една услуга. За едно милениче ќе може да бидат побарувани повеќе услуги но секоја услуга истовремено ќе може да биде побарана од само едно милениче. Уште подобро би било ако се промени во many-to-many но засега останува вака. \\Атрибутот **quantity** e ставен да биде атрибут на релацијата are_made. Бидејќи како што беше дефинирано секој производ во една нарачка ќе добиваше иста количина. [https://develop.finki.ukim.mk/projects/VetCareConnect/attachment/wiki/Version1/Popraven_Dijagram_Elena.jpg Корегиран дијаграм]