Changes between Version 4 and Version 5 of RelationalDesign
- Timestamp:
- 09/13/26 21:31:46 (2 weeks ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
RelationalDesign
v4 v5 1 1 = Логички и физички дизајн - Креирање база податоци (со SQL DDL) 2 == Ознаки 2 3 == Фаза 2 - DDL, податоци, погледи 4 5 Оваа фаза почнувате да ја работите откако финалниот ЕР дијаграм ќе ви биде одобрен и од асистент и од професор. 6 7 === 2А: DDL за изработениот ЕР дијаграм 8 9 Генериран е DDL за изработениот ЕР дијаграм. Задолжително се проверени сите податочни типови, ограничувања и клучеви. 10 11 Додадени се дополнителни ограничувања, проверки и дефолтни вредности секаде каде што е потребно, со цел да се обезбеди интегритет и конзистентност на податоците. 12 13 === Ознаки 14 3 15 * Со * се означени надворешни клучеви 4 16 * Со !** се означени втори надворешни клучеви … … 6 18 * Примарните клучеви се подвлечени и болдирани 7 19 8 == Табели 9 === Ентитети 20 === Табели 21 22 ==== Ентитети 10 23 11 24 ADMIN(admin_id, admin_name, admin_email, admin_password) … … 34 47 35 48 REVIEW(review_id, customer_id*, review_text, rating) 49 36 50 * референцира до CUSTOMER (customer_id) 37 51 38 52 RESTAURANT(rest_id, rest_name, rest_location, rest_website, rest_phone, rest_email, company_id*) 53 39 54 * референцира до COMPANY (company_id) 40 55 … … 42 57 43 58 DRIVER(driver_id, first_name, last_name, phone, vehicle_info, company_id*) 59 44 60 * референцира до COMPANY (company_id) 45 61 46 62 CONTRACT(contract_id, company_id*, contract_status_id**, contract_start_date, contract_end_date, contract_value) 47 * референцира до COMPANY (company_id) 63 64 * референцира до COMPANY (company_id) 65 48 66 ** референцира до CONTRACT_STATUS (contract_status_id) 49 67 50 68 CUSTOMER_LOYALTY(customer_loyalty_id, points, customer_id*, loyalty_tier_id**, customer_loyalty_status_id***) 69 51 70 * референцира до CUSTOMER (customer_id) 71 52 72 ** референцира до LOYALTY_TIER (loyalty_tier_id) 73 53 74 *** референцира до CUSTOMER_LOYALTY_STATUS (customer_loyalty_status_id) 54 75 55 76 MEAL(meal_id, meal_name, meal_price, meal_description, rest_id*, category_id**, lunch_time_id***) 77 56 78 * референцира до RESTAURANT (rest_id) 79 57 80 ** референцира до CATEGORY (category_id) 81 58 82 *** референцира до LUNCH_TIME (lunch_time_id) 59 83 60 84 DRINK(drink_id, drink_name, drink_price, rest_id*) 85 61 86 * референцира до RESTAURANT (rest_id) 62 87 63 88 CUSTOMER_ORDER(order_id, order_date, total_amount, customer_id*, rest_id**, order_status_id***) 89 64 90 * референцира до CUSTOMER (customer_id) 91 65 92 ** референцира до RESTAURANT (rest_id) 93 66 94 *** референцира до ORDER_STATUS (order_status_id) 67 95 68 96 DELIVERY(delivery_id, delivered_at, order_id*, driver_id**, delivery_status_id***) 69 * референцира до CUSTOMER_ORDER (order_id) 97 98 * референцира до CUSTOMER_ORDER (order_id) 99 70 100 ** референцира до DRIVER (driver_id) 101 71 102 *** референцира до DELIVERY_STATUS (delivery_status_id) 72 103 73 104 ORDER_REVIEW(order_review_id, order_id*, review_id**) 74 * референцира до CUSTOMER_ORDER (order_id) 105 106 * референцира до CUSTOMER_ORDER (order_id) 107 75 108 ** референцира до REVIEW (review_id) 76 109 77 110 DELIVERY_REVIEW(delivery_review_id, delivery_id*, review_id**) 111 78 112 * референцира до DELIVERY (delivery_id) 113 79 114 ** референцира до REVIEW (review_id) 80 115 81 116 INVOICE(invoice_id, issued_at, amount, order_id*) 117 82 118 * референцира до CUSTOMER_ORDER (order_id) 83 119 84 120 COMPANY_ORDER(company_order_id, company_id*, order_id**) 85 * референцира до COMPANY (company_id) 121 122 * референцира до COMPANY (company_id) 123 86 124 ** референцира до CUSTOMER_ORDER (order_id) 87 125 88 Релациски табели126 ==== Релациски табели 89 127 90 128 MEAL_INGREDIENT(meal_id*, ingredient_id**) 129 91 130 * референцира до MEAL (meal_id) 131 92 132 ** референцира до INGREDIENT (ingredient_id) 93 133 94 134 ALERGEN_INGREDIENT(alergen_id*, ingredient_id**) 135 95 136 * референцира до ALERGEN (alergen_id) 137 96 138 ** референцира до INGREDIENT (ingredient_id) 97 139 98 140 ORDER_MEAL(order_id*, meal_id**, quantity) 99 * референцира до CUSTOMER_ORDER (order_id) 141 142 * референцира до CUSTOMER_ORDER (order_id) 143 100 144 ** референцира до MEAL (meal_id) 101 145 102 146 ORDER_DRINK(order_id*, drink_id**, quantity) 103 * референцира до CUSTOMER_ORDER (order_id) 147 148 * референцира до CUSTOMER_ORDER (order_id) 149 104 150 ** референцира до DRINK (drink_id) 105 151 106 == DDL скрипта за креирање на табелите 107 === Скрипта за креирање на шема 108 [attachment:schema_dll_final.sql] 152 === DDL скрипта за креирање на табелите 153 154 Финалната DDL скрипта за креирање на шемата: 155 156 * `schema_final.sql` 157 158 // Простор за поставување на schema_final.sql 159 160 ''' 161 162 === 2Б: Полнење на табелите со податоци 163 164 Потребно е табелите да бидат наполнети со реалистични податоци. Неколку табели содржат повеќе од еден милион редици, а големината на табелите е избрана така што го одразува реалното користење на апликацијата. 165 166 Податоците се генерирани и увезени од реални податочни извори каде што е соодветно. 167 168 ==== Број на податоци по табела 169 170 [cols="2,1", options="header"] 171 |=== 172 | Табела | Број на записи 173 174 | API_USER | 10,001,000 175 | CUSTOMER | 10,000,000 176 | CUSTOMER_LOYALTY | 10,000,000 177 | CUSTOMER_ORDER | 10,000,000 178 | REVIEW | 1,000,000 179 | ORDER_MEAL | 1,000,000 180 | ORDER_DRINK | 1,000,000 181 | API_ADMIN | 100 182 | DRIVER | 900 183 | COMPANY | 500 184 | COMPANY_ORDER | 1,000,000 185 | RESTAURANT | до 50 186 | CATEGORY | реални MealDB категории 187 | INGREDIENT | реален MealDB/CocktailDB сет на состојки 188 | ALERGEN | 14 189 | MEAL | 200 190 | DRINK | 100 191 | MEAL_INGREDIENT | зависно од увезените meal-ingredient врски 192 | ALERGEN_INGREDIENT | зависно од совпаѓањето според имињата на состојките 193 | CONTRACT | 200 194 | DELIVERY | 1,000,000 195 | LUNCH_TIME | 1,000 196 | INVOICE | 6,000 197 | ORDER_REVIEW | 700,000 198 | DELIVERY_REVIEW | 300,000 199 | CONTRACT_STATUS | 5 200 | CUSTOMER_LOYALTY_STATUS | 3 201 | DELIVERY_STATUS | 8 202 | ORDER_STATUS | 6 203 |=== 204 205 ==== Извор на податоците 206 207 * *RESTAURANT* – до 50 ресторани од реалниот dataset 208 * *CATEGORY* – реални категории од MealDB 209 * *INGREDIENT* – реален сет на состојки од MealDB/CocktailDB 210 * *MEAL_INGREDIENT* – врски добиени од увезените податоци за оброците и состојките 211 * *ALERGEN_INGREDIENT* – врски добиени преку совпаѓање на имињата на состојките 212 * Останатите податоци се генерирани со реалистична распределба според очекуваното користење на апликацијата. 213 214 ==== Скрипти за полнење на табелите 215 216 * `data_final.sql` 217 218 // Простор за поставување на data_final.sql 219 220 === 2В: Погледи (Views) 221 222 Потребно е да се направат три погледи (views) по член, така што тие подоцна реално ќе бидат користени од апликацијата. 223 224 ==== View 1 225 226 // Простор за првиот view 227 228 ## [source,sql] 229 230 ## -- SQL код за View 1 231 232 ==== View 2 233 234 // Простор за вториот view 235 236 ## [source,sql] 237 238 ## -- SQL код за View 2 239 240 ==== View 3 241 242 // Простор за третиот view 243 244 ## [source,sql] 245 246 ## -- SQL код за View 3 247 248 === Прилози 249 250 * `schema_final.sql` – финална DDL скрипта 251 * `data_final.sql` – скрипта за полнење на табелите 252 * Скрипти за креирање на views
