Chapter 14 - Databases

One-stop information center for your next technical interview


Chapter 14 - Databases

  • Difference between JOIN, INNER JOIN, NATURAL JOIN, LEFT OUTER JOIN, RIGHT OUTER JOIN, FULL OUTER JOIN
  • Normalized databases are designed to minimize redundancy, while denormalized databased are designed to optmize query (especially read) time (which would create redundancy).
  • We are in favor of PostgreSQL dialect here.

Exercises

14.0 Schooling

SELECT DISTINCT s.StudentID, s.StudentName, (
	SELECT COUNT(DISTINCT e.CourseID)
	FROM StudentCourses e
	WHERE e.StudentID = s.StudentID
) AS count
FROM Students s;
WITH CourseSize AS (
	SELECT DISTINCT c.CourseID, c.TeacherID, (
		SELECT COUNT(DISTINCT e.StudentID)
		FROM StudentCourses e
		WHERE e.CourseID = c.CourseID
	) AS size
	FROM Courses c
)
SELECT DISTINCT t.TeacherID, t.TeacherName, (
	SELECT SUM(s.size)
	FROM CourseSize s
	WHERE s.TeacherID = t.TeacherID
) AS num
FROM Teachers t
ORDER BY num DESC;

14.1 Multiple Apartments

SELECT m1.TenantID
FROM AptTenants m1, AptTenants m2
WHERE m1.TenantID = m2.TenantID AND m1.AptID <> m2.AptID;

14.2 Open Requests

SELECT *
FROM Apartments a, Buildings b, Requests r
WHERE a.BuildingID = b.BuildingID AND a.AptID = r.AptID and r.Status = 'Open';

14.3 Close All Requests

UPDATE Requests r
SET r.Status = 'Closed'
WHERE r.AptID IN (
	SELECT a.AptID
	FROM Apartments a
	WHERE a.BuildingID = 11
);

14.4 Joins

Inner join, natural join, left/right/full outer join, anti-join, semi-join.

14.5 Denormalization

Flatten data structure.

14.6 Entity-Relationship Diagram

Companies and people are associated by professionals.

14.7 Design Grade Database

Students, Courses, Enrollments.