Changes between Version 3 and Version 4 of RelationalModel


Ignore:
Timestamp:
04/20/26 01:13:46 (2 weeks ago)
Author:
231130
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • RelationalModel

    v3 v4  
    11= Relational Model =
    22
    3 == 1. Основни табели ==
     3== 1. Опис на моделот ==
    44
    5 === Objects ===
    6 * '''PK''': object_id
    7 * '''Attributes''': inventory_number (UNIQUE), title, creation_year, acquisition_date, description
    8 * '''FK''': ''site_id'' → Sites, ''current_status_id'' → Status_Types, ''found_by_user_id'' → Users
    9 * '''Description''': Централна табела која ги претставува културните објекти (артефакти) и ги поврзува со сите останати ентитети во системот.
     5Релациониот модел на Cultural Heritage Preservation System е изграден околу централната табела '''Objects''', која ги претставува културните артефакти. Секој објект задолжително припаѓа на еден археолошки локалитет ('''Sites'''), има дефиниран статус преку генерализираната табела '''Status_Types''' и може да биде поврзан со корисникот кој го пронашол. Sites дополнително се поврзани со тип на локалитет, регион, заштитен статус и општина, обезбедувајќи целосен географски и административен контекст.
    106
    11 === Sites ===
    12 * '''PK''': site_id
    13 * '''Attributes''': site_name, latitude, longitude, altitude, discovery_year, is_active
    14 * '''FK''': ''site_type_id'' → Site_Types, ''region_id'' → Regions, ''protection_status_id'' → Protection_Status, ''municipality_id'' → Municipalities
    15 * '''Description''': Содржи податоци за археолошки локалитети со географски и административни информации.
     7Корисниците на системот ('''Users''') се организирани преку табелата '''Roles''', а нивните дополнителни информации, како специјализација и институциска припадност, се чуваат во одделна табела '''User_Details'''. Ова овозможува подобра нормализација и поефикасно пребарување.
    168
    17 === Users ===
    18 * '''PK''': user_id
    19 * '''Attributes''': username (UNIQUE), full_name, email (UNIQUE), password_hash
    20 * '''FK''': ''role_id'' → Roles
    21 * '''Description''': Регистрирани корисници на системот со дефинирани улоги.
     9== 2. Конзервација и следење на состојба ==
    2210
    23 === Institutions ===
    24 * '''PK''': institution_id
    25 * '''Attributes''': name (UNIQUE), address, city
    26 * '''Description''': Институции (музеи, лаборатории, универзитети) кои управуваат со објектите.
     11Секој артефакт може да поминува низ повеќе конзервациски третмани евидентирани во табелата '''Treatments''', при што секој третман се состои од прецизно документирани чекори преку '''Treatment_Step_Log'''. На тој начин се обезбедува целосна историја на секоја реставраторска интервенција. Паралелно, табелата '''Condition_Assessment''' овозможува периодично оценување на физичката состојба на предметите низ времето, при што не е дозволено внесување на две проценки за ист предмет на ист датум.
    2712
    28 === Publications ===
    29 * '''PK''': publication_id
    30 * '''Attributes''': title, request_date, publisher_location
    31 * '''FK''': ''status_id'' → Status_Types, ''main_author_id'' → Authors
    32 * '''Description''': Научни публикации поврзани со артефактите.
     13Конзервациските активности се организираат и преку '''Conservation_Projects''', кои поврзуваат институција со конкретен предмет. Пристапот на надворешни истражувачи до предметите и проектите се контролира преку '''Researcher_Access''', каде точно се дефинира кој корисник, од која институција и во рамки на кој проект има одобрен пристап.
    3314
    34 === Treatments ===
    35 * '''PK''': treatment_id
    36 * '''Attributes''': treatment_date, description
    37 * '''FK''': ''object_id'' → Objects
    38 * '''Description''': Евиденција на конзервациски третмани применети врз објектите.
     15== 3. Фрагменти ==
    3916
    40 === Fragments ===
    41 * '''PK''': fragment_id
    42 * '''Attributes''': description, discovery_date
    43 * '''FK''': ''site_id'' → Sites, ''object_id'' → Objects, ''found_by_user_id'' → Users, ''status_id'' → Status_Types, ''parent_fragment_id'' → Fragments
    44 * '''Description''': Моделира делови од артефакти со поддршка за хиерархиска (self-referencing) структура.
     17Табелата '''Fragments''' овозможува моделирање на делови од артефакти со поддршка за self-referencing структура, односно еден фрагмент може да биде дел од друг фрагмент. Со цел зачувување на конзистентноста на податоците, е имплементирано ограничување кое спречува фрагментот да си биде сам родител, а исто така фрагментот не може истовремено да припаѓа на објект и на друг фрагмент.
    4518
    46 === Conservation_Projects ===
    47 * '''PK''': project_id
    48 * '''Attributes''': project_name, start_date, end_date, budget
    49 * '''FK''': ''institution_id'' → Institutions, ''object_id'' → Objects
    50 * '''Description''': Проекти поврзани со конзервација и реставрација.
     19== 4. Изложби и публикации ==
    5120
    52 === Exhibitions ===
    53 * '''PK''': exhibition_id
    54 * '''Attributes''': name, start_date, end_date
    55 * '''FK''': ''location_institution_id'' → Institutions
    56 * '''Description''': Изложби во кои се прикажуваат објектите.
     21Објектите можат да учествуваат на повеќе изложби и да бидат споменати во повеќе научни публикации. Овие M:N релации се реализирани преку junction табелите '''Object_Exhibition''' и '''Object_Publication'''. За изложбите, дополнителни информации за прикажување на секој предмет (наслов, опис, јазик) се чуваат во '''Exhibition_Object_Details'''. Публикациите можат да имаат повеќе автори преку '''Publication_Authors''', при што се прави разлика помеѓу главен автор и останатите соавтори.
    5722
    58 === Condition_Assessment ===
    59 * '''PK''': assessment_id
    60 * '''Attributes''': assessment_date, notes
    61 * '''FK''': ''object_id'' → Objects, ''status_id'' → Status_Types
    62 * '''Description''': Проценка на физичката состојба на објектите низ време.
     23== 5. Дополнителни ентитети ==
    6324
    64 == 2. Помошни (Junction) табели ==
     25Материјалите од кои се изработени предметите се евидентираат преку '''Materials_Objects''', а материјалите користени при третманите преку '''Treatment_Materials'''. Историјата на движење на предметите помеѓу институции се следи преку '''Object_Location_History''', додека фотографската документација се чува во '''Object_Images'''. Класификацијата на предметите според култура, категорија и стил е реализирана преку '''Object_Classification'''.
    6526
    66 Овие табели се користат за решавање на M:N релации:
     27== 6. Клучни дизајн одлуки ==
    6728
    68  * '''Object_Publication''' (''object_id, publication_id'') — Objects <-> Publications
    69  * '''Object_Exhibition''' (''object_id, exhibition_id'') — Objects <-> Exhibitions
    70  * '''Publication_Authors''' (''publication_id, author_id'') — Publications <-> Authors
    71  * '''Materials_Objects''' (''object_id, material_id'') — Objects <-> Materials
    72  * '''Treatment_Materials''' (''treatment_id, material_id'') — Treatments <-> Materials
     29Табелата '''Status_Types''' е дизајнирана како генерализирана табела која преку полето "type" опслужува повеќе различни типови статуси во системот, наместо да се креираат посебни табели за секој тип. Сите M:N релации се реализирани преку посебни junction табели со композитен примарен клуч. Географските координати на локалитетите се валидираат преку CHECK constraint кој го ограничува опсегот на вредности на координатите за територијата на Македонија.
    7330
    74 == 3. Ограничувања (Constraints) ==
     31== 7. Дијаграм ==
    7532
    76 За обезбедување на интегритет на податоците се применети следните ограничувања:
    77 
    78  * '''UNIQUE''': inventory_number (Objects), username, email (Users), site_name + region_id (Sites).
    79  * '''CHECK''': Географски координати во дозволен опсег за Македонија.
    80  * '''CHECK''': Валидност на датуми (end_date >= start_date).
    81  * '''CHECK''': Година на создавање (creation_year) не е во иднината.
    82  * '''CHECK''': fragment_id <> parent_fragment_id (спречување на директен цикличен однoс).
    83  * '''FOREIGN KEY''': Обезбедуваат референтен интегритет помеѓу сите поврзани табели.
    84 
    85 == 4. Дизајн одлуки ==
    86 
    87  * '''M:N релациите''' се реализирани преку посебни junction табели со composite primary keys за подобра нормализација.
    88  * '''Self-referencing''' е имплементиран кај Fragments за моделирање на делови од објекти и нивна хиерархиска поврзаност.
    89  * '''Status_Types''' е генерализирана табела која овозможува унифицирано управување со различни типови статуси преку полето "type".
    90  * '''User_Details''' е издвоена табела со цел дополнителна нормализација и оптимизација на пребарувањето.
    91  * '''Object_Location_History''' овозможува целосно следење на движењето на објектите низ времето.
    92  * '''Treatment_Step_Log''' овозможува прецизно и детаљно евидентирање на секоја фаза од конзервациските процеси.
    93 
    94 == 5. Дијаграм ==
    95 
    96 [[Image(diagram.png)]]
     33[[Image(diagram.jpg)]]