Changes between Initial Version and Version 1 of RelationalDesign


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

--

Legend:

Unmodified
Added
Removed
Modified
  • RelationalDesign

    v1 v1  
     1= Релационен дизајн =
     2
     3== Релациона шема ==
     4
     5Релациониот модел е добиен од ЕР моделот v01 со '''парцијална трансформација'''. Сите релации во ЕР моделот се од тип 1:N, па секоја од нив е претставена со надворешен клуч во табелата од страната N. Нема релации од тип N:M, па не се потребни дополнителни табели за релациите. Assignments е посебно множество ентитети во ЕР моделот и затоа е претставено со своја табела.
     6
     7'''Нотација:'''
     8 * '''__примарен клуч__''' - задебелен и подвлечен
     9 * '''задолжителен атрибут''' (NOT NULL) - задебелен
     10 * надворешен клуч* - означен со * и табелата кон која покажува
     11 * незадолжителен атрибут - без ознака
     12
     13'''admins''' ('''__admin_id__''', '''full_name''', '''email''', '''password''')
     14
     15'''workers''' ('''__worker_id__''', '''full_name''', '''email''', '''password''')
     16
     17'''citizens''' ('''__citizen_id__''', '''full_name''', '''email''', phone, '''password''')
     18
     19'''categories''' ('''__category_id__''', '''name''', '''admin_id*''' (admins))
     20
     21'''reports''' ('''__report_id__''', '''description''', location_text, latitude, longitude, '''status''', '''priority''', '''created_at''', '''citizen_id*''' (citizens), '''category_id*''' (categories))
     22
     23'''photos''' ('''__photo_id__''', '''image_url''', '''report_id*''' (reports))
     24
     25'''status_logs''' ('''__log_id__''', '''status''', '''changed_at''', note, '''report_id*''' (reports), worker_id* (workers))
     26
     27'''comments''' ('''__comment_id__''', '''content''', '''created_at''', '''report_id*''' (reports), '''worker_id*''' (workers))
     28
     29'''assignments''' ('''__assignment_id__''', '''assigned_at''', note, '''admin_id*''' (admins), '''report_id*''' (reports), '''worker_id*''' (workers))
     30
     31'''Дополнителни ограничувања:'''
     32 * email е единствен во admins, workers и citizens; name е единствен во categories.
     33 * Комбинацијата (report_id, worker_id) во assignments е единствена, бидејќи ист работник не може двапати да биде доделен на иста пријава.
     34 * status може да биде: submitted, received, in_progress, resolved, rejected.
     35 * priority може да биде: low, medium, high, urgent.
     36 * latitude е помеѓу -90 и 90, longitude помеѓу -180 и 180, и двете се внесуваат заедно.
     37 * Секоја пријава мора да има барем адреса (location_text) или координати.
     38 * worker_id во status_logs е незадолжителен, бидејќи почетниот статус „submitted“ го креира системот.
     39
     40== DDL скрипта за креирање на шемата ==
     41
     42[attachment:schema_creation.sql]
     43
     44Скриптата ја брише постоечката шема project (доколку постои) и ги креира одново сите табели со сите ограничувања, па може да се извршува и на празна база и на база каде шемата веќе постои.
     45
     46== DML скрипта за полнење на табелите ==
     47
     48[attachment:data_load.sql]
     49
     50Скриптата ги брише постоечките податоци од сите табели и ги внесува одново. Податоците ги опфаќаат сите ситуации во системот: решени пријави, пријави во тек, одбиени пријави и нови пријави кои сè уште не се доделени на работник.
     51
     52== Релационен дијаграм ==
     53
     54[[Image(relational_schema.jpg, width=100%)]]
     55
     56== Користење на вештачка интелигенција ==
     57
     58[wiki:RelationalDesignAIUsage Користење на вештачка интелигенција за релациониот дизајн]