| | 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 | |