0% found this document useful (0 votes)
36 views

Case Study - 2 DBMS

Database Management System Practical

Uploaded by

radhikaarora366
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
36 views

Case Study - 2 DBMS

Database Management System Practical

Uploaded by

radhikaarora366
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 4

Case Study 2: Fitness Center Management System

Scenario: You are managing a database for a fitness center. The database tracks members, classes,
trainers, and attendance.

Tables:
• Members (MemberID, Name, JoinDate, MembershipType)
• Classes (ClassID, ClassName, TrainerID, Schedule)
• Trainers (TrainerID, Name, Specialization)
• Attendance (AttendanceID, MemberID, ClassID, AttendanceDate)

Questions:

1. Create the Members, Classes, Trainers, and Attendance tables.


CREATE TABLE Members (
MemberID INT PRIMARY KEY,
Name VARCHAR(100),
JoinDate DATE,
MembershipType VARCHAR(50)
);

CREATE TABLE Classes (


ClassID INT PRIMARY KEY,
ClassName VARCHAR(100),
TrainerID INT,
Schedule DATE,
FOREIGN KEY (TrainerID) REFERENCES Trainers(TrainerID)
);

CREATE TABLE Trainers (


TrainerID INT PRIMARY KEY,
Name VARCHAR(100),
Specialization VARCHAR(100)
);

CREATE TABLE Attendance (


AttendanceID INT PRIMARY KEY,
MemberID INT,
ClassID INT,
AttendanceDate DATE,
FOREIGN KEY (MemberID)
REFERENCES Members(MemberID),
FOREIGN KEY (ClassID) REFERENCES Classes(ClassID))
2. Alter Trainer table and add one more column of your own choice
ALTER TABLE Trainers ADD PhoneNumber VARCHAR(15);

3. Insert sample data into each table (at least 5 records per table).
-- Insert into Members table
INSERT INTO Members (MemberID, Name, JoinDate, MembershipType)
VALUES
(1, 'John Doe', '2023-01-01', 'Standard'),
(2, 'Jane Smith', '2023-02-10', 'Premium'),
(3, 'Mike Brown', '2023-03-05', 'Standard'),
(4, 'Sarah Johnson', '2023-04-20', 'Basic'),
(5, 'Emily Davis', '2023-05-18', 'Premium');

-- Insert into Trainers table


INSERT INTO Trainers (TrainerID, Name, Specialization, PhoneNumber)
VALUES
(1, 'Tom Coach', 'Yoga', '555-1234'),
(2, 'Alice Trainer', 'Pilates', '555-2345'),
(3, 'Jack Fitness', 'Strength Training', '555-3456'),
(4, 'Linda Active', 'Cardio', '555-4567'),
(5, 'Mark Flex', 'Dance', '555-5678');

-- Insert into Classes table


INSERT INTO Classes (ClassID, ClassName, TrainerID, Schedule)
VALUES
(1, 'Yoga', 1, '2024-09-01'),
(2, 'Pilates', 2, '2024-09-03'),
(3, 'Strength Training', 3, '2024-09-05'),
(4, 'Cardio', 4, '2024-09-07'),
(5, 'Dance', 5, '2024-09-09');

-- Insert into Attendance table


INSERT INTO Attendance (AttendanceID, MemberID, ClassID, AttendanceDate)
VALUES
(1, 1, 1, '2024-09-01'),
(2, 2, 1, '2024-09-01'),
(3, 3, 2, '2024-09-03'),
(4, 4, 3, '2024-09-05'),
(5, 5, 4, '2024-09-07');

4. Update the MembershipType of a member with MemberID = 4 to 'Premium'.


UPDATE Members
SET MembershipType = 'Premium'
WHERE MemberID = 4;

5. Delete all classes scheduled before the current date.


DELETE FROM Classes
WHERE Schedule < CURDATE();

6. Find the total number of members.


SELECT COUNT(*) AS TotalMembers FROM Members;

7. Find the max number of attendees for class.


SELECT ClassID, COUNT(MemberID) AS NumberOfAttendees
FROM Attendance
GROUP BY ClassID
ORDER BY NumberOfAttendees DESC
LIMIT 1;

8. Retrieve the names of members who have attended more than 5 classes.
SELECT m.Name
FROM Members m
JOIN Attendance a ON m.MemberID = a.MemberID
GROUP BY m.MemberID
HAVING COUNT(a.AttendanceID) > 5;

9. List the classes that have been attended by members with 'Premium' membership.
SELECT c.ClassName
FROM Classes c
JOIN Attendance a ON c.ClassID = a.ClassID
JOIN Members m ON a.MemberID = m.MemberID
WHERE m.MembershipType = 'Premium';

10. List all classes along with the names of the trainers conducting them.
SELECT c.ClassName, t.Name AS TrainerName
FROM Classes c
JOIN Trainers t ON c.TrainerID = t.TrainerID;

11. Retrieve the trainer name of Trainer using IN & BETWEEN CLAUSE
SELECT Name
FROM Trainers
WHERE TrainerID IN (1, 2, 3)
AND TrainerID BETWEEN 1 AND 3;

12. Retrieve the names of members who attended 'Yoga' classes


SELECT m.Name
FROM Members m
JOIN Attendance a ON m.MemberID = a.MemberID
JOIN Classes c ON a.ClassID = c.ClassID
WHERE c.ClassName = 'Yoga';

13. Display all classes that have been attended by members with 'Premium' membership (use
UNION).
SELECT c.ClassName
FROM Classes c
JOIN Attendance a ON c.ClassID = a.ClassID
JOIN Members m ON a.MemberID = m.MemberID
WHERE m.MembershipType = 'Premium'
UNION
SELECT c.ClassName
FROM Classes c
JOIN Attendance a ON c.ClassID = a.ClassID
JOIN Members m ON a.MemberID = m.MemberID
WHERE m.MembershipType = 'Premium';

14. Find members who have attended all classes available (use INTERSECT).
SELECT m.Name
FROM Members m
JOIN Attendance a ON m.MemberID =
a.MemberID
JOIN Classes c ON a.ClassID = c.ClassID
GROUP BY m.Name

HAVING COUNT(DISTINCT c.ClassID) =


(SELECT COUNT(ClassID) FROM Classes)
INTERSECT
SELECT m.Name
FROM Members m;

15. Combine the table Class and Trainer


through ArtistID (use JOIN).

SELECT c.ClassName, t.Name As


TrainerName FROM Classes c JOIN Trainers
t ON c.TrainerID = t.TrainerID;

You might also like