= ЕР Дијаграм = [[Image(BlissCoreDB_Scheme_current.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) Пакет мора да содржи барем еден час; еден час може да биде дел од 0 или повеќе пакети. ---- == Историјат == === Верзија 2 === [attachment:BlissCoreDB_Scheme_2.png BlissCoreDB_Scheme_2.png] ''Опис: Измени од претходната верзија:'' - Релацијата ''is_for'' сега е помеѓу PACKAGE и CLASS (наместо PACKAGE и TRAINING). - Релацијата ''is_scheduled_for'' е M:N, дозволува еден CLASS да содржи повеќе TRAINING. === Верзија 1 === [attachment:BlissCoreDB_Scheme_1.png BlissCoreDB_Scheme_1.png] ''Опис: Првична верзија''