Changes between Version 2 and Version 3 of ERModel


Ignore:
Timestamp:
09/18/26 21:25:10 (12 days ago)
Author:
183164
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • ERModel

    v2 v3  
    1 = Entity-Relationship Model v.01 =
     1= Ентитетско-релационен модел v.01 =
    22
    3 == Diagram ==
     3== Дијаграм ==
    44
    55[[Image(ERModel_v01.png, width=100%)]]
    66
    7 Source file: [attachment:ERModel_v01.xml]
     7Изворна датотека: [attachment:ERModel_v01.xml]
    88
    9 == Data requirements ==
     9== Барања за податоци ==
    1010
    11 === Entities ===
     11=== Ентитети ===
    1212
    1313==== Admins ====
    14 Represents the administrators of the system. Administrators have full control over the application: they manage user accounts, configure the categories of problems and assign reports to municipal workers. They are modeled as a separate entity set because they take part in different relationships (Manages, Assigns) than the other types of users.
     14Ги претставува администраторите на системот. Администраторите имаат целосна контрола врз апликацијата: управуваат со корисничките сметки, ги конфигурираат категориите на проблеми и ги доделуваат пријавите на општинските работници. Моделирани се како посебно множество ентитети бидејќи учествуваат во различни релации (Manages, Assigns) од другите типови корисници.
    1515
    16 '''Candidate keys:''' admin_id and email. email is unique for every administrator, but it can change over time, so the generated numeric identifier admin_id is chosen as the primary key because it is stable and shorter.
     16'''Кандидат клучеви:''' admin_id и email. Е-поштата е единствена за секој администратор, но може да се промени со текот на времето, па затоа за примарен клуч е избран генерираниот нумерички идентификатор admin_id, кој е стабилен и пократок.
    1717
    18 '''Attributes:'''
    19  * admin_id - numeric, required, auto-generated
    20  * full_name - text, required, up to 100 characters
    21  * email - text, required, unique, valid e-mail format
    22  * password - text, required, stored as a hash, never as plain text
     18'''Атрибути:'''
     19 * admin_id - нумерички, задолжителен, автоматски генериран
     20 * full_name - текст, задолжителен, до 100 знаци
     21 * email - текст, задолжителен, единствен, валиден формат на е-пошта
     22 * password - текст, задолжителен, се чува како хаш, никогаш како обичен текст
    2323
    2424==== Workers ====
    25 Represents the municipal workers who process the reports. Workers receive assignments, update the status of reports and write comments about the progress of the work. They are a separate entity set because only they take part in the Receives, Updates and Writes relationships.
     25Ги претставува општинските работници кои ги обработуваат пријавите. Работниците добиваат доделувања, го ажурираат статусот на пријавите и пишуваат коментари за напредокот на работата. Моделирани се како посебно множество ентитети бидејќи само тие учествуваат во релациите Receives, Updates и Writes.
    2626
    27 '''Candidate keys:''' worker_id and email. worker_id is chosen as the primary key for the same reasons as for Admins.
     27'''Кандидат клучеви:''' worker_id и email. За примарен клуч е избран worker_id од истите причини како кај Admins.
    2828
    29 '''Attributes:'''
    30  * worker_id - numeric, required, auto-generated
    31  * full_name - text, required, up to 100 characters
    32  * email - text, required, unique, valid e-mail format
    33  * password - text, required, stored as a hash
     29'''Атрибути:'''
     30 * worker_id - нумерички, задолжителен, автоматски генериран
     31 * full_name - текст, задолжителен, до 100 знаци
     32 * email - текст, задолжителен, единствен, валиден формат на е-пошта
     33 * password - текст, задолжителен, се чува како хаш
    3434
    3535==== Citizens ====
    36 Represents the citizens who use the application to report communal problems. A citizen can submit many reports and follow their status. Citizens are separate from the other users because only they submit reports, and they have an additional optional contact phone.
     36Ги претставува граѓаните кои ја користат апликацијата за пријавување на комунални проблеми. Еден граѓанин може да поднесе многу пријави и да го следи нивниот статус. Граѓаните се одвоени од другите корисници бидејќи само тие поднесуваат пријави и имаат дополнителен незадолжителен телефон за контакт.
    3737
    38 '''Candidate keys:''' citizen_id and email. citizen_id is chosen as the primary key because it is stable, while a citizen may change their e-mail address.
     38'''Кандидат клучеви:''' citizen_id и email. За примарен клуч е избран citizen_id бидејќи е стабилен, додека граѓанинот може да ја промени својата е-пошта.
    3939
    40 '''Attributes:'''
    41  * citizen_id - numeric, required, auto-generated
    42  * full_name - text, required, up to 100 characters
    43  * email - text, required, unique, valid e-mail format
    44  * phone - text, optional, up to 20 characters, digits and the + sign only
    45  * password - text, required, stored as a hash
     40'''Атрибути:'''
     41 * citizen_id - нумерички, задолжителен, автоматски генериран
     42 * full_name - текст, задолжителен, до 100 знаци
     43 * email - текст, задолжителен, единствен, валиден формат на е-пошта
     44 * phone - текст, незадолжителен, до 20 знаци, само цифри и знакот +
     45 * password - текст, задолжителен, се чува како хаш
    4646
    4747==== Categories ====
    48 Represents the categories of communal problems (for example roads, street lighting, waste). Categories are modeled as a separate entity set instead of a text attribute of the report, so that administrators can add and change them, and so that all reports use the same consistent list of categories.
     48Ги претставува категориите на комунални проблеми (на пример патишта, улично осветлување, отпад). Категориите се моделирани како посебно множество ентитети, наместо како текстуален атрибут на пријавата, за да можат администраторите да додаваат и менуваат категории и сите пријави да користат иста доследна листа на категории.
    4949
    50 '''Candidate keys:''' category_id and name. name is unique, but a category may be renamed, so category_id is chosen as the primary key.
     50'''Кандидат клучеви:''' category_id и name. Името е единствено, но категоријата може да биде преименувана, па затоа за примарен клуч е избран category_id.
    5151
    52 '''Attributes:'''
    53  * category_id - numeric, required, auto-generated
    54  * name - text, required, unique, up to 80 characters
     52'''Атрибути:'''
     53 * category_id - нумерички, задолжителен, автоматски генериран
     54 * name - текст, задолжителен, единствен, до 80 знаци
    5555
    5656==== Reports ====
    57 Represents a single communal problem reported by a citizen (damaged road, broken street light, waste...). It is the central entity of the system because photos, status changes, comments and assignments all refer to a report.
     57Претставува еден комунален проблем пријавен од граѓанин (оштетен пат, неисправно улично осветлување, отпад...). Ова е централниот ентитет на системот, бидејќи фотографиите, промените на статусот, коментарите и доделувањата се однесуваат на пријава.
    5858
    59 '''Candidate keys:''' report_id is the only candidate key. No natural attribute uniquely identifies a report, so a generated numeric identifier is used as the primary key.
     59'''Кандидат клучеви:''' report_id е единствениот кандидат клуч. Не постои природен атрибут кој еднозначно ја определува пријавата, па за примарен клуч се користи генериран нумерички идентификатор.
    6060
    61 '''Attributes:'''
    62  * report_id - numeric, required, auto-generated
    63  * description - text, required
    64  * location_text - text, optional (manually entered address)
    65  * latitude - numeric, optional, between -90 and 90
    66  * longitude - numeric, optional, between -180 and 180
    67  * status - text, required, one of: submitted, received, in_progress, resolved, rejected
    68  * priority - text, required, one of: low, medium, high, urgent
    69  * created_at - date and time, required
     61'''Атрибути:'''
     62 * report_id - нумерички, задолжителен, автоматски генериран
     63 * description - текст, задолжителен
     64 * location_text - текст, незадолжителен (рачно внесена адреса)
     65 * latitude - нумерички, незадолжителен, помеѓу -90 и 90
     66 * longitude - нумерички, незадолжителен, помеѓу -180 и 180
     67 * status - текст, задолжителен, една од вредностите: submitted, received, in_progress, resolved, rejected
     68 * priority - текст, задолжителен, една од вредностите: low, medium, high, urgent
     69 * created_at - датум и време, задолжителен
    7070
    71 At least one of location_text or latitude/longitude must be entered.
     71Мора да се внесе барем едно од location_text или latitude/longitude.
    7272
    7373==== Photos ====
    74 Represents a photo attached to a report as visual documentation of the problem. It is modeled as a separate entity set because one report can have several photos, which cannot be stored in a single attribute of the report.
     74Претставува фотографија прикачена кон пријава како визуелна документација на проблемот. Моделирана е како посебно множество ентитети бидејќи една пријава може да има повеќе фотографии, кои не можат да се чуваат во еден атрибут на пријавата.
    7575
    76 '''Candidate keys:''' photo_id is the only candidate key and it is used as the primary key.
     76'''Кандидат клучеви:''' photo_id е единствениот кандидат клуч и се користи како примарен клуч.
    7777
    78 '''Attributes:'''
    79  * photo_id - numeric, required, auto-generated
    80  * image_url - text, required, path or URL of the stored image, up to 500 characters
     78'''Атрибути:'''
     79 * photo_id - нумерички, задолжителен, автоматски генериран
     80 * image_url - текст, задолжителен, патека или URL до зачуваната слика, до 500 знаци
    8181
    8282==== !StatusLogs ====
    83 Represents one change of the status of a report. Every change (submitted, received, in progress, resolved, rejected) is recorded as a new entry, so the full history of a report is kept. This provides the transparency and accountability required by the project, because citizens can see when and how their report was processed.
     83Претставува една промена на статусот на пријава. Секоја промена (поднесена, примена, во тек, решена, одбиена) се евидентира како нов запис, со што се чува целата историја на пријавата. Ова ја обезбедува транспарентноста и одговорноста што ги бара проектот, бидејќи граѓаните можат да видат кога и како била обработена нивната пријава.
    8484
    85 '''Candidate keys:''' log_id is the only candidate key and it is used as the primary key.
     85'''Кандидат клучеви:''' log_id е единствениот кандидат клуч и се користи како примарен клуч.
    8686
    87 '''Attributes:'''
    88  * log_id - numeric, required, auto-generated
    89  * status - text, required, the new status: submitted, received, in_progress, resolved or rejected
    90  * changed_at - date and time, required
    91  * note - text, optional, explanation of the change
     87'''Атрибути:'''
     88 * log_id - нумерички, задолжителен, автоматски генериран
     89 * status - текст, задолжителен, новиот статус: submitted, received, in_progress, resolved или rejected
     90 * changed_at - датум и време, задолжителен
     91 * note - текст, незадолжителен, објаснување за промената
    9292
    9393==== Comments ====
    94 Represents a comment written by a municipal worker about the progress of solving a report. Comments are a separate entity set because one report can receive many comments over time, each with its own author and time.
     94Претставува коментар напишан од општински работник за напредокот на решавањето на пријавата. Коментарите се посебно множество ентитети бидејќи една пријава може да добие многу коментари со текот на времето, секој со свој автор и време.
    9595
    96 '''Candidate keys:''' comment_id is the only candidate key and it is used as the primary key.
     96'''Кандидат клучеви:''' comment_id е единствениот кандидат клуч и се користи како примарен клуч.
    9797
    98 '''Attributes:'''
    99  * comment_id - numeric, required, auto-generated
    100  * content - text, required
    101  * created_at - date and time, required
     98'''Атрибути:'''
     99 * comment_id - нумерички, задолжителен, автоматски генериран
     100 * content - текст, задолжителен
     101 * created_at - датум и време, задолжителен
    102102
    103103==== Assignments ====
    104 Represents the assignment of a report to a municipal worker, made by an administrator. It is modeled as an entity set because the assignment connects three entity sets (Admins, Workers, Reports) and has its own attributes (time and note).
     104Претставува доделување на пријава на општински работник, направено од администратор. Моделирано е како множество ентитети бидејќи доделувањето поврзува три множества ентитети (Admins, Workers, Reports) и има свои атрибути (време и забелешка).
    105105
    106 '''Candidate keys:''' assignment_id, and the combination of the assigned report and worker, because the same worker cannot be assigned to the same report twice. assignment_id is chosen as the primary key because it is a single simple value.
     106'''Кандидат клучеви:''' assignment_id, како и комбинацијата од доделената пријава и работникот, бидејќи истиот работник не може двапати да биде доделен на истата пријава. За примарен клуч е избран assignment_id бидејќи е една едноставна вредност.
    107107
    108 '''Attributes:'''
    109  * assignment_id - numeric, required, auto-generated
    110  * assigned_at - date and time, required
    111  * note - text, optional, instructions from the administrator
     108'''Атрибути:'''
     109 * assignment_id - нумерички, задолжителен, автоматски генериран
     110 * assigned_at - датум и време, задолжителен
     111 * note - текст, незадолжителен, упатства од администраторот
    112112
    113 === Relationships ===
     113=== Релации ===
    114114
    115115==== Manages (Admins - Categories) ====
    116 Each category is created and managed by exactly one administrator, and an administrator can manage many categories. Participation of Categories is total, because every category must have an administrator responsible for it. Participation of Admins is partial, because an administrator does not have to manage any category.
     116Секоја категорија е креирана и управувана од точно еден администратор, а еден администратор може да управува со многу категории. Учеството на Categories е тотално, бидејќи секоја категорија мора да има одговорен администратор. Учеството на Admins е парцијално, бидејќи администраторот не мора да управува со ниту една категорија.
    117117
    118118==== Classifies (Categories - Reports) ====
    119 Each report belongs to exactly one category, and a category can contain many reports. Participation of Reports is total, because a report cannot be submitted without a category. Participation of Categories is partial, because a new category may still have no reports.
     119Секоја пријава припаѓа на точно една категорија, а една категорија може да содржи многу пријави. Учеството на Reports е тотално, бидејќи пријава не може да се поднесе без категорија. Учеството на Categories е парцијално, бидејќи нова категорија сè уште може да нема пријави.
    120120
    121121==== Submits (Citizens - Reports) ====
    122 Each report is submitted by exactly one citizen, and a citizen can submit many reports. Participation of Reports is total, because a report cannot exist without its author. Participation of Citizens is partial, because a registered citizen does not have to submit any report.
     122Секоја пријава е поднесена од точно еден граѓанин, а еден граѓанин може да поднесе многу пријави. Учеството на Reports е тотално, бидејќи пријава не може да постои без автор. Учеството на Citizens е парцијално, бидејќи регистриран граѓанин не мора да поднесе ниту една пријава.
    123123
    124124==== Has (Reports - Photos) ====
    125 Each photo belongs to exactly one report, and a report can have many photos. Participation of Photos is total, because a photo has no meaning without the report it documents. Participation of Reports is partial, because photos are optional.
     125Секоја фотографија припаѓа на точно една пријава, а една пријава може да има многу фотографии. Учеството на Photos е тотално, бидејќи фотографијата нема смисла без пријавата што ја документира. Учеството на Reports е парцијално, бидејќи фотографиите се незадолжителни.
    126126
    127127==== Logs (Reports - !StatusLogs) ====
    128 Each status change belongs to exactly one report, and a report can have many status changes over time. Participation of !StatusLogs is total, because a status change always refers to a specific report.
     128Секоја промена на статус припаѓа на точно една пријава, а една пријава може да има многу промени на статусот со текот на времето. Учеството на !StatusLogs е тотално, бидејќи промената на статус секогаш се однесува на конкретна пријава.
    129129
    130130==== Updates (Workers - !StatusLogs) ====
    131 A status change can be made by one worker, and a worker can make many status changes. Participation is partial on both sides, because some status changes are created automatically by the system (for example the initial "submitted" status), so they have no worker.
     131Промената на статус може да ја направи еден работник, а еден работник може да направи многу промени. Учеството е парцијално од двете страни, бидејќи некои промени на статусот ги креира системот автоматски (на пример почетниот статус „поднесена“), па немаат работник.
    132132
    133133==== Comments on (Reports - Comments) ====
    134 Each comment refers to exactly one report, and a report can have many comments. Participation of Comments is total, because a comment always refers to a report.
     134Секој коментар се однесува на точно една пријава, а една пријава може да има многу коментари. Учеството на Comments е тотално, бидејќи коментарот секогаш се однесува на пријава.
    135135
    136136==== Writes (Workers - Comments) ====
    137 Each comment is written by exactly one worker, and a worker can write many comments. Participation of Comments is total, because every comment must have an author.
     137Секој коментар е напишан од точно еден работник, а еден работник може да напише многу коментари. Учеството на Comments е тотално, бидејќи секој коментар мора да има автор.
    138138
    139139==== Assigns (Admins - Assignments) ====
    140 Each assignment is made by exactly one administrator, and an administrator can make many assignments. Participation of Assignments is total, because every assignment must be made by an administrator.
     140Секое доделување е направено од точно еден администратор, а еден администратор може да направи многу доделувања. Учеството на Assignments е тотално, бидејќи секое доделување мора да биде направено од администратор.
    141141
    142142==== Assigned via (Reports - Assignments) ====
    143 Each assignment refers to exactly one report, and a report can be assigned several times (for example to several workers). Participation of Assignments is total. Participation of Reports is partial, because a new report is not yet assigned.
     143Секое доделување се однесува на точно една пријава, а една пријава може да биде доделена повеќепати (на пример на повеќе работници). Учеството на Assignments е тотално. Учеството на Reports е парцијално, бидејќи нова пријава сè уште не е доделена.
    144144
    145145==== Receives (Workers - Assignments) ====
    146 Each assignment is given to exactly one worker, and a worker can receive many assignments. Participation of Assignments is total. Participation of Workers is partial, because a worker may currently have no assignments.
     146Секое доделување е дадено на точно еден работник, а еден работник може да добие многу доделувања. Учеството на Assignments е тотално. Учеството на Workers е парцијално, бидејќи работникот моментално може да нема доделувања.
    147147
    148 == Entity-Relationship Model History ==
     148== Историја на ЕР моделот ==
    149149
    150  * '''v01''' - Initial version of the ER model.
     150 * '''v01''' - Почетна верзија на ЕР моделот.
    151151
    152 == AI Use ==
     152== Користење на вештачка интелигенција ==
    153153
    154 [wiki:ERModelAIUsage ER Model AI Usage]
     154[wiki:ERModelAIUsage Користење на вештачка интелигенција за ЕР моделот]