== Верзија 2 == E-R Дијаграм == Податочни побарувања === Ентитети * **Covek** - ентитет кој ги има податоците потребни да се чуваат за секој поединец (корисник). Од овој ентитет произлегуваат уште 2 други.\\ * ''Кандидат клучеви:'' ''**__covek_id__**'', вештачки нумерички идентификатор за секоја инстанца од ''Covek''. Претставува PRIMARY_KEY (задолжителен). * ''Атрибути:''\\ * ime - од тип String (задолжителен) * prezime - од тип String (задолжителен) * EMBG - од тип int/long int (задолжителен) * e-mail - од тип String (задолжителен) * telefoni - од тип int/long int (опционален)\\ * **Pacient** - произлегува од Човек.\\ * ''Кандидат клучеви:'' ''**__pacient_id__**'', вештачки нумерички идентификатор за секоја инстанца од ''Pacient''. Претставува PRIMARY_KEY (задолжителен).\\ * **Doktor** - ентитет кој произлегува од Човек. Овој ентитет има 2 субкласи.\\ * ''Кандидат клучеви:'' ''**__br_licenca__**'', нумерички идентификатор кој го имаат сите доктори за секоја инстанца од ''Doktor''. Претставува PRIMARY_KEY (задолжителен).\\ * **Maticen** - произлегува од Доктор, клучот се наследува од доктор (број на лиценца).\\ * **Specijalist** - произлегува од Доктор, клучот се наследува од доктор (број на лиценца).\\ * **Specijalnost** - ги чува сите специјалности на докторите (специјалисти). * ''Кандидат клучеви:'' ''**__specijalnost_id__**'', вештачки нумерички идентификатор кој го имаат специјалностите за секоја инстанца од ''Specijalnost''. Претставува PRIMARY_KEY (задолжителен).\\ * ''Атрибути:''\\ * naziv_spec - од тип String (задолжителен)\\ * **Bolnica** - ентитет во кој се чува листа на сите болници.\\ * ''Кандидат клучеви:'' ''**__bolnica_id__**'', вештачки нумерички идентификатор кој го имаат сите болници за секоја инстанца од ''Bolnica''. Претставува PRIMARY_KEY (задолжителен).\\ * ''Атрибути:'' * naziv - од тип String (задолжителен) * grad - од тип String (задолжителен) * adresa - од тип String и е атрибут со повеќе вредности (ulica - од тип String и broj - од тип int) (задолжителен)\\ * **Oddel** - ентитет во кој се чува листа на сите оддели во болниците. Овој е слаб ентитет и е во зависна релација со доктор. * ''Кандидат клучеви:'' ''**__oddel_id__**'', вештачки нумерички идентификатор кој го имаат сите оддели во болниците за секоја инстанца од ''Oddel''. Претставува PRIMARY_KEY (задолжителен).\\ * ''Атрибути:'' * naziv - од тип String (задолжителен)\\ * **Pregled** - чува ИД за секој извршен преглед. * ''Кандидат клучеви:'' ''**__pregled_id__**'', вештачки нумерички идентификатор за секоја инстанца од ''Pregled''. Претставува PRIMARY_KEY (задолжителен).\\ * **Upat** - потребен за да може пациентот да закаже термин кај специјалист. * ''Кандидат клучеви:'' ''**__upat_id__**'', вештачки нумерички идентификатор за секоја инстанца од ''Upat''. Претставува PRIMARY_KEY (задолжителен). * ''Атрибути:'' * naziv_oddel - од тип String (задолжителен)\\ * **Termin** - листа на достапни термини за закажување. Претставува слаб ентитет и е во зависна врска со специјалист. * ''Кандидат клучеви:'' ''**__termin_id__**'', вештачки нумерички идентификатор за секоја инстанца од ''Termin''. Претставува PRIMARY_KEY (задолжителен). * ''Атрибути:'' * datum - од тип date (задолжителен) * cas - од тип dateTime (задолжителен) * doktor - од тип String (задолжителен)\\ * **Transakcija** - чува листа на извршени трансакции. * ''Кандидат клучеви:'' ''**__tran_id__**'', вештачки нумерички идентификатор за секоја инстанца од ''Transakcija''. Претставува PRIMARY_KEY (задолжителен). * ''Атрибути:'' * suma - од тип int/long int (задолжителен) * smetka - од тип int/long int (задолжителен)\\ * **Rezervacija** - потребен за да може пациентот да закаже термин кај специјалист. * ''Кандидат клучеви:'' ''**__rezervacija_id__**'', вештачки нумерички идентификатор за секоја инстанца од ''Rezervacija''. Претставува PRIMARY_KEY (задолжителен). * ''Атрибути:'' * termin - од тип date (задолжителен)\\ * **Login** - ентитет кој чува листа со потребни креденцијали за најава. * ''Кандидат клучеви:'' ''**__login_id__**'', вештачки нумерички идентификатор за секоја инстанца од ''Login''. Претставува PRIMARY_KEY (задолжителен). * ''Атрибути:'' * password - од тип String (задолжителен) * login_e-mail - од тип String (задолжителен) * login_uloga_id - од тип String (задолжителен)\\ * **Ulogi** - ентитет кој ги содржи улогите со кои може да се најави еден корисник. * ''Кандидат клучеви:'' ''**__uloga_id__**'', вештачки нумерички идентификатор за секоја инстанца од ''Ulogi''. Претставува PRIMARY_KEY (задолжителен). * ''Атрибути:'' * uloga-ime - од тип String (задолжителен) * uloga_opis - од тип String (задолжителен)\\ * **Permisii** - чува листа на извршени трансакции. * ''Кандидат клучеви:'' ''**__per_id__**'', вештачки нумерички идентификатор за секоја инстанца од ''Permisii''. Претставува PRIMARY_KEY (задолжителен). * ''Атрибути:'' * per_ime - од тип String (задолжителен) * per_uloga_id - од тип int/long int (задолжителен) === Релации * **ima** - Човек има улоги и пермисии, во зависност од тоа дали ќе биде најавен како доктор или како пациент. Има login, во смисла дека се најавува на апликацијата. * **pravi** - Секој доктор може да прави преглед. Кардиналноста е 1 : N, што значи дека еден доктор може да прави повеќе прегеди, а еден преглед може да биде направен/извршен од еден доктор. * **dobiva** - Пациент добива упат. Кардиналноста е 1 : N, што значи дека еден пациент може да добие повеќе упати и еден упат може да биде даден на еден пациент. * **raboti_vo** - Доктор работи во оддел. Кардиналноста е N : 1, од двете страни има тотално учество. Тоа значи дека во еден оддел мора да работи барем еден доктор, а еден доктор мора да работи во само еден оддел. * **za_kaj** - Слаба релација помеѓу термин и специјалист. Кардиналност 1 : 1. Еден термин мора да е за кај еден специјалист и за кај еден специјалист има еден термин. * **go_ima_vo** - Тотално учество од страната на болница. Кардиналност N : 1. Еден оддел мора да биде точно во една болница, во една болница може да има еден или повеќе оддели. * **za_vo** - Упатот е за во некој оддел. Еден упат е наменет за во еден оддел, во еден оддел може да одат пациенти со еден упат. Кардиналност 1 : 1. * **se_dobiva** - Од извршен преглед може да се добијат повеќе упати, а еден упат може да биде напишан/издаден врз основа на еден извршен преглед. Кардиналност 1 : N. * **pravi** - Со избирање на даден термин мора да се направи една резервација, а резервацја може да се направи со избирање на еден термин. Кардиналност 1 : 1. Тотално учество од страната на резервација. * **moze_da_dava** - Специјалист може да дава упат. Кардиналноста е 1 : 1, па според тоа еден упат може да биде издаден од еден специјалист и еден специјалист може да даде еден упат. * **specijalizira** - Еден специјалист мора да специјализира во точно една специјалност, во една специјалност може да специјализираат повеќе специјалисти. Кардиналност 1 : N. Тотално учество од страната на специјалност. * **vo** - Еден оддел мора да биде во точно една болница, во една болница мора да има само еден оддел. Кардиналност 1 : 1. Тотално учество од двете страни. * **se_prebaruva** - Според еден упат може да се пребарува термин, еден термин може да биде пребаруван според дијагнозата внесена во упатот. Кардиналност 1 : 1. * **potvrduva_so** - Резервацијата се потврдува со трансакција. Со една трансакција може да се потврди една резервација и една резервација може да биде потврдена со една трансакција. Кардиналност 1 : 1.