Home Task 1 Task 2 Task 3 Task 4
Task 1 - Database Design

Task 1 - Database Design Analysis

1(a) - Database Table Analysis

Table: Modules

Entity: Represents academic modules/courses offered by the institution.

ColumnTypeKey
moduleIDINTPRIMARY KEY
moduleCodeVARCHAR(20)
moduleNameVARCHAR(100)

Table: Lecturers

Entity: Represents lecturers/academic staff members.

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

Table: Roles

Entity: Represents different roles that lecturers can have for modules.

ColumnTypeKey
roleIDINTPRIMARY KEY
roleNameVARCHAR(50)
roleDescriptionTEXT

Table: ModuleLecturerRole

Entity: Junction/associative table linking modules, lecturers, and their roles.

ColumnTypeKey
moduleLecturerRoleIDINTPRIMARY KEY
moduleIDINTFOREIGN KEY (references Modules)
lecturerIDINTFOREIGN KEY (references Lecturers)
roleIDINTFOREIGN KEY (references Roles)

Primary and Foreign Keys Summary:

1(b) - Events Registration Database Design

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:

Users Table

ColumnData TypeKey
userIDINTPRIMARY KEY (AUTO_INCREMENT)
usernameVARCHAR(50)UNIQUE
emailVARCHAR(100)UNIQUE
passwordVARCHAR(255)
fullNameVARCHAR(100)

Events Table

ColumnData TypeKey
eventIDINTPRIMARY KEY (AUTO_INCREMENT)
eventNameVARCHAR(100)
eventDateDATETIME
locationVARCHAR(200)
descriptionTEXT
capacityINT

EventRegistrations Table (Junction Table)

ColumnData TypeKey
registrationIDINTPRIMARY KEY (AUTO_INCREMENT)
userIDINTFOREIGN KEY (references Users.userID)
eventIDINTFOREIGN KEY (references Events.eventID)
registrationDateDATETIME
statusVARCHAR(20)

Relationships:

SQL Creation 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)
);