Changes between Version 1 and Version 2 of RelationalModel


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

--

Legend:

Unmodified
Added
Removed
Modified
  • RelationalModel

    v1 v2  
    11= Relational Model =
    22
    3 == 1. Tables ==
     3== 1. Основни табели ==
    44
    55=== Objects ===
    66* '''PK''': object_id
    77* '''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
     8* '''FK''': ''site_id'' → Sites, ''current_status_id'' → Status_Types, ''found_by_user_id'' → Users
     9* '''Description''': Централна табела која ги претставува културните објекти (артефакти) и ги поврзува со сите останати ентитети во системот.
    910
    1011=== Sites ===
    1112* '''PK''': site_id
    1213* '''Attributes''': site_name, latitude, longitude, altitude, discovery_year, is_active
    13 * '''FK''': site_type_id → Site_Types, region_id → Regions, protection_status_id → Protection_Status, municipality_id → Municipalities
     14* '''FK''': ''site_type_id'' → Site_Types, ''region_id'' → Regions, ''protection_status_id'' → Protection_Status, ''municipality_id'' → Municipalities
     15* '''Description''': Содржи податоци за археолошки локалитети со географски и административни информации.
    1416
    1517=== Users ===
    1618* '''PK''': user_id
    1719* '''Attributes''': username (UNIQUE), full_name, email (UNIQUE), password_hash
    18 * '''FK''': role_id → Roles
     20* '''FK''': ''role_id'' → Roles
     21* '''Description''': Регистрирани корисници на системот со дефинирани улоги.
    1922
    2023=== Institutions ===
    2124* '''PK''': institution_id
    2225* '''Attributes''': name (UNIQUE), address, city
     26* '''Description''': Институции (музеи, лаборатории, универзитети) кои управуваат со објектите.
    2327
    2428=== Publications ===
    2529* '''PK''': publication_id
    2630* '''Attributes''': title, request_date, publisher_location
    27 * '''FK''': status_id → Status_Types, main_author_id → Authors
     31* '''FK''': ''status_id'' → Status_Types, ''main_author_id'' → Authors
     32* '''Description''': Научни публикации поврзани со артефактите.
    2833
    2934=== Treatments ===
    3035* '''PK''': treatment_id
    3136* '''Attributes''': treatment_date, description
    32 * '''FK''': object_id → Objects
     37* '''FK''': ''object_id'' → Objects
     38* '''Description''': Евиденција на конзервациски третмани применети врз објектите.
    3339
    3440=== Fragments ===
    3541* '''PK''': fragment_id
    3642* '''Attributes''': description, discovery_date
    37 * '''FK''': site_id → Sites, object_id → Objects, found_by_user_id → Users, status_id → Status_Types, parent_fragment_id → Fragments (self-reference)
     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) структура.
    3845
    3946=== Conservation_Projects ===
    4047* '''PK''': project_id
    4148* '''Attributes''': project_name, start_date, end_date, budget
    42 * '''FK''': institution_id → Institutions, object_id → Objects
     49* '''FK''': ''institution_id'' → Institutions, ''object_id'' → Objects
     50* '''Description''': Проекти поврзани со конзервација и реставрација.
    4351
    4452=== Exhibitions ===
    4553* '''PK''': exhibition_id
    4654* '''Attributes''': name, start_date, end_date
    47 * '''FK''': location_institution_id → Institutions
     55* '''FK''': ''location_institution_id'' → Institutions
     56* '''Description''': Изложби во кои се прикажуваат објектите.
    4857
    4958=== Condition_Assessment ===
    5059* '''PK''': assessment_id
    5160* '''Attributes''': assessment_date, notes
    52 * '''FK''': object_id → Objects, status_id → Status_Types
     61* '''FK''': ''object_id'' → Objects, ''status_id'' → Status_Types
     62* '''Description''': Проценка на физичката состојба на објектите низ време.
    5363
    54 == 2. Junction Tables (M:N Relationships) ==
     64== 2. Помошни (Junction) табели ==
    5565
    56 * '''Object_Publication''' (object_id, publication_id) — Objects ↔ Publications
    57 * '''Object_Exhibition''' (object_id, exhibition_id) — Objects ↔ Exhibitions
    58 * '''Publication_Authors''' (publication_id, author_id) — Publications ↔ Authors
    59 * '''Materials_Objects''' (object_id, material_id) — Objects ↔ Materials
    60 * '''Treatment_Materials''' (treatment_id, material_id) — Treatments ↔ Materials
     66Овие табели се користат за решавање на M:N релации:
    6167
    62 == 3. Constraints ==
     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
    6373
    64 * UNIQUE: inventory_number, username, email, site_name+region_id
    65 * CHECK: координати во опсег за Македонија
    66 * CHECK: датуми (end_date >= start_date)
    67 * CHECK: creation_year не е во иднина
    68 * CHECK: fragment не може да си биде сам parent
     74== 3. Ограничувања (Constraints) ==
    6975
    70 == 4. Design Decisions ==
     76За обезбедување на интегритет на податоците се применети следните ограничувања:
    7177
    72 * M:N релации се решени со помошни табели: Object_Publication, Object_Exhibition, Publication_Authors, Materials_Objects, Treatment_Materials
    73 * Self-reference: Fragments (parent_fragment_id → fragment_id)
    74 * Status_Types е генерализирана табела со поле "type" за различни видови статуси
    75 * Одделна табела User_Details за дополнителни информации за корисниците
     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''': Обезбедуваат референтен интегритет помеѓу сите поврзани табели.
    7684
    77 == 5. Diagram ==
     85== 4. Дизајн одлуки ==
    7886
    79 [[Image(diagram.png)]]
     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.jpg)]]