wiki:Popravki

Резиме на поправки и напредок

DB_P1: Концептуален модел (ERD)

Статус: Прелиминарно во ред, со мала формална забелешка.

Забелешка од евалуацијата:

„Прелиминарно е во ред, мала формална забелешка — концептот на надворешен клуч не постои во ЕРД, да се отстранат."

Што е поправено:

  • Отстранети се сите ознаки за надворешен клуч (FK) од ER дијаграмот.
  • Во концептуалниот модел се прикажуваат само ентитети, атрибути и релации (врски) — без надворешни клучеви, бидејќи тие припаѓаат на логичкиот/физичкиот модел, не на концептуалниот.
  • Релациите меѓу ентитетите се претставени преку врски со кардиналност (1:1, 1:N, M:N), што е правилна нотација за ЕРД.

Резултат: Концептуалниот модел е формално исправен и подготвен за одобрување.

DB_P2: Логички и физички дизајн, креирање на база (DDL)

Статус: Прелиминарно во ред, потребно е поставување на базата на факултетскиот сервер.

Забелешка од евалуацијата:

„Прелиминарно во ред, за одобрување да се постави базата на факултетскиот сервер."

Што е направено:

  • Логичкиот модел е изведен од концептуалниот и е целосно нормализиран (во BCNF).
  • Физичкиот дизајн е дефиниран со сите табели, колони, типови на податоци, примарни и надворешни клучеви.
  • DDL скриптата е креирана и успешно извршена локално.
  • Базата е поставена на факултетскиот сервер (develop.finki.ukim.mk) и е достапна за натамошна работа.
  • Сите 20 табели се креирани и populate-ирани со тест податоци.

Резултат: Базата е поставена на факултетскиот сервер, што е предуслов за одобрување на фазата P2.

DB_P5: Нормализација

Статус: Поправено според барањата од евалуацијата.

Забелешка од евалуацијата:

„Недостасува формална проверка дека примарниот клуч е навистина кандидат-клуч и дека нема друг кандидат-клуч, пред да биде прогласен за примарен клуч."

Што е поправено:

  • Додаден е формален доказ дека избраниот примарен клуч е кандидат-клуч (уникатност + минималност).
  • Додаден е формален доказ дека не постои друг кандидат-клуч.
  • Додаден е алгоритмот за attribute closure за пресметка на затворање на атрибути.
  • Додаден е canonical cover на множеството функционални зависности.
  • За секоја табела (R1–R20) се експлицитно наведени: ФЗ што важат, кандидат-клуч, примарен клуч, нормална форма, lossless join тест и preservation of FDs.
  • Додадена е проверка во која нормална форма е денормализираната релација (1NF, но не 2NF).
  • Додадена е глобална проверка за preservation of FDs и lossless join.

Резултат: Нормализацијата е формално комплетна и ги задоволува сите барања од InstructionsP5.

DB_P6: Комплексни извештаи од базата

Статус: Поправено според барањата од евалуацијата.

Забелешка од евалуацијата:

„Во ред е, но се очекуваат значително покомплексни прашалници, со повеќе нивоа на вгнездување потпрашалници."

Што е поправено:

  • Постоечките 8 извештаи (AdvancedReport1–8) се задржани како основни аналитички извештаи.
  • Додадени се 6 нови напредни извештаи (AdvancedReport9–14) со најмалку 3 нивоа на вгнездување:
    • AdvancedReport9 — Прогноза за потрошувачка на состојки (3 нивоа, CTE, IN (SELECT ... HAVING ... (SELECT AVG ...)))
    • AdvancedReport10 — Ефикасни келнери + топ производ (4 нивоа, 2 корелациони потпрашалници, потпрашалник во потпрашалник)
    • AdvancedReport11 — Анализа на кошничка (3 нивоа, self-join, IN (SELECT ... HAVING ...))
    • AdvancedReport12 — Year-over-year споредба (3 нивоа, CTE, RANK, LEFT JOIN со поместување)
    • AdvancedReport13 — Аномалии во нарачки (3 нивоа, STDDEV, z-score, корелационен потпрашалник)
    • AdvancedReport14 — Прогноза на приходи (3 нивоа, REGR_SLOPE, REGR_INTERCEPT, generate_series, LEFT JOIN)
  • Сите функции се имплементирани како SQL функции (LANGUAGE sql) за да се избегнат проблеми со PL/pgSQL variable shadowing.
  • Сите функции се тестирани во DBeaver и работат со реалните податоци од базата.
  • За секој нов извештај е напишана и релациона алгебра.

Резултат: Напредните извештаи целосно го адресираат барањето за покомплексни прашања со повеќе нивоа на вгнездување.

DB_P7: Напреден развој на датабаза (SQL DDL)

Статус: Поправено според барањата од евалуацијата.

Забелешка од евалуацијата:

„Trigger - ок Stored Procedures - ок Views - ок Domains - /"

Што е поправено:

  • Тригерите (Triggers) се веќе имплементирани и оценети како „ок".
  • Складираните процедури и функции (Stored Procedures) се веќе имплементирани и оценети како „ок".
  • Погледите (Views) се веќе имплементирани и оценети како „ок".
  • Додадени се 8 кориснички дефинирани домени (Custom Domains):
    • positive_money — парични вредности со деловни граници (0 до 1.000.000)
    • vat_percentage — ДДВ само со законски дозволени стапки (0, 5, 10, 18)
    • table_status — статус на маса (СЛОБОДНА, ЗАФАТЕНА, РЕЗЕРВИРАНА, НЕДОСТАПНА)
    • order_status — статус на нарачка (НОВА, ПОРАЧАНО, ПОДГОТВЕНО, СЕРВИРАНО, ПЛАТЕНА, ОТКАЖАНА)
    • inventory_operation — тип на инвентарна операција (ПОЧЕТНА, ПРИЕМ, ПРОДАЖБА, ОТПИС, КОРЕКЦИЈА)
    • valid_email — комплексна email валидација (regex + должина + без последователни точки)
    • mkd_phone — македонски мобилен телефонски број во 3 формати
    • password_hash — bcrypt password hash валидација
  • Домените се применети на постоечките колони со ALTER TABLE.
  • Сите домени се тестирани со валидни и невалидни вредности.

Резултат: Сите 4 барања од фазата P7 (Triggers, Stored Procedures, Views, Domains) се целосно имплементирани.

Заклучок

Сите забелешки од евалуациите за фазите P1, P2, P5, P6 и P7 се адресирани:

Фаза Забелешка Статус
P1 Надворешен клуч не постои во ЕРД Поправено — отстранети FK ознаки
P2 Постави база на факултетски сервер Направено — базата е поставена
P5 Формална проверка на кандидат-клуч Поправено — додаден формален доказ
P6 Покомплексни прашалници со вгнездување Поправено — додадени 6 нови извештаи
P7 Domains недостасуваа Поправено — додадени 8 кориснички дефинирани домени
Last modified 5 days ago Last modified on 09/25/26 16:36:06
Note: See TracWiki for help on using the wiki.