| 1 | = ЕР Дијаграм = |
| 2 | |
| 3 | [[Image(BlissCoreDB_Scheme_2, 650px)]] |
| 4 | |
| 5 | ---- |
| 6 | == Податочни побарувања == |
| 7 | |
| 8 | === Ентитети === |
| 9 | |
| 10 | 1. **USER** – ентитет кој чува податоци за крајните корисници (клиенти). |
| 11 | - user_id (primary key, bigint) |
| 12 | - username (string, задолжително) |
| 13 | - email (string, задолжително) |
| 14 | - password_hash (string, задолжително) |
| 15 | - (други полиња по потреба, пример first_name, last_name) |
| 16 | |
| 17 | 2. **INSTRUCTOR** – ентитет кој чува податоци за инструктори. |
| 18 | - instructor_id (primary key, bigint) |
| 19 | - first_name (string, задолжително) |
| 20 | - last_name (string, задолжително) |
| 21 | - biography (text, опционално) |
| 22 | |
| 23 | 3. **TRAINING** – ентитет кој чува податоци за различни типови јога тренинзи (Vinyasa, Hatha итн.). |
| 24 | - training_id (primary key, bigint) |
| 25 | - training_name (string, задолжително) |
| 26 | - description (text, опционално) |
| 27 | - duration (int, опционално) |
| 28 | - intensity_level (string, опционално) |
| 29 | |
| 30 | 4. **CLASS** – ентитет кој чува податоци за закажани часови во распоред. |
| 31 | - class_id (primary key, bigint) |
| 32 | - date (date, задолжително) |
| 33 | - start_time (time, задолжително) |
| 34 | - end_time (time, задолжително) |
| 35 | - location (string, задолжително) |
| 36 | - capacity (int, опционално) |
| 37 | - seats_available (int, опционално) |
| 38 | |
| 39 | 5. **EVENT** – ентитет кој чува податоци за специјални настани (workshops, retreats). |
| 40 | - event_id (primary key, bigint) |
| 41 | - event_name (string, задолжително) |
| 42 | - description (text, опционално) |
| 43 | - date (date, задолжително) |
| 44 | - time (time, задолжително) |
| 45 | - location (string, задолжително) |
| 46 | |
| 47 | 6. **PACKAGE** – ентитет кој чува податоци за пакети (e.g., “5-Class Pass”). |
| 48 | - package_id (primary key, bigint) |
| 49 | - package_name (string, задолжително) |
| 50 | - price (decimal, задолжително) |
| 51 | - num_classes (int, задолжително) |
| 52 | |
| 53 | 7. **MERCH_ITEMS** – ентитет кој чува податоци за јога опрема (мерч). |
| 54 | - merch_id (primary key, bigint) |
| 55 | - item_name (string, задолжително) |
| 56 | - description (text, опционално) |
| 57 | - price (decimal, задолжително) |
| 58 | - quantity_in_stock (int, опционално) |
| 59 | |
| 60 | ---- |
| 61 | === Релации === |
| 62 | |
| 63 | 1. **books** – релација помеѓу USER и CLASS (M:N). |
| 64 | Означува дека еден корисник може да букира повеќе часови, а еден час може да биде букиран од повеќе корисници. |
| 65 | |
| 66 | 2. **teaches** – релација помеѓу INSTRUCTOR и CLASS (1:N). |
| 67 | Означува кој инструктор го предава одреден час. Секој час мора да има точно еден инструктор, а еден инструктор може да предава повеќе часови. |
| 68 | |
| 69 | 3. **is_scheduled_for** – релација помеѓу CLASS и TRAINING (M:N). |
| 70 | Еден час може да содржи повеќе (најмалку еден) тренинзи (комбинирана сесија), а еден тренинг може да се појави во повеќе часови или воопшто да не биде закажан. |
| 71 | |
| 72 | 4. **registers** – релација помеѓу USER и EVENT (M:N). |
| 73 | Корисниците се регистрираат за специјални настани. |
| 74 | |
| 75 | 5. **buys** – релација помеѓу USER и PACKAGE (M:N). |
| 76 | Означува купување пакети. |
| 77 | |
| 78 | 6. **purchases** – релација помеѓу USER и MERCH_ITEMS (M:N). |
| 79 | Означува дека корисниците можат да купуваат јога опрема. |
| 80 | |
| 81 | 7. **is_for** – релација помеѓу PACKAGE и CLASS (M:N). |
| 82 | Означува кои часови ги содржи еден пакет. Еден пакет мора да има барем еден час, а еден час може да биде дел од ниту еден или повеќе пакети. |
| 83 | |
| 84 | ---- |
| 85 | == Историјат == |
| 86 | |
| 87 | === Верзија 2 === |
| 88 | [[Image(BlissCoreDB_Scheme_2.png, 500px)]] |
| 89 | |
| 90 | '''Измени од претходната верзија:''' |
| 91 | - Релацијата ''is_for'' сега е помеѓу PACKAGE и CLASS (наместо PACKAGE и TRAINING), со што пакетите содржат часови. |
| 92 | - Релацијата ''is_scheduled_for'' е прилагодена да биде M:N, овозможува еден CLASS да содржи повеќе (најмалку еден) TRAINING, а еден TRAINING да се појави во повеќе часови (или воопшто да не биде закажан). |
| 93 | |
| 94 | === Верзија 1 === |
| 95 | [[Image(BlissCoreDB_Scheme_1.png, 500px)]] |
| 96 | |
| 97 | ''Опис: Првична верзија со помошни ентитети за bookings, registrations итн.'' |