Changes between Version 1 and Version 2 of ERModel


Ignore:
Timestamp:
09/17/26 01:30:29 (2 weeks ago)
Author:
201178
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • ERModel

    v1 v2  
    1010
    1111
    12 1. '''User''' - ентитет за корисникот кој се логира во системот
     121.''' Role '''- ентитет за улогата на корисникот во системот
     13  * role_id - SERIAL (примарен клуч)
     14  * role_name - VARCHAR(50) (атрибут)
     15  * description - TEXT (атрибут)
     16
     172. ''' App User ''' - ентитет за корисникот кој се логира во системот
    1318  * user_id - SERIAL (примарен клуч)
     19  * role_id - INT (надворешен клуч)
    1420  * username - VARCHAR(50) (атрибут)
    15   * password_hash - VARCHAR(255) (атрибут)
     21  * password_hash - TEXT (атрибут)
    1622  * first_name - VARCHAR(50) (атрибут)
    1723  * last_name - VARCHAR(50) (атрибут)
    … …  
    1925  * active - BOOLEAN (атрибут)
    2026
    21 2. '''Administrator''' - ентитет кој го претставува администраторот како специјализиран тип на корисник со целосни права
    22   * Ги наследува сите атрибути од User
     273.''' Session '''- ентитет за активна сесија на корисникот (токен)
     28  * token - UUID (примарен клуч)
     29  * user_id - INT (надворешен клуч)
     30  * created_at - TIMESTAMP (атрибут)
     31  * expires_at - TIMESTAMP (атрибут)
    2332
    24 3. '''Waiter''' - ентитет кој го претставува келнерот како специјализиран тип на корисник
    25   * Ги наследува сите атрибути од User
     334.''' Audit Log '''- ентитет за дневник на активности
     34  * log_id - SERIAL (примарен клуч)
     35  * user_id - INT (надворешен клуч)
     36  * action - TEXT (атрибут)
     37  * entity_name - VARCHAR(50) (атрибут)
     38  * created_at - TIMESTAMP (атрибут)
    2639
    27 4. '''Role''' - ентитет за улогата која ја има корисникот во системот
    28   * role_id - SERIAL (примарен клуч)
    29   * role_name - VARCHAR(50) (атрибут)
    30   * description - VARCHAR(255) (атрибут)
    31 
    32 5. '''Category''' - ентитет за категорија која ги групира производите од менито
     405.''' Category '''- ентитет за категорија на производи
    3341  * category_id - SERIAL (примарен клуч)
    3442  * name - VARCHAR(100) (атрибут)
    35   * description - VARCHAR(255) (атрибут)
     43  * description - TEXT (атрибут)
    3644  * active - BOOLEAN (атрибут)
    3745
    38 6. '''Product''' - ентитет за производ кој претставува артикал од менито
     466.''' Product '''- ентитет за производ од менито
    3947  * product_id - SERIAL (примарен клуч)
     48  * category_id - INT (надворешен клуч)
    4049  * name - VARCHAR(100) (атрибут)
    41   * description - VARCHAR(255) (атрибут)
    42   * price - DECIMAL(10, 2) (атрибут)
     50  * description - TEXT (атрибут)
     51  * price - NUMERIC (атрибут)
     52  * active - BOOLEAN (атрибут)
     53  * min_stock - INT (атрибут)
     54
     557.''' Ingredient '''- ентитет за состојка која се користи во рецептите
     56  * ingredient_id - SERIAL (примарен клуч)
     57  * name - VARCHAR(200) (атрибут)
     58  * unit - VARCHAR(20) (атрибут)
     59  * min_stock - NUMERIC (атрибут)
    4360  * active - BOOLEAN (атрибут)
    4461
    45 7. '''Restaurant Table''' - ентитет за маса во ресторанот
     628.''' Inventory '''- ентитет за движење на залихи на готови производи
     63  * inventory_id - SERIAL (примарен клуч)
     64  * product_id - INT (надворешен клуч)
     65  * quantity_change - INT (атрибут)
     66  * operation_type - VARCHAR(30) (атрибут)
     67  * created_at - TIMESTAMPTZ (атрибут)
     68
     699.''' Ingredient Inventory '''- ентитет за движење на залихи на состојки
     70  * id - SERIAL (примарен клуч)
     71  * ingredient_id - INT (надворешен клуч)
     72  * quantity_change - NUMERIC (атрибут)
     73  * operation_type - VARCHAR(40) (атрибут)
     74  * created_at - TIMESTAMP (атрибут)
     75
     7610.''' Recipe '''- ентитет за рецепт на производ
     77  * recipe_id - SERIAL (примарен клуч)
     78  * product_id - INT (надворешен клуч, UNIQUE)
     79
     8011.''' Recipe Item '''- слаб ентитет за поединечна состојка во рецепт
     81  * recipe_id - INT (примарен клуч, дел од композитен)
     82  * ingredient_id - INT (примарен клуч, дел од композитен, надворешен клуч)
     83  * quantity_needed - NUMERIC (атрибут)
     84
     8512.''' Restaurant Table '''- ентитет за маса во ресторанот
    4686  * table_id - SERIAL (примарен клуч)
    47   * table_number - INT (атрибут)
     87  * table_number - VARCHAR(20) (атрибут)
    4888  * capacity - INT (атрибут)
    4989  * status - VARCHAR(20) (атрибут)
    5090
    51 8. '''Order''' - ентитет за нарачка која ја прави келнерот
     9113.''' Orders '''- ентитет за нарачка
    5292  * order_id - SERIAL (примарен клуч)
    53   * created_at - TIMESTAMP (атрибут)
     93  * user_id - INT (надворешен клуч)
     94  * table_id - INT (надворешен клуч)
     95  * created_at - TIMESTAMPTZ (атрибут)
    5496  * status - VARCHAR(20) (атрибут)
    55   * total_amount - DECIMAL(10, 2) (атрибут)
    5697
    57 9. '''Order Item''' - слаб ентитет за поединечна ставка во нарачката, не може да постои без нарачката
    58   * item_number - INT (примарен клуч, дел од композитен клуч со order_id)
     9814.''' Order Item '''- слаб ентитет за ставка во нарачка
     99  * order_id - INT (примарен клуч, дел од композитен)
     100  * item_number - INT (примарен клуч, дел од композитен)
     101  * product_id - INT (надворешен клуч)
    59102  * quantity - INT (атрибут)
    60   * unit_price - DECIMAL(10, 2) (атрибут)
     103  * unit_price - NUMERIC (атрибут)
     104  * status - VARCHAR(20) (атрибут)
    61105
    62 10. '''Payment''' - ентитет за плаќање на нарачка
     10615.''' Payment '''- ентитет за плаќање
    63107  * payment_id - SERIAL (примарен клуч)
    64   * amount - DECIMAL(10, 2) (атрибут)
    65   * method - VARCHAR(30) (атрибут)
    66   * payment_date - TIMESTAMP (атрибут)
     108  * order_id - INT (надворешен клуч, UNIQUE)
     109  * amount - NUMERIC (атрибут)
     110  * method - VARCHAR(20) (атрибут)
     111  * payment_date - TIMESTAMPTZ (атрибут)
    67112
    68 11. '''Invoice''' - ентитет за фактура генерирана по плаќање
     11316.''' Invoice '''- ентитет за фактура
    69114  * invoice_id - SERIAL (примарен клуч)
     115  * payment_id - INT (надворешен клуч, UNIQUE)
    70116  * invoice_number - VARCHAR(50) (атрибут)
    71   * issued_at - TIMESTAMP (атрибут)
     117  * issued_at - TIMESTAMPTZ (атрибут)
    72118
    73 12. '''Shift''' - ентитет за работна смена на вработен
     11917.''' Shift '''- ентитет за работна смена
    74120  * shift_id - SERIAL (примарен клуч)
     121  * user_id - INT (надворешен клуч)
    75122  * start_time - TIMESTAMP (атрибут)
    76123  * end_time - TIMESTAMP (атрибут)
    77124
    78 13. '''Inventory''' - ентитет за движење на залихи за одреден производ
    79   * inventory_id - SERIAL (примарен клуч)
    80   * quantity_change - DECIMAL(10, 2) (атрибут)
    81   * operation_type - VARCHAR(30) (атрибут)
    82   * date - TIMESTAMP (атрибут)
     12518.''' Shift Close '''- ентитет за затворање на смена
     126  * shift_id - SERIAL (примарен клуч)
     127  * closed_at - TIMESTAMP (атрибут)
     128  * closed_by - INT (надворешен клуч)
     129  * total - NUMERIC (атрибут)
     130  * order_count - INT (атрибут)
    83131
    84 14. '''Audit Log''' - ентитет за дневник на активности во системот
    85   * log_id - SERIAL (примарен клуч)
    86   * action - VARCHAR(100) (атрибут)
    87   * timestamp - TIMESTAMP (атрибут)
    88   * entity_name - VARCHAR(50) (атрибут)
     13219.''' App Settings '''- ентитет за поставки на апликацијата
     133  * id - INT (примарен клуч)
     134  * restaurant_name - VARCHAR(100) (атрибут)
     135  * vat_rate - NUMERIC (атрибут)
     136  * currency - VARCHAR(10) (атрибут)
     137  * printer_config - VARCHAR(255) (атрибут)
    89138
     13920.''' Settings '''- ентитет за поставки на системот
     140  * id - INT (примарен клуч)
     141  * restaurant_name - VARCHAR(200) (атрибут)
     142  * vat_percent - NUMERIC (атрибут)
     143  * currency - VARCHAR(10) (атрибут)
     144  * printer_ip - VARCHAR(64) (атрибут)
     145  * printer_port - INT (атрибут)
    90146
    91147=== Релации ===
    92148
    93 
    94  * '''HAS_ROLE''' - 1:N еден корисник има една улога, една улога може да биде доделена на повеќе корисници
    95  * '''WORKS''' - 1:N еден корисник може да работи повеќе смени, една смена му припаѓа на еден корисник
    96  * '''CREATES''' - 1:N еден корисник може да креира повеќе нарачки, една нарачка е креирана од еден корисник
    97  * '''RECEIVES''' - 1:N една маса може да прими повеќе нарачки, една нарачка е поврзана со една маса
    98  * '''CONTAINS''' - 1:N една нарачка содржи повеќе ставки, ова е идентификувачка релација за слабиот ентитет
    99  * '''INCLUDED_IN''' - 1:N една ставка се однесува на еден производ, еден производ може да биде дел од многу ставки
    100  * '''CLASSIFIES''' - 1:N една категорија содржи повеќе производи, еден производ припаѓа на една категорија
    101  * '''HAS_STOCK_RECORD''' - 1:N еден производ може да има повеќе движења на залиха
    102  * '''HAS_PAYMENT''' - 1:1 една нарачка има едно плаќање, едно плаќање припаѓа на една нарачка
    103  * '''GENERATES''' - 1:1 едно плаќање генерира една фактура
    104  * '''PERFORMS''' - 1:N еден корисник може да изврши повеќе активности, една активност е извршена од еден корисник
     149 * ''' HAS_ROLE ''' - 1:N еден корисник има една улога, една улога може да биде доделена на повеќе корисници
     150 * ''' HAS_SESSION ''' - 1:N еден корисник може да има повеќе сесии
     151 * ''' PERFORMS ''' - 1:N еден корисник може да изврши повеќе активности во дневникот
     152 * ''' WORKS ''' - 1:N еден корисник може да работи повеќе смени
     153 * ''' CLOSES ''' - 1:N еден корисник може да затвори повеќе смени
     154 * ''' HAS_CATEGORY ''' - 1:N една категорија содржи повеќе производи
     155 * ''' HAS_INVENTORY ''' - 1:N еден производ може да има повеќе движења на залиха
     156 * ''' HAS_INGREDIENT_INVENTORY ''' - 1:N една состојка може да има повеќе движења на залиха
     157 * ''' HAS_RECIPE ''' - 1:1 еден производ има најмногу еден рецепт
     158 * ''' USES ''' - 1:N еден рецепт содржи повеќе состојки
     159 * ''' CONTAINS_INGREDIENT ''' - 1:N една состојка може да биде дел од повеќе рецепти
     160 * ''' RECEIVES ''' - 1:N една маса може да прими повеќе нарачки
     161 * ''' CREATES ''' - 1:N еден корисник може да креира повеќе нарачки
     162 * ''' CONTAINS ''' - 1:N една нарачка содржи повеќе ставки
     163 * ''' INCLUDES ''' - 1:N еден производ може да биде дел од повеќе ставки
     164 * ''' HAS_PAYMENT ''' - 1:1 една нарачка има едно плаќање
     165 * ''' HAS_INVOICE ''' - 1:1 едно плаќање има една фактура
     166 * ''' CLOSES_SHIFT ''' - 1:1 една смена има едно затворање