| | 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 итн.'' |