[Home] [T1] [T2] [T3] [T4]
Task 1 - Database Design

◈ TASK_01 // DATABASE DESIGN

[ ANALYSIS & ERD ]

// 1(a) TABLE ANALYSIS

▸ Modules

Entity: Academic modules/courses

ColumnTypeKey
moduleIDINTPRIMARY
moduleCodeVARCHAR(20)
moduleNameVARCHAR(100)

▸ Lecturers

Entity: Academic staff members

ColumnTypeKey
lecturerIDINTPRIMARY
firstNameVARCHAR(50)
lastNameVARCHAR(50)
emailVARCHAR(100)

▸ Roles

Entity: Lecturer roles for modules

ColumnTypeKey
roleIDINTPRIMARY
roleNameVARCHAR(50)
roleDescriptionTEXT

▸ ModuleLecturerRole

Entity: Junction table (Many-to-Many)

ColumnTypeKey
moduleLecturerRoleIDINTPRIMARY
moduleIDINTFOREIGN → Modules
lecturerIDINTFOREIGN → Lecturers
roleIDINTFOREIGN → Roles

▸ Key Summary

// 1(b) EVENTS REGISTRATION

Users userID(PK) | username | email | password | fullName
EventRegistrations registrationID(PK) | userID(FK) | eventID(FK) | registrationDate | status
Events eventID(PK) | eventName | eventDate | location | description | capacity

▸ Table Definitions

TablePKFK
UsersuserID
EventseventID
EventRegistrationsregistrationIDuserID, eventID

▸ Relationships

▸ SQL Script

CREATE TABLE Users (
    userID INT AUTO_INCREMENT PRIMARY KEY,
    username VARCHAR(50) UNIQUE NOT NULL,
    email VARCHAR(100) UNIQUE NOT NULL,
    password VARCHAR(255) NOT NULL,
    fullName VARCHAR(100) NOT NULL
);

CREATE TABLE Events (
    eventID INT AUTO_INCREMENT PRIMARY KEY,
    eventName VARCHAR(100) NOT NULL,
    eventDate DATETIME NOT NULL,
    location VARCHAR(200) NOT NULL,
    description TEXT,
    capacity INT DEFAULT 0
);

CREATE TABLE EventRegistrations (
    registrationID INT AUTO_INCREMENT PRIMARY KEY,
    userID INT NOT NULL,
    eventID INT NOT NULL,
    registrationDate DATETIME DEFAULT CURRENT_TIMESTAMP,
    status VARCHAR(20) DEFAULT 'Registered',
    FOREIGN KEY (userID) REFERENCES Users(userID) ON DELETE CASCADE,
    FOREIGN KEY (eventID) REFERENCES Events(eventID) ON DELETE CASCADE,
    UNIQUE KEY unique_registration (userID, eventID)
);
// CODE DISPLAY