= ПЕР дијаграм = [[Image(compressed.png, height=1000px, width=1400px)]] == Податочни побарувања == == Ентитети == 1. **Корисник** наткласа која што ги опишува типовите на корисници во системот (без админ)\\ //user_id - SERIAL * е-пошта - VARCHAR(30) (примарен клуч) \\ * лозинка - VARCHAR(30) (задолжителен атрибут) \\ * име - VARCHAR(30) (задолжителен атрибут) \\ * презиме - VARCHAR(30) (задолжителен атрибут) \\ * пол - VARCHAR(10) (задолжителен атрибут) * адреса - VARCHAR(30) (задолжителен атрибут) 2. **Наставник** наткласа која ги опишува типовите на наставници. \\ 3. **Класен раководите** поткласа за одделенски наставник. \\ 4. **Предметен наставник** \\ 5. **Благајник** корисник кој може да постира барање за плаќање од страна на родителите. \\ 6. **Ученик** ентитет кој ги претставува сите ученици. \\ 7. **Родител** корисник кој може да се најави на системот, да ги погледне сите оценки на своето дете и да изврши плаќање. \\ 8. **Админ** наткласа за административните корисници во системот. \\ * е-пошта - VARCHAR(30) (примарен клуч) \\ * лозинка - VARCHAR(30) (задолжителен атрибут) \\ * име - VARCHAR(30) (задолжителен атрибут) \\ * презиме - VARCHAR(30) (задолжителен атрибут) \\ 9. **Супер админ** овој тип на администратор претставува админ кој може да ги креира администраторите на сите образовни институции 10. **Директор - админ** претставува тип на администратор кој го води системот само за една образовна институција. Може да креира корисници од тип родител, благајник, ученик и класен раководител. \\ 11. **Клас** ентитет кој ги претставува сите класови во едно училиште. \\ * одделение - INTEGER (примарен клуч) \\ * паралелка - CHAR(1) (примарен клуч) \\ * годинаНаСлушање - INTEGER (задолжителен атрибут) \\ 12. **Оценка** ентитет кој ги претставува сите оценки на еден ученик \\ * Id - SERIAL (примарен клуч) \\ * тип - VARCHAR(10), (задолжителен атрибут), типот може да биде усна оценка, писмена оценка, полугодишна оценка, годишна оценка \\ * оцена - INTEGER,(задолжителен атрибут), оцената може да биде 1-5 или поени \\ * полугодите - VARCHAR(10), (задолжителен атрибут) \\ * забелешка - VARCHAR(50), (задолжителен атрибут) \\ 13. **Соопштение** ентитет кој што го претставува соопштението креирано од страна на класниот раководител \\ * Id - SERIAL (примарен клуч) \\ * наслов - VARCHAR(20), (задолжителен атрибут) \\ * креираноНа - DATE \\ * содржина - VARCHAR(100), (задолжителен атрибут) \\ 14. **Предмет** ентитет кој што ги претставуваат предметите кој што ги слуша ученикот \\ * име - VARCHAR(20) (примарен клуч) \\ * фондЧасови - INTEGER \\ 15. **Неделен план ** ентитет кој го претставува планот/активностите во една седмица кој се случиле \\ * Id - SERIAL (примарен клуч) \\ * датумОд DATE, (задолжителен атрибут) \\ * датумДо DATE, (задолжителен атрибут) \\ 16. **Активност за Неделен план** ентитет за активностите кој што се случиле во неделата \\ * Id - SERIAL (примарен клуч) \\ * наслов - VARCHAR(20), (задолжителен атрибут) \\ * опис - VARCHAR(50), (задолжителен атрибут) \\ * денВоНедела - VARCHAR(10), (задолжителен атрибут) \\ 17. **Распоред** \\ 18. **Час** \\ * Id - SERIAL (примарен клуч) \\ * реденЧас INTEGER, (задолжителен атрибут) \\ * денВоНедела - VARCHAR(10), (задолжителен атрибут) 19. **Соопштение за плаќање** ентитет кој претставува соопштение за плаќање креирано од благајникот \\ * Id - SERIAL (примарен клуч) \\ * наслов - VARCHAR(20), (задолжителен атрибут) \\ * содржина - VARCHAR(100), (задолжителен атрибут) \\ * рокНаПлаќање - DATE, (задолжителен атрибут) \\ 20. **Плаќање** ентитет кој го претставува настанот за плаќање од страна на родителот \\ * Id - SERIAL (примарен клуч) \\ * статус - VARCHAR(10), (задолжителен атрибут), статус на плаќањето може да биде КРЕИРАНО, ОДОБРЕНО, ПЛАТЕНО, ЗАВРШЕНО \\ * tx_hash - VARCHAR(50),(задолжителен атрибут), трансакциски hash од blockchain explorer кој го потврдува извршеното плаќање \\ * износ - DECIMAL(38,18), (задолжителен атрибут), имаме 18 децимали после точка, а вкупно имаме 38 цифри \\ * валута - VARCHAR(10), (задолжителен атрибут) \\ * платеноНа - DATE \\ == Релации == 1. **Креира** (Супер админ - МОН ↔ Директор - Админ) 1:M \\ Супер админот на МОН може да креира повеќе директор - администратори кои управуваат само со податоци од своето училиште. \\ 2. **Креира** (Директор - Админ ↔ Корисник) 1:M \\ Администраторот на едно училиште може да креира корисници како што се родители, класни раководители, ученици, благајници. \\ 3. **Плаќање** (Родител ↔ Плаќање) M:N \\ Родителот може да плати плаќање кое го поставува благајникот. \\ 4. **Внесува** (Класен раководител ↔ Оцена) 1:M \\ Класниот раководител може да внесува повеќе оцени за своите ученици. \\ 5. **Одобрува** (Директор - Админ ↔ Соопштение за плаќање) 1:M \\ Откако благајникот ќе креира соопштение за плаќање, тоа мора да биде одобрено од страна на Директор - Администратор. \\ 6. **Е родител на** (Родител ↔ Ученик) 1:M \\ Еден родител/старател може да биде родител/старател на повеќе ученици во системот. (Близнаци, браќа, сестри и.т.н.) \\ 7. **Има** (Ученик ↔ Оценка) M:N \\ Ученикот може да има повеќе оценки во е-дневник. 8. **Учи** (Ученик ↔ Клас) M:1 \\ Во еден клас може да учат повеќе ученици. \\ 9. **Раководи** (Класен раководител ↔ Клас) 1:1 \\ Во овој систем, еден класен раководител може да раководи со е-дневникот само со еден клас за кој е задолжен. \\ 10. **Слуша** (Клас ↔ Предмет) M:N \\ Повеќе класови може да слушаат повеќе предмети. \\ 11. **Има** (Предмет ↔ Оценка) M:1 \\ Еден предмет може да има само една оценка. \\ 12. **Содржи** (Клас ↔ Соопштение) 1:M \\ Еден клас може да содржи повеќе соопштенија. \\ 13. **Има** (Клас ↔ Распоред) 1:1 \\ Еден клас во системот има само еден распоред. 14. **Креира** (Благајник ↔ Соопштение за плаќање) M:1 \\ Еден благајник може да креира повеќе соопштенија за плаќање. \\ 15. **Постира** (Класен раководител ↔ Соопштение) 1:M \\ Класните раководители може да креираат повеќе соопштенија. \\ 16. **Има** (Клас ↔ Неделен план) 1:M \\ Еден клас може да има повеќе неделни планови. \\ 17. **Запишува** (Класен раководител ↔ АктивностЗаНеделенПлан) M:N \\ Класните раководители се задолжени да запишуваат неделни планови за секоја недела. \\ 18. **Вклучува** (Соопштение за плаќање ↔ Плаќање) 1:1 \\ Едно соопштение за плаќање вклучува само едно плаќање. \\ 19. **Содржи** (Час ↔ Распоред) M:N \\ Во еден распоред за часови имаме повеќе часови кои треба да се оддржат во текот на неделата. \\ 20. **Содржи** (Неделен план ↔ Активност за неделен план) M:N \\ Во еден неделен план за активности/часови може да имаме повеќе активности кои се случуваат во неделата. 21. **Предава** (Предмет ↔ Предметен наставник) M:N \\ Еден предмет може да го предаваат повеќе наставници. \\ 22. **Има** (Час ↔ Предмет) M:N \\ Во текот на една недела, еден предмет може да биде слушан (да има час) во повеќе дена од неделата.