| 1 | = Логички и физички дизајн – Креирање база (со SQL DDL) = |
| 2 | |
| 3 | == Ознаки == |
| 4 | - Со * се означени надворешни клучеви (FK). |
| 5 | - Примарните клучеви (PK) се подвлечени болдирани. |
| 6 | |
| 7 | == Табели == |
| 8 | |
| 9 | === Ентитети === |
| 10 | |
| 11 | 1. '''USER''' ( _user_id_ , username, email, password_hash, first_name, last_name ) |
| 12 | - user_id (PK, bigint) |
| 13 | - username (string, задолжително) |
| 14 | - email (string, задолжително) |
| 15 | - password_hash (string, задолжително) |
| 16 | - first_name, last_name (опционално) |
| 17 | |
| 18 | 2. '''INSTRUCTOR''' ( _instructor_id_ , first_name, last_name, biography ) |
| 19 | - instructor_id (PK, bigint) |
| 20 | - first_name (string, задолжително) |
| 21 | - last_name (string, задолжително) |
| 22 | - biography (text, опционално) |
| 23 | - (Ако сакате 1:N со CLASS, ќе имате FK во CLASS → instructor_id*) |
| 24 | |
| 25 | 3. '''TRAINING''' ( _training_id_ , training_name, description, duration, intensity_level ) |
| 26 | - training_id (PK, bigint) |
| 27 | - training_name (string, задолжително) |
| 28 | - description (text, опционално) |
| 29 | - duration (int, опционално) |
| 30 | - intensity_level (string, опционално) |
| 31 | |
| 32 | 4. '''CLASS''' ( _class_id_ , date, start_time, end_time, location, capacity, seats_available, instructor_id* ) |
| 33 | - class_id (PK, bigint) |
| 34 | - date (date, задолжително) |
| 35 | - start_time (time, задолжително) |
| 36 | - end_time (time, задолжително) |
| 37 | - location (string, задолжително) |
| 38 | - capacity (int, опционално) |
| 39 | - seats_available (int, опционално) |
| 40 | - instructor_id* → референцира до INSTRUCTOR(instructor_id) |
| 41 | |
| 42 | 5. '''EVENT''' ( _event_id_ , event_name, description, date, time, location ) |
| 43 | - event_id (PK, bigint) |
| 44 | - event_name (string, задолжително) |
| 45 | - description (text, опционално) |
| 46 | - date (date, задолжително) |
| 47 | - time (time, задолжително) |
| 48 | - location (string, задолжително) |
| 49 | |
| 50 | 6. '''PACKAGE''' ( _package_id_ , package_name, price, num_classes ) |
| 51 | - package_id (PK, bigint) |
| 52 | - package_name (string, задолжително) |
| 53 | - price (decimal, задолжително) |
| 54 | - num_classes (int, задолжително) |
| 55 | |
| 56 | 7. '''MERCH_ITEMS''' ( _merch_id_ , item_name, description, price, quantity_in_stock ) |
| 57 | - merch_id (PK, bigint) |
| 58 | - item_name (string, задолжително) |
| 59 | - description (text, опционално) |
| 60 | - price (decimal, задолжително) |
| 61 | - quantity_in_stock (int, опционално) |
| 62 | |
| 63 | === Табели за M:N Релации (Bridge) === |
| 64 | |
| 65 | 1. '''USER_CLASS''' ( _user_id*_, _class_id*_ ) |
| 66 | - user_id* → референцира до USER(user_id) |
| 67 | - class_id* → референцира до CLASS(class_id) |
| 68 | - Пример за релација books (USER ↔ CLASS, M:N) |
| 69 | |
| 70 | 2. '''CLASS_TRAINING''' ( _class_id*_, _training_id*_ ) |
| 71 | - class_id* → референцира до CLASS(class_id) |
| 72 | - training_id* → референцира до TRAINING(training_id) |
| 73 | - Пример за релација is_scheduled_for (M:N) |
| 74 | |
| 75 | 3. '''USER_EVENT''' ( _user_id*_, _event_id*_ ) |
| 76 | - user_id* → референцира до USER(user_id) |
| 77 | - event_id* → референцира до EVENT(event_id) |
| 78 | - Пример за релација registers (M:N) |
| 79 | |
| 80 | 4. '''USER_PACKAGE''' ( _user_id*_, _package_id*_ ) |
| 81 | - user_id* → референцира до USER(user_id) |
| 82 | - package_id* → референцира до PACKAGE(package_id) |
| 83 | - Пример за релација buys (M:N) |
| 84 | |
| 85 | 5. '''USER_MERCH''' ( _user_id*_, _merch_id*_ ) |
| 86 | - user_id* → референцира до USER(user_id) |
| 87 | - merch_id* → референцира до MERCH_ITEMS(merch_id) |
| 88 | - Пример за релација purchases (M:N) |
| 89 | |
| 90 | 6. '''PACKAGE_CLASS''' ( _package_id*_, _class_id*_ ) |
| 91 | - package_id* → референцира до PACKAGE(package_id) |
| 92 | - class_id* → референцира до CLASS(class_id) |
| 93 | - Пример за релација is_for (M:N) |
| 94 | |
| 95 | ---- |
| 96 | |
| 97 | == DDL скрипта за креирање и бришење на табелите == |
| 98 | [attachment:kreiranje.sql "kreiranje.sql"] |
| 99 | |
| 100 | == DML скрипта за полнење на табелите со податоци == |
| 101 | [attachment:polnenje.sql "polnenje.sql"] |
| 102 | |
| 103 | == Дијаграм на табелите (DBeaver) == |
| 104 | [[Image(BlissCore_Tables_DBeaver.png, 600px)]] |
| 105 | |