= Логички и физички дизајн = == Релациска шема (со парцијална трансформација) == === Ознаки === * '''примарни клучеви''' - болдирани и подвлечени * '''not null атрибути''' - болдирани * '''надворешни клучеви''' - * до името на надворешниот клуч и во заграда табелата кон која референцира * останати атрибути - без ознака === Табели === * '''ROLE''' ('''role_id''', '''role_name''', '''description''') * '''APP_USER''' ('''user_id''', '''role_id'''* ('''ROLE'''), '''username''', '''password_hash''', '''first_name''', '''last_name''', '''email''', '''active''') * '''SESSION''' ('''token''', '''user_id'''* ('''APP_USER'''), '''created_at''', '''expires_at''') * '''AUDIT_LOG''' ('''log_id''', '''user_id'''* ('''APP_USER'''), '''action''', '''entity_name''', '''created_at''') * '''SHIFT''' ('''shift_id''', '''user_id'''* ('''APP_USER'''), '''start_time''', '''end_time''') * '''SHIFT_CLOSE''' ('''shift_id''', '''closed_at''', '''closed_by'''* ('''APP_USER'''), '''total''', '''order_count''') * '''CATEGORY''' ('''category_id''', '''name''', '''description''', '''active''') * '''PRODUCT''' ('''product_id''', '''category_id'''* ('''CATEGORY'''), '''name''', '''description''', '''price''', '''active''', '''min_stock''') * '''RECIPE''' ('''recipe_id''', '''product_id'''* ('''PRODUCT''')) * '''RECIPE_ITEM''' ('''recipe_id''', '''ingredient_id''', '''quantity_needed''') * '''INGREDIENT''' ('''ingredient_id''', '''name''', '''unit''', '''min_stock''', '''active''') * '''INGREDIENT_INVENTORY''' ('''id''', '''ingredient_id'''* ('''INGREDIENT'''), '''quantity_change''', '''operation_type''', '''created_at''') * '''INVENTORY''' ('''inventory_id''', '''product_id'''* ('''PRODUCT'''), '''quantity_change''', '''operation_type''', '''created_at''') * '''RESTAURANT_TABLE''' ('''table_id''', '''table_number''', '''capacity''', '''status''') * '''ORDERS''' ('''order_id''', '''user_id'''* ('''APP_USER'''), '''table_id'''* ('''RESTAURANT_TABLE'''), '''created_at''', '''status''') * '''ORDER_ITEM''' ('''order_id''', '''item_number''', '''product_id'''* ('''PRODUCT'''), '''quantity''', '''unit_price''', '''status''') * '''PAYMENT''' ('''payment_id''', '''order_id'''* ('''ORDERS'''), '''amount''', '''method''', '''payment_date''') * '''INVOICE''' ('''invoice_id''', '''payment_id'''* ('''PAYMENT'''), '''invoice_number''', '''issued_at''') * '''APP_SETTINGS''' ('''id''', '''restaurant_name''', '''vat_rate''', '''currency''', '''printer_config''') * '''SETTINGS''' ('''id''', '''restaurant_name''', '''vat_percent''', '''currency''', '''printer_ip''', '''printer_port''') == DDL скрипта за креирање и бришење на табелите == '''DDL скрипта''' Прикачена е датотеката schema_creation.sql == DML скрипта за полнење на табелите со податоци == '''DML скрипта''' Прикачена е датотеката data_load.sql == Релациски дијаграм изваден од DBeaver == Прикачена е датотеката relational_schema.jpg