wiki:ERdiagram

Entity Relationship Diagram

ER дијаграмот ја прикажува структурата на податоците во апликацијата Reportium. Преку него се дефинираат ентитетите, нивните атрибути, како и релациите помеѓу нив. Овој дијаграм служи како основна водилка за дизајнирање на базата на податоци.

Податочни побарувања

Ентитети

Силни ентитети

  1. Person
  • Primary Key (PK): person_id - integer
  • Attributes:
    • name - text
    • surname - text
    • address - text
    • gender - enum (MALE, FEMALE)
    • date_of_birth - date
    • date_of_death - date
    • contact_phone - text
    • is_alive - boolean
    • is_stub - boolean
    • embg - text
  1. Institution
  • Primary Key (PK): institution_id - integer
  • Attributes:
    • name - text
    • address - text
    • type - enum (PRIMARY SCHOOL, HIGH SCHOOL, UNIVERSITY, ACADEMY)
    • year_established - integer
    • city - text
  1. Report
  • Primary Key (PK): report_id - integer
  • Attributes:
    • report_type - enum (CRIMINAL, MEDICAL, ACADEMIC, EMPLOYMENT)
    • created_at - date
    • summary - text
    • person_id - (Foreign Key to Person Entity) - integer
  1. CrimeType
  • Primary Key (PK): crime_type_id - integer
  • Attributes:
    • label - text
    • severity_level - enum (LOW, MEDIUM, HIGH)
  1. Diagnosis
  • Primary Key (PK): diagnosis_id - integer
  • Attributes:
    • description - text
    • therapy - text
    • severity - enum (LOW, MEDIUM, HIGH)
    • is_chronic - boolean
  1. Doctor
  • Primary Key (PK): doctor_id - integer
  • Attributes:
    • surname - text
    • years_of_experience - integer
    • specialization - text
    • name - text
    • is_active - boolean
  1. Role
  • Primary Key (PK): role_id - integer
  • Attributes:
    • role_name - integer
    • description - text
  1. FilterSession
  • Primary Key (PK): session_id - integer
  • Attributes:
    • filter_description - text
    • searched_at - timestamp
    • user_id - (Foreign Key to ReportiumUser Entity)
  1. ReportiumUser
  • Primary Key (PK): user_id - integer
  • Attributes:
    • password_hash - text
    • is_active - boolean
    • email - text (email)
    • surname - text
    • name - text
    • created_at - timestamp
  1. UserProfile
  • Primary Key (PK): profile_id - integer
  • Attributes:
    • profile_created_at - timestamp
    • user_id - (Foreign Key to ReportiumUser Entity)
    • username - text
    • role_id - (Foreign Key to Role Entity)

Слаби ентитети

  1. Punishment
  • Primary Key (PK): punishment_id - integer
  • Attributes:
    • value_unit - enum (EUROS, YEARS)
    • punishment_type - enum (FINE, PRISON)
    • fine_to_pay - double
    • release_date - date
    • report_id - (Foreign Key to Report Entity)
  1. UserProfileLog
  • Primary Key (PK): log_id - integer
  • Attributes:
    • change_description - text
    • profile_id - (Foreign Key to UserProfile Entity)
    • changed_at - timestamp
  1. ExportLog
  • Primary Key (PK): export_id - integer
  • Additional Attributes:
    • export_date - timestamp
    • export_format - enum (CSV, PDF)
    • filter_summary - text
    • file_name - text
    • session_id - (Foreign Key to FilterSession Entity)

Подтипови на Report ентитетот

  1. AcademicReport
  • Primary Key (PK): report_id (inherited)
  • Additional Attributes:
    • institution_id - (Foreign Key to Institution Entity)
    • academic_field - text
    • description_of_report - text
  1. CriminalReport
  • Primary Key (PK): report_id (inherited)
  • Additional Attributes:
    • location - text
    • resolved - boolean
    • crime_type_id - (Foreign Key to CrimeType Entity)
    • descriptive_punishment - text
  1. MedicalReport
  • Primary Key (PK): report_id (inherited)
  • Additional Attributes:
    • doctor_id - (Foreign Key to Doctor Entity)
    • next_control_date - date
  1. EmploymentReport
  • Primary Key (PK): report_id (inherited)
  • Additional Attributes:
    • position_description - text
    • start_date - date
    • end_date - date
    • income_per_month - double

Релаци

  • UserProfile - UserProfileLog: 1 - N релација каде еден кориснички профил може да има повеќе логови, а еден лог може да припаѓа само на еден и единствен кориснички профил. Оваа релација е со целосно учество од обете страни
  • UserProfile - ReportiumUser: 1 - 1 релација каде еден кориснички профил може да има еден кориснички профил, и обратно. Оваа релација е со целосно учество од обете страни
  • UserProfile - Role: N - 1 релација каде еден кориснички профил може да има една улога, а улогата може да е поседувана од повеќе кориснички профили. Оваа релација е со целосно учество од страната на UserProfile
  • UserProfile - FilterSession: 1 - N релација каде еден кориснички профил може да има повеќе филтрирачки сесии, а една сесија припаѓа на само еден корисник. Оваа релација е со целосно учество од страната на FilterSession
  • FilterSession - ExportLog: 1 - N релација каде една сесија има повеќе exports, а еден таков export е само на една сесија. Оваа релација е со целосно учество од обете страни
  • FilterSession - Person: 1 - N релација каде една филтер сесија има повеќе Person објеќти вклучено, додека пак еден Person може да учествува во повеќе такви сесии
  • Person - Report: 1 - N релација каде еден person има повеќе извештаи, додека пак еден извештај му припаѓа на само еден person. Оваа релација е со целосно учество од страна на Report
  • Релацијата на Report со AcademicReport/MedicalReport/CriminalReport/EmploymentReport - еден Report објект е како абстрактната класа која ја наследува еден од четирите напоменати типови. Тоа значи дека тука има појава на disjoint, односно специјализирање во САМО ЕДЕН ОД МОЖНОСТИТЕ
  • AcademicReport - Institution: N - 1 релација каде еден академски извештај може да има една институција, а истата може да биде во повеќе академски извештаи. Оваа релација е со целосно учество на страна на AcademicReport
  • CriminalReport - CrimeType: 1 - 1 релација каде еден криминален извештај има свој 1 CrimeType, а тој може да биде поседун од повеќе CriminalReports. Оваа релација е со целосно учество на страна на CriminalReport
  • CriminalReport - Punishment: 1 - 1 релација каде еден криминален извештај има својa 1 казна, која припаѓа само на тој криминален извештај. Оваа релација е со целосно учество од обете страни
  • MedicalReport - Diagnosis: N - 0..M оваа many-to-many релација посочува дека еден медицински извештај може да има повеќе дијагнози, а и една дијагноза да припаѓа на разл. медицински извештаи
  • MedicalReport - Doctor: 1 - N релација каде еден медицински извештај има 1 доктор, а докторот може да биде назначен на повеќе различни медицински извештаи. Полно учество е на страна на MedicalReport
Last modified 3 hours ago Last modified on 09/24/25 23:48:18

Attachments (1)

Download all attachments as: .zip

Note: See TracWiki for help on using the wiki.