Changes between Version 1 and Version 2 of ERModel


Ignore:
Timestamp:
04/21/26 22:14:38 (11 days ago)
Author:
185022
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • ERModel

    v1 v2  
    77
    88**ADMIN**
    9 * user_id INTEGER PRIMARY KEY DEFAULT 1,
     9* user_id int, примарен клуч DEFAULT 1
    1010* CONSTRAINT fk_admin_user
    1111        FOREIGN KEY (user_id)
     
    1414        ON DELETE SET DEFAULT
    1515
    16 **ALERGEN**
    17 * alergen_id SERIAL PRIMARY KEY,
    18 * alergen_name VARCHAR(255) NOT NULL UNIQUE,
    19 * alergen_description VARCHAR(255)
     16**ALLERGEN**
     17* allergen_id serial, примарен клуч
     18* allergen_name string, задолжителен и уникатен
     19* allergen_description string
    2020
    2121**API_USER**
    22 * user_id SERIAL PRIMARY KEY,
    23 * user_first_name VARCHAR(255) NOT NULL,
    24 * user_last_name VARCHAR(255) NOT NULL,
    25 * user_email VARCHAR(255) NOT NULL UNIQUE,
    26 * user_phone_no VARCHAR(20) UNIQUE,
    27 * user_password_hash TEXT NOT NULL
     22* user_id serial, примарен клуч
     23* user_first_name string, задолжителен
     24* user_last_name string, задолжителен
     25* user_email string, задолжителен и уникатен
     26* user_phone_no string, уникатен
     27* user_password_hash TEXT, задолжителен
    2828
    2929**CATEGORY**
    30 * cat_id SERIAL PRIMARY KEY,
    31 * cat_name VARCHAR(255) NOT NULL UNIQUE,
    32 * cat_description VARCHAR(255)
     30* cat_id serial, примарен клуч
     31* cat_name string, задолжителен и уникатен
     32* cat_description string
    3333
    3434**COMPANY**
    35 * company_id SERIAL PRIMARY KEY,
    36 * company_name VARCHAR(255) NOT NULL UNIQUE,
    37 * company_address VARCHAR(255) NOT NULL
     35* company_id serial, примарен клуч
     36* company_name string, задолжителен и уникатен
     37* company_address string, задолжителен
    3838
    3939**COMPANY_ORDER**
    40 * comp_order_id SERIAL PRIMARY KEY,
    41 * company_id INTEGER NOT NULL,
    42 * delivery_id INTEGER UNIQUE,
     40* comp_order_id serial, примарен клуч
     41* company_id int, задолжителен
     42* delivery_id int, уникатен
    4343* CONSTRAINT fk_company_order_company
    4444    FOREIGN KEY (company_id)
    4545    REFERENCES company(company_id)
    4646    ON UPDATE CASCADE
    47     ON DELETE RESTRICT,
     47    ON DELETE RESTRICT
    4848* CONSTRAINT fk_company_order_delivery
    4949    FOREIGN KEY (delivery_id)
     
    5353
    5454**CONTRACT**
    55 * contract_id SERIAL PRIMARY KEY,
    56 * company_id INTEGER NOT NULL,
    57 * rest_id INTEGER NOT NULL,
    58 * contract_status_id INTEGER NOT NULL,
    59 * contract_start_date DATE NOT NULL,
    60 * contract_end_date DATE NOT NULL,
     55* contract_id serial, примарен клуч
     56* company_id int, задолжителен
     57* rest_id int, задолжителен
     58* contract_status_id int, задолжителен
     59* contract_start_date date, задолжителен
     60* contract_end_date date, задолжителен
    6161* CONSTRAINT fk_contract_company
    6262    FOREIGN KEY (company_id)
    6363    REFERENCES company(company_id)
    6464    ON UPDATE CASCADE
    65     ON DELETE RESTRICT,
     65    ON DELETE RESTRICT
    6666* CONSTRAINT fk_contract_restaurant
    6767    FOREIGN KEY (rest_id)
    6868    REFERENCES restaurant(rest_id)
    6969    ON UPDATE CASCADE
    70     ON DELETE RESTRICT,
     70    ON DELETE RESTRICT
    7171* CONSTRAINT fk_contract_status
    7272    FOREIGN KEY (contract_status_id)
    7373    REFERENCES contract_status(contract_status_id)
    7474    ON UPDATE CASCADE
    75     ON DELETE RESTRICT,
     75    ON DELETE RESTRICT
    7676* CONSTRAINT chk_contract_dates CHECK (contract_end_date >= contract_start_date)
    7777
    7878**CONTRACT_STATUS**
    79 * contract_status_id SERIAL PRIMARY KEY,
    80 * contract_status_name VARCHAR(255) NOT NULL UNIQUE
     79* contract_status_id serial, примарен клуч
     80* contract_status_name string, задолжителен и уникатен
    8181
    8282**CUSTOMER**
    83 *  user_id INTEGER PRIMARY KEY DEFAULT 1,
     83*  user_id int PRIMARY KEY DEFAULT 1
    8484* CONSTRAINT fk_customer_user
    8585    FOREIGN KEY (user_id)
     
    8989
    9090**CUSTOMER_ORDER**
    91 * order_id SERIAL PRIMARY KEY,
    92 * comp_order_id INTEGER NOT NULL,
    93 * company_employee_user_id INTEGER NOT NULL DEFAULT 1,
    94 * order_datetime TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
    95 * o_status_id INTEGER NOT NULL,
    96 * order_total NUMERIC(10,2) NOT NULL,
     91* order_id serial, примарен клуч
     92* comp_order_id int, задолжителен
     93* company_employee_user_id int, задолжителен DEFAULT 1
     94* order_datetime timestamp, задолжителен DEFAULT CURRENT_TIMESTAMP
     95* o_status_id int, задолжителен
     96* order_total NUMERIC(10,2), задолжителен
    9797* CONSTRAINT fk_customer_order_company_order
    9898    FOREIGN KEY (comp_order_id)
    9999    REFERENCES company_order(comp_order_id)
    100100    ON UPDATE CASCADE
    101     ON DELETE RESTRICT,
     101    ON DELETE RESTRICT
    102102* CONSTRAINT fk_customer_order_employee
    103103    FOREIGN KEY (company_employee_user_id)
    104104    REFERENCES company_employee(user_id)
    105105    ON UPDATE CASCADE
    106     ON DELETE SET DEFAULT,
     106    ON DELETE SET DEFAULT
    107107* CONSTRAINT fk_customer_order_status
    108108    FOREIGN KEY (o_status_id)
    109109    REFERENCES order_status(o_status_id)
    110110    ON UPDATE CASCADE
    111     ON DELETE RESTRICT,
     111    ON DELETE RESTRICT
    112112* CONSTRAINT chk_order_total CHECK (order_total >= 0)
    113113   
    114114**DELIVERY**
    115 * delivery_id SERIAL PRIMARY KEY,
    116 * delivery_date DATE NOT NULL DEFAULT CURRENT_DATE,
    117 * delivery_notes VARCHAR(255),
    118 * d_status_id INTEGER NOT NULL,
    119 * driver_user_id INTEGER NOT NULL DEFAULT 1,
     115* delivery_id serial, примарен клуч
     116* delivery_date DATE, задолжителен DEFAULT CURRENT_DATE
     117* delivery_notes string
     118* d_status_id int, задолжителен
     119* driver_user_id int, задолжителен DEFAULT 1
    120120* CONSTRAINT fk_delivery_status
    121121    FOREIGN KEY (d_status_id)
    122122    REFERENCES delivery_status(d_status_id)
    123123    ON UPDATE CASCADE
    124     ON DELETE RESTRICT,
     124    ON DELETE RESTRICT
    125125* CONSTRAINT fk_delivery_driver
    126126    FOREIGN KEY (driver_user_id)
     
    130130
    131131**DELIVERY_REVIEW**
    132 * delivery_review_id SERIAL PRIMARY KEY,
    133 * delivery_id INTEGER NOT NULL UNIQUE,
    134 * del_review_courier_rating INTEGER NOT NULL,
    135 * del_review_speed_rating INTEGER NOT NULL,
     132* delivery_review_id serial, примарен клуч
     133* delivery_id int, задолжителен и уникатен
     134* del_review_courier_rating int, задолжителен
     135* del_review_speed_rating int, задолжителен
    136136* CONSTRAINT fk_delivery_review_delivery
    137137        FOREIGN KEY (delivery_id)
    138138        REFERENCES delivery(delivery_id)
    139139        ON UPDATE CASCADE
    140         ON DELETE CASCADE,
    141 * CONSTRAINT chk_delivery_review_courier_rating CHECK (del_review_courier_rating BETWEEN 1 AND 5),
     140        ON DELETE CASCADE
     141* CONSTRAINT chk_delivery_review_courier_rating CHECK (del_review_courier_rating BETWEEN 1 AND 5)
    142142* CONSTRAINT chk_delivery_review_speed_rating CHECK (del_review_speed_rating BETWEEN 1 AND 5)
    143143
    144144**DELIVERY_STATUS**
    145 * d_status_id SERIAL PRIMARY KEY,
    146 * d_status_name VARCHAR(255) NOT NULL UNIQUE
     145* d_status_id serial, примарен клуч
     146* d_status_name string, задолжителен и уникатен
    147147
    148148**DRINK**
    149 * drink_id SERIAL PRIMARY KEY,
    150 * rest_id INTEGER NOT NULL,
    151 * drink_name VARCHAR(255) NOT NULL,
    152 * drink_milliliters INTEGER NOT NULL,
    153 * drink_price NUMERIC(10,2) NOT NULL,
     149* drink_id serial, примарен клуч
     150* rest_id int, задолжителен
     151* drink_name string, задолжителен
     152* drink_milliliters int, задолжителен
     153* drink_price NUMERIC(10,2), задолжителен
    154154* CONSTRAINT fk_drink_restaurant
    155155    FOREIGN KEY (rest_id)
    156156    REFERENCES restaurant(rest_id)
    157157    ON UPDATE CASCADE
    158     ON DELETE RESTRICT,
    159 * CONSTRAINT chk_drink_milliliters CHECK (drink_milliliters > 0),
    160 * CONSTRAINT chk_drink_price CHECK (drink_price >= 0),
     158    ON DELETE RESTRICT
     159* CONSTRAINT chk_drink_milliliters CHECK (drink_milliliters > 0)
     160* CONSTRAINT chk_drink_price CHECK (drink_price >= 0)
    161161* CONSTRAINT uq_drink_restaurant_name UNIQUE (rest_id, drink_name)
    162162
    163163**DRIVER**
    164 * user_id INTEGER PRIMARY KEY DEFAULT 1,
     164* user_id int PRIMARY KEY DEFAULT 1
    165165* CONSTRAINT fk_driver_user
    166166    FOREIGN KEY (user_id)
     
    170170
    171171**EMPLOYEE_LOYALTY**
    172 * emp_loyalty_id SERIAL PRIMARY KEY,
    173 * user_id INTEGER NOT NULL UNIQUE,
    174 * emp_loyalty_curr_points INTEGER NOT NULL DEFAULT 0,
    175 * emp_loyalty_joined_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
    176 * emp_loyalty_status_id INTEGER NOT NULL,
    177 * tier_id INTEGER NOT NULL,
     172* emp_loyalty_id serial, примарен клуч
     173* user_id int, задолжителен и уникатен
     174* emp_loyalty_curr_points int, задолжителен DEFAULT 0
     175* emp_loyalty_joined_at timestamp, задолжителен DEFAULT CURRENT_TIMESTAMP
     176* emp_loyalty_status_id int, задолжителен
     177* tier_id int, задолжителен
    178178* CONSTRAINT fk_employee_loyalty_user
    179179    FOREIGN KEY (user_id)
    180180    REFERENCES company_employee(user_id)
    181181    ON UPDATE CASCADE
    182     ON DELETE CASCADE,
     182    ON DELETE CASCADE
    183183* CONSTRAINT fk_employee_loyalty_status
    184184    FOREIGN KEY (emp_loyalty_status_id)
    185185    REFERENCES employee_loyalty_status(emp_loyalty_status_id)
    186186    ON UPDATE CASCADE
    187     ON DELETE RESTRICT,
     187    ON DELETE RESTRICT
    188188* CONSTRAINT fk_employee_loyalty_tier
    189189    FOREIGN KEY (tier_id)
    190190    REFERENCES loyalty_tier(tier_id)
    191191    ON UPDATE CASCADE
    192     ON DELETE RESTRICT,
     192    ON DELETE RESTRICT
    193193* CONSTRAINT chk_employee_loyalty_points CHECK (emp_loyalty_curr_points >= 0)
    194194
    195195**EMPLOYEE_LOYALTY_STATUS**
    196 * emp_loyalty_status_id SERIAL PRIMARY KEY,
    197 * emp_loyalty_status_name VARCHAR(255) NOT NULL UNIQUE
     196* emp_loyalty_status_id serial, примарен клуч
     197* emp_loyalty_status_name string, задолжителен и уникатен
    198198
    199199**INGREDIENT**
    200 * ingr_id SERIAL PRIMARY KEY,
    201 * ingr_name VARCHAR(255) NOT NULL UNIQUE
     200* ingr_id serial, примарен клуч
     201* ingr_name string, задолжителен и уникатен
    202202
    203203**LOYALTY_TIER**
    204 * tier_id SERIAL PRIMARY KEY,
    205 * tier_name VARCHAR(255) NOT NULL UNIQUE,
    206 * tier_minimum_points INTEGER NOT NULL,
    207 * tier_maximum_points INTEGER NOT NULL,
    208 * tier_discount_percentage NUMERIC(5,2) NOT NULL,
    209 * tier_free_delivery_eligibility BOOLEAN NOT NULL DEFAULT FALSE,
    210 * tier_priority_support BOOLEAN NOT NULL DEFAULT FALSE,
    211 * tier_created_at DATE NOT NULL DEFAULT CURRENT_DATE,
    212 * tier_update_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
    213 * CONSTRAINT chk_tier_points_nonnegative CHECK (tier_minimum_points >= 0 AND tier_maximum_points >= 0),
    214 * CONSTRAINT chk_tier_points_range CHECK (tier_maximum_points >= tier_minimum_points),
     204* tier_id serial, примарен клуч
     205* tier_name string, задолжителен и уникатен
     206* tier_minimum_points int, задолжителен
     207* tier_maximum_points int, задолжителен
     208* tier_discount_percentage NUMERIC(5,2), задолжителен
     209* tier_free_delivery_eligibility bool, задолжителен DEFAULT FALSE
     210* tier_priority_support bool, задолжителен DEFAULT FALSE
     211* tier_created_at DATE, задолжителен DEFAULT CURRENT_DATE
     212* tier_update_at timestamp, задолжителен DEFAULT CURRENT_TIMESTAMP
     213* CONSTRAINT chk_tier_points_nonnegative CHECK (tier_minimum_points >= 0 AND tier_maximum_points >= 0)
     214* CONSTRAINT chk_tier_points_range CHECK (tier_maximum_points >= tier_minimum_points)
    215215* CONSTRAINT chk_tier_discount CHECK (tier_discount_percentage >= 0 AND tier_discount_percentage <= 100)
    216216
    217217**LUNCH_TIME**
    218 * lunch_time_id SERIAL PRIMARY KEY,
    219 * comp_order_id INTEGER,
    220 * contract_id INTEGER NOT NULL,
    221 * lunch_start TIMESTAMP NOT NULL,
    222 * lunch_end TIMESTAMP NOT NULL,
    223 * lunch_preorder_offset INTEGER NOT NULL DEFAULT 0,
    224 * lunch_weekday VARCHAR(15) NOT NULL,
     218* lunch_time_id serial, примарен клуч
     219* comp_order_id int
     220* contract_id int, задолжителен
     221* lunch_start timestamp, задолжителен
     222* lunch_end timestamp, задолжителен
     223* lunch_preorder_offset int, задолжителен DEFAULT 0
     224* lunch_weekday string, задолжителен
    225225* CONSTRAINT fk_lunch_time_company_order
    226226    FOREIGN KEY (comp_order_id)
    227227    REFERENCES company_order(comp_order_id)
    228228    ON UPDATE CASCADE
    229     ON DELETE SET NULL,
     229    ON DELETE SET NULL
    230230* CONSTRAINT fk_lunch_time_contract
    231231    FOREIGN KEY (contract_id)
    232232    REFERENCES contract(contract_id)
    233233    ON UPDATE CASCADE
    234     ON DELETE CASCADE,
    235 * CONSTRAINT chk_lunch_time_offset CHECK (lunch_preorder_offset >= 0),
     234    ON DELETE CASCADE
     235* CONSTRAINT chk_lunch_time_offset CHECK (lunch_preorder_offset >= 0)
    236236* CONSTRAINT chk_lunch_weekday CHECK (
    237237    lunch_weekday IN ('Monday','Tuesday','Wednesday','Thursday','Friday','Saturday','Sunday')
    238 ),
     238)
    239239* CONSTRAINT chk_lunch_interval CHECK (lunch_end > lunch_start)
    240240
    241241**MEAL**
    242 * meal_id SERIAL PRIMARY KEY,
    243 * cat_id INTEGER NOT NULL,
    244 * rest_id INTEGER NOT NULL,
    245 * meal_name VARCHAR(255) NOT NULL,
    246 * meal_description VARCHAR(255),
    247 * meal_price NUMERIC(10,2) NOT NULL,
    248 * meal_weight INTEGER NOT NULL,
     242* meal_id serial, примарен клуч
     243* cat_id int, задолжителен
     244* rest_id int, задолжителен
     245* meal_name string, задолжителен
     246* meal_description string
     247* meal_price NUMERIC(10,2), задолжителен
     248* meal_weight int, задолжителен
    249249* CONSTRAINT fk_meal_category
    250250    FOREIGN KEY (cat_id)
    251251    REFERENCES category(cat_id)
    252252    ON UPDATE CASCADE
    253     ON DELETE RESTRICT,
     253    ON DELETE RESTRICT
    254254* CONSTRAINT fk_meal_restaurant
    255255    FOREIGN KEY (rest_id)
    256256    REFERENCES restaurant(rest_id)
    257257    ON UPDATE CASCADE
    258     ON DELETE RESTRICT,
    259 * CONSTRAINT chk_meal_price CHECK (meal_price >= 0),
    260 * CONSTRAINT chk_meal_weight CHECK (meal_weight > 0),
     258    ON DELETE RESTRICT
     259* CONSTRAINT chk_meal_price CHECK (meal_price >= 0)
     260* CONSTRAINT chk_meal_weight CHECK (meal_weight > 0)
    261261* CONSTRAINT uq_meal_restaurant_name UNIQUE (rest_id, meal_name)
    262262
    263263**ORDER_REVIEW**
    264 * order_review_id SERIAL PRIMARY KEY,
    265 * order_id INTEGER NOT NULL UNIQUE,
    266 * order_review_food_rating INTEGER NOT NULL,
    267 * order_review_res_rating INTEGER NOT NULL,
     264* order_review_id serial, примарен клуч
     265* order_id int, задолжителен и уникатен
     266* order_review_food_rating int, задолжителен
     267* order_review_res_rating int, задолжителен
    268268* CONSTRAINT fk_order_review_order
    269269    FOREIGN KEY (order_id)
    270270    REFERENCES customer_order(order_id)
    271271    ON UPDATE CASCADE
    272     ON DELETE CASCADE,
    273 * CONSTRAINT chk_order_review_food_rating CHECK (order_review_food_rating BETWEEN 1 AND 5),
     272    ON DELETE CASCADE
     273* CONSTRAINT chk_order_review_food_rating CHECK (order_review_food_rating BETWEEN 1 AND 5)
    274274* CONSTRAINT chk_order_review_res_rating CHECK (order_review_res_rating BETWEEN 1 AND 5)
    275275
    276276**ORDER_STATUS**
    277 * o_status_id SERIAL PRIMARY KEY,
    278 * o_status_name VARCHAR(255) NOT NULL UNIQUE
     277* o_status_id serial, примарен клуч
     278* o_status_name string, задолжителен и уникатен
    279279
    280280**RESTAURANT**
    281 * rest_id SERIAL PRIMARY KEY,
    282 * rest_name VARCHAR(255) NOT NULL,
    283 * rest_email VARCHAR(255) NOT NULL UNIQUE,
    284 * rest_location VARCHAR(255) NOT NULL,
    285 * rest_phone VARCHAR(20) NOT NULL UNIQUE,
    286 * rest_website VARCHAR(255) UNIQUE
     281* rest_id serial, примарен клуч
     282* rest_name string, задолжителен
     283* rest_email string, задолжителен и уникатен
     284* rest_location string, задолжителен
     285* rest_phone string, задолжителен и уникатен
     286* rest_website string, уникатен
    287287
    288288**REVIEW**
    289 * review_id SERIAL PRIMARY KEY,
    290 * review_comment VARCHAR(255),
    291 * review_created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
    292 * review_rating INTEGER NOT NULL,
     289* review_id serial, примарен клуч
     290* review_comment string
     291* review_created_at timestamp, задолжителен DEFAULT CURRENT_TIMESTAMP
     292* review_rating int, задолжителен
    293293* CONSTRAINT chk_review_rating CHECK (review_rating BETWEEN 1 AND 5)
     294
     295==== Релациски табели
     296
     297**Order_Meal**
     298* order_id int, задолжителен
     299* meal_id int, задолжителен
     300* quantity int, задолжителен DEFAULT 1
     301* PRIMARY KEY (order_id, meal_id), примарен клуч
     302* CONSTRAINT fk_order_meal_order
     303    FOREIGN KEY (order_id)
     304    REFERENCES customer_order(order_id)
     305    ON UPDATE CASCADE
     306    ON DELETE CASCADE
     307* CONSTRAINT fk_order_meal_meal
     308    FOREIGN KEY (meal_id)
     309    REFERENCES meal(meal_id)
     310    ON UPDATE CASCADE
     311    ON DELETE RESTRICT
     312* CONSTRAINT chk_order_meal_quantity CHECK (quantity > 0)
     313
     314**Order_Drink**
     315* order_id int, задолжителен
     316* drink_id int, задолжителен
     317* quantity int, задолжителен DEFAULT 1
     318* PRIMARY KEY (order_id, drink_id), примарен клуч
     319* CONSTRAINT fk_order_drink_order
     320    FOREIGN KEY (order_id)
     321    REFERENCES customer_order(order_id)
     322    ON UPDATE CASCADE
     323    ON DELETE CASCADE
     324* CONSTRAINT fk_order_drink_drink
     325    FOREIGN KEY (drink_id)
     326    REFERENCES drink(drink_id)
     327    ON UPDATE CASCADE
     328    ON DELETE RESTRICT
     329* CONSTRAINT chk_order_drink_quantity CHECK (quantity > 0)
     330
     331**Meal_Ingredient**
     332* meal_id int, задолжителен
     333* ingr_id int, задолжителен
     334* PRIMARY KEY (meal_id, ingr_id), примарен клуч
     335* CONSTRAINT fk_meal_ingredient_meal
     336    FOREIGN KEY (meal_id)
     337    REFERENCES meal(meal_id)
     338    ON UPDATE CASCADE
     339    ON DELETE CASCADE
     340* CONSTRAINT fk_meal_ingredient_ingredient
     341    FOREIGN KEY (ingr_id)
     342    REFERENCES ingredient(ingr_id)
     343    ON UPDATE CASCADE
     344    ON DELETE CASCADE
     345
     346**Allergen_Ingredient**
     347* allergen_id int, задолжителен
     348* ingr_id int, задолжителен
     349* PRIMARY KEY (allergen_id, ingr_id), примарен клуч
     350* CONSTRAINT fk_allergen_ingredient_allergen
     351    FOREIGN KEY (allergen_id)
     352    REFERENCES allergen(allergen_id)
     353    ON UPDATE CASCADE
     354    ON DELETE CASCADE
     355* CONSTRAINT fk_allergen_ingredient_ingredient
     356    FOREIGN KEY (ingr_id)
     357    REFERENCES ingredient(ingr_id)
     358    ON UPDATE CASCADE
     359    ON DELETE CASCADE