= Conceptual Design – ER Diagram and Data Requirements = == ER Diagram == [[Image(ЕR.jpg, 1000px)]] == Data Requirements == === Entities === * **User: Entity representing all users who access the platform (students / learners).** * User_ID – INT (PRIMARY KEY) * First_Name – VARCHAR * Last_Name – VARCHAR * Email – VARCHAR(unique) * Password – VARCHAR * **Administrator: Entity representing instructors who create and manage educational content.** * Admin_ID – INT (PRIMARY KEY) * Admin_Level – VARCHAR * **Instructor: Entity representing instructors who upload and manage course materials.** * Instructor_ID – INT (PRIMARY KEY) * BIO – VARCHAR * Ekspertise – VARCHAR * **Course: Entity representing the courses offered on the platform.** * Course_id – INT (PRIMARY KEY) * Certificate – VARCHAR * Name – VARCHAR * Price – Decimal * status – VARCHAR * **Enrollment: Entity representing the enrollment of a user in a course.** * Enrollment_id – INT (PRIMARY KEY) * Enroll_date – DATE * Completion_Status – VARCHAR * Progress_percentage – INT * **Payment: Entity representing financial transactions.** * Payment_ID – PRIMARY KEY * Amount – DECIMAL * **SubscriptionPlan: Entity representing available subscription plans.** * Plan_ID – INT (PRIMARY KEY) * Name – VARCHAR * Price – DECIMAL * Duration_months – INT * Description – VARCHAR * Access_type – VARCHAR * **Certificate: Entity representing certificates issued after course completion.** * Certificate_id – INT (PRIMARY KEY) * Issue_date – DATE * Certificate_code – VARCHAR * Status – VARCHAR * **UserSubscription: Entity representing active subscriptions of users.** * Subscription_ID – INT (PRIMARY KEY) * Start_date – DATE * End_date – DATE * Status – VARCHAR * **SupportTicket: Entity representing user support requests.** * Ticket_ID – INT (PRIMARY KEY) * Subject – VARCHAR * Description – VARCHAR * Status – VARCHAR * Created_at – DATE * **Category: Entity representing course classification.** * Category_ID – INT (PRIMARY KEY) * Name – VARCHAR * Description – VARCHAR * **Module: Entity representing logical subdivisions of a course.** * Мodule_id – INT (PRIMARY KEY) * Тitle – VARCHAR * Description – VARCHAR * **Lesson: Entity representing individual learning units.** * Lesson_ID – INT (PRIMARY KEY) * Тitle – VARCHAR * Material – VARCHAR * **Quiz: Entity representing assessments associated with lessons.** * Quiz_ID – INT (PRIMARY KEY) * Total_points – INT * Passing_score – INT === Relationships === * '''belongs_to''' - 1:N релација која ги поврзува ентитетите Product и Category. Еден продукт може да припаѓа само на една категорија, а една категорија може да има повеќе продукти. * '''supplied_by''' - 1:N релација која ги поврзува ентитетите Product и Supplier. Еден продукт може да се добавува од еден добавувач, а еден добавувач може да добавува повеќе продукти. * '''holds''' - 1:N релација која ги поврзува ентитетите Warehouse и !WarehouseStock. Едно складиште може да има повеќе запасни ставки, а една запасна ставка припаѓа на едно складиште. * '''has_stock_in''' - 1:N релација која ги поврзува ентитетите Product и !WarehouseStock. Еден продукт може да има запас во повеќе складишта, а една запасна ставка е за еден продукт. * '''made_by''' - 1:N релација која ги поврзува ентитетите Sale и User. Една продажба е направена од еден корисник, а еден корисник може да направи повеќе продажби. * '''made_for''' - 1:N релација која ги поврзува ентитетите Sale и Customer. Една продажба е за еден клиент, а еден клиент може да има повеќе продажби. * '''contains''' - 1:N релација која ги поврзува ентитетите Sale и !SaleItem. Една продажба содржи повеќе ставки, а една ставка припаѓа на една продажба. * '''includes_product''' - 1:N релација која ги поврзува ентитетите !SaleItem и Product. Една ставка во продажба е за еден продукт, а еден продукт може да биде во повеќе ставки. * '''placed_to''' - 1:N релација која ги поврзува ентитетите !PurchaseOrder и Supplier. Една нарачка е кон еден добавувач, а еден добавувач може да прими повеќе нарачки. * '''includes_item''' - 1:N релација која ги поврзува ентитетите !PurchaseOrder и !PurchaseOrderItem. Една нарачка содржи повеќе ставки, а една ставка припаѓа на една нарачка. * '''orders''' - 1:N релација која ги поврзува ентитетите !PurchaseOrderItem и Product. Една ставка во нарачка е за еден продукт, а еден продукт може да биде во повеќе ставки. * '''shipped_from''' - N:1 релација која ги поврзува ентитетите Sale и Warehouse. Повеќе продажби можат да бидат испратени од едно складиште. * '''received_at''' - N:1 релација која ги поврзува ентитетите !PurchaseOrder и Warehouse. Повеќе нарачки можат да бидат примени во едно складиште.