= ЕР Дијаграм = [[Image(BlissCoreDB_Scheme_2.png, 500px)]] ---- == Податочни побарувања == === Ентитети === 1. **USER** – ентитет кој чува податоци за крајните корисници (клиенти). - user_id (primary key, bigint) - username (string, задолжително) - email (string, задолжително) - password_hash (string, задолжително) - (други полиња по потреба, пример first_name, last_name) 2. **INSTRUCTOR** – ентитет кој чува податоци за инструктори. - instructor_id (primary key, bigint) - first_name (string, задолжително) - last_name (string, задолжително) - biography (text, опционално) 3. **TRAINING** – ентитет кој чува податоци за различни типови јога тренинзи (Vinyasa, Hatha итн.). - training_id (primary key, bigint) - training_name (string, задолжително) - description (text, опционално) - duration (int, опционално) - intensity_level (string, опционално) 4. **CLASS** – ентитет кој чува податоци за закажани часови во распоред. - class_id (primary key, bigint) - date (date, задолжително) - start_time (time, задолжително) - end_time (time, задолжително) - location (string, задолжително) - capacity (int, опционално) - seats_available (int, опционално) 5. **EVENT** – ентитет кој чува податоци за специјални настани (workshops, retreats). - event_id (primary key, bigint) - event_name (string, задолжително) - description (text, опционално) - date (date, задолжително) - time (time, задолжително) - location (string, задолжително) 6. **PACKAGE** – ентитет кој чува податоци за пакети (e.g., “5-Class Pass”). - package_id (primary key, bigint) - package_name (string, задолжително) - price (decimal, задолжително) - num_classes (int, задолжително) 7. **MERCH_ITEMS** – ентитет кој чува податоци за јога опрема (мерч). - merch_id (primary key, bigint) - item_name (string, задолжително) - description (text, опционално) - price (decimal, задолжително) - quantity_in_stock (int, опционално) ---- === Релации === 1. **books** – релација помеѓу USER и CLASS (M:N). Означува дека еден корисник може да букира повеќе часови, а еден час може да биде букиран од повеќе корисници. 2. **teaches** – релација помеѓу INSTRUCTOR и CLASS (1:N). Означува кој инструктор го предава одреден час. Секој час мора да има точно еден инструктор, а еден инструктор може да предава повеќе часови. 3. **is_scheduled_for** – релација помеѓу CLASS и TRAINING (M:N). Еден час може да содржи повеќе (најмалку еден) тренинзи (комбинирана сесија), а еден тренинг може да се појави во повеќе часови или воопшто да не биде закажан. 4. **registers** – релација помеѓу USER и EVENT (M:N). Корисниците се регистрираат за специјални настани. 5. **buys** – релација помеѓу USER и PACKAGE (M:N). Означува купување пакети. 6. **purchases** – релација помеѓу USER и MERCH_ITEMS (M:N). Означува дека корисниците можат да купуваат јога опрема. 7. **is_for** – релација помеѓу PACKAGE и CLASS (M:N). Означува кои часови ги содржи еден пакет. Еден пакет мора да има барем еден час, а еден час може да биде дел од ниту еден или повеќе пакети. ---- == Историјат == === Верзија 2 === '''[[BlissCoreDB_Scheme_2.png]]''' Промени во однос на Верзија 1: - Релацијата ''is_for'' сега е помеѓу PACKAGE и CLASS... - Релацијата ''is_scheduled_for'' е прилагодена да биде M:N... === Верзија 1 === '''[[BlissCoreDB_Scheme_1.png]]''' ''Опис: Првична верзија''