wiki:ERModel

Version 4 (modified by 183164, 12 days ago) ( diff )

--

Ентитетско-релационен модел v.01

Дијаграм

Изворна датотека: ERModel_v01.xml​

Барања за податоци

Ентитети

Admins

Ги претставува администраторите на системот. Администраторите имаат целосна контрола врз апликацијата: управуваат со корисничките сметки, ги конфигурираат категориите на проблеми и ги доделуваат пријавите на општинските работници. Моделирани се како посебно множество ентитети бидејќи учествуваат во различни релации (Manages, Assigns) од другите типови корисници.

Кандидат клучеви: admin_id и email. Е-поштата е единствена за секој администратор, но може да се промени со текот на времето, па затоа за примарен клуч е избран генерираниот нумерички идентификатор admin_id, кој е стабилен и пократок.

Атрибути:

  • admin_id - нумерички, задолжителен, автоматски генериран
  • full_name - текст, задолжителен, до 100 знаци
  • email - текст, задолжителен, единствен, валиден формат на е-пошта
  • password - текст, задолжителен, се чува како хаш, никогаш како обичен текст

Workers

Ги претставува општинските работници кои ги обработуваат пријавите. Работниците добиваат доделувања, го ажурираат статусот на пријавите и пишуваат коментари за напредокот на работата. Моделирани се како посебно множество ентитети бидејќи само тие учествуваат во релациите Receives, Updates и Writes.

Кандидат клучеви: worker_id и email. За примарен клуч е избран worker_id од истите причини како кај Admins.

Атрибути:

  • worker_id - нумерички, задолжителен, автоматски генериран
  • full_name - текст, задолжителен, до 100 знаци
  • email - текст, задолжителен, единствен, валиден формат на е-пошта
  • password - текст, задолжителен, се чува како хаш

Citizens

Ги претставува граѓаните кои ја користат апликацијата за пријавување на комунални проблеми. Еден граѓанин може да поднесе многу пријави и да го следи нивниот статус. Граѓаните се одвоени од другите корисници бидејќи само тие поднесуваат пријави и имаат дополнителен незадолжителен телефон за контакт.

Кандидат клучеви: citizen_id и email. За примарен клуч е избран citizen_id бидејќи е стабилен, додека граѓанинот може да ја промени својата е-пошта.

Атрибути:

  • citizen_id - нумерички, задолжителен, автоматски генериран
  • full_name - текст, задолжителен, до 100 знаци
  • email - текст, задолжителен, единствен, валиден формат на е-пошта
  • phone - текст, незадолжителен, до 20 знаци, само цифри и знакот +
  • password - текст, задолжителен, се чува како хаш

Categories

Ги претставува категориите на комунални проблеми (на пример патишта, улично осветлување, отпад). Категориите се моделирани како посебно множество ентитети, наместо како текстуален атрибут на пријавата, за да можат администраторите да додаваат и менуваат категории и сите пријави да користат иста доследна листа на категории.

Кандидат клучеви: category_id и name. Името е единствено, но категоријата може да биде преименувана, па затоа за примарен клуч е избран category_id.

Атрибути:

  • category_id - нумерички, задолжителен, автоматски генериран
  • name - текст, задолжителен, единствен, до 80 знаци

Reports

Претставува еден комунален проблем пријавен од граѓанин (оштетен пат, неисправно улично осветлување, отпад...). Ова е централниот ентитет на системот, бидејќи фотографиите, промените на статусот, коментарите и доделувањата се однесуваат на пријава.

Кандидат клучеви: report_id е единствениот кандидат клуч. Не постои природен атрибут кој еднозначно ја определува пријавата, па за примарен клуч се користи генериран нумерички идентификатор.

Атрибути:

  • report_id - нумерички, задолжителен, автоматски генериран
  • description - текст, задолжителен
  • location_text - текст, незадолжителен (рачно внесена адреса)
  • latitude - нумерички, незадолжителен, помеѓу -90 и 90
  • longitude - нумерички, незадолжителен, помеѓу -180 и 180
  • status - текст, задолжителен, една од вредностите: submitted, received, in_progress, resolved, rejected
  • priority - текст, задолжителен, една од вредностите: low, medium, high, urgent
  • created_at - датум и време, задолжителен

Мора да се внесе барем едно од location_text или latitude/longitude.

Photos

Претставува фотографија прикачена кон пријава како визуелна документација на проблемот. Моделирана е како посебно множество ентитети бидејќи една пријава може да има повеќе фотографии, кои не можат да се чуваат во еден атрибут на пријавата.

Кандидат клучеви: photo_id е единствениот кандидат клуч и се користи како примарен клуч.

Атрибути:

  • photo_id - нумерички, задолжителен, автоматски генериран
  • image_url - текст, задолжителен, патека или URL до зачуваната слика, до 500 знаци

StatusLogs

Претставува една промена на статусот на пријава. Секоја промена (поднесена, примена, во тек, решена, одбиена) се евидентира како нов запис, со што се чува целата историја на пријавата. Ова ја обезбедува транспарентноста и одговорноста што ги бара проектот, бидејќи граѓаните можат да видат кога и како била обработена нивната пријава.

Кандидат клучеви: log_id е единствениот кандидат клуч и се користи како примарен клуч.

Атрибути:

  • log_id - нумерички, задолжителен, автоматски генериран
  • status - текст, задолжителен, новиот статус: submitted, received, in_progress, resolved или rejected
  • changed_at - датум и време, задолжителен
  • note - текст, незадолжителен, објаснување за промената

Comments

Претставува коментар напишан од општински работник за напредокот на решавањето на пријавата. Коментарите се посебно множество ентитети бидејќи една пријава може да добие многу коментари со текот на времето, секој со свој автор и време.

Кандидат клучеви: comment_id е единствениот кандидат клуч и се користи како примарен клуч.

Атрибути:

  • comment_id - нумерички, задолжителен, автоматски генериран
  • content - текст, задолжителен
  • created_at - датум и време, задолжителен

Assignments

Претставува доделување на пријава на општински работник, направено од администратор. Моделирано е како множество ентитети бидејќи доделувањето поврзува три множества ентитети (Admins, Workers, Reports) и има свои атрибути (време и забелешка).

Кандидат клучеви: assignment_id, како и комбинацијата од доделената пријава и работникот, бидејќи истиот работник не може двапати да биде доделен на истата пријава. За примарен клуч е избран assignment_id бидејќи е една едноставна вредност.

Атрибути:

  • assignment_id - нумерички, задолжителен, автоматски генериран
  • assigned_at - датум и време, задолжителен
  • note - текст, незадолжителен, упатства од администраторот

Релации

Manages (Admins - Categories)

Секоја категорија е креирана и управувана од точно еден администратор, а еден администратор може да управува со многу категории. Учеството на Categories е тотално, бидејќи секоја категорија мора да има одговорен администратор. Учеството на Admins е парцијално, бидејќи администраторот не мора да управува со ниту една категорија.

Classifies (Categories - Reports)

Секоја пријава припаѓа на точно една категорија, а една категорија може да содржи многу пријави. Учеството на Reports е тотално, бидејќи пријава не може да се поднесе без категорија. Учеството на Categories е парцијално, бидејќи нова категорија сè уште може да нема пријави.

Submits (Citizens - Reports)

Секоја пријава е поднесена од точно еден граѓанин, а еден граѓанин може да поднесе многу пријави. Учеството на Reports е тотално, бидејќи пријава не може да постои без автор. Учеството на Citizens е парцијално, бидејќи регистриран граѓанин не мора да поднесе ниту една пријава.

Has (Reports - Photos)

Секоја фотографија припаѓа на точно една пријава, а една пријава може да има многу фотографии. Учеството на Photos е тотално, бидејќи фотографијата нема смисла без пријавата што ја документира. Учеството на Reports е парцијално, бидејќи фотографиите се незадолжителни.

Logs (Reports - StatusLogs)

Секоја промена на статус припаѓа на точно една пријава, а една пријава може да има многу промени на статусот со текот на времето. Учеството на StatusLogs е тотално, бидејќи промената на статус секогаш се однесува на конкретна пријава.

Updates (Workers - StatusLogs)

Промената на статус може да ја направи еден работник, а еден работник може да направи многу промени. Учеството е парцијално од двете страни, бидејќи некои промени на статусот ги креира системот автоматски (на пример почетниот статус „поднесена“), па немаат работник.

Comments on (Reports - Comments)

Секој коментар се однесува на точно една пријава, а една пријава може да има многу коментари. Учеството на Comments е тотално, бидејќи коментарот секогаш се однесува на пријава.

Writes (Workers - Comments)

Секој коментар е напишан од точно еден работник, а еден работник може да напише многу коментари. Учеството на Comments е тотално, бидејќи секој коментар мора да има автор.

Assigns (Admins - Assignments)

Секое доделување е направено од точно еден администратор, а еден администратор може да направи многу доделувања. Учеството на Assignments е тотално, бидејќи секое доделување мора да биде направено од администратор.

Assigned via (Reports - Assignments)

Секое доделување се однесува на точно една пријава, а една пријава може да биде доделена повеќепати (на пример на повеќе работници). Учеството на Assignments е тотално. Учеството на Reports е парцијално, бидејќи нова пријава сè уште не е доделена.

Receives (Workers - Assignments)

Секое доделување е дадено на точно еден работник, а еден работник може да добие многу доделувања. Учеството на Assignments е тотално. Учеството на Workers е парцијално, бидејќи работникот моментално може да нема доделувања.

Историја на ЕР моделот

  • v01 - Почетна верзија на ЕР моделот.

Attachments (2)

Download all attachments as: .zip

Note: See TracWiki for help on using the wiki.