Massachusetts Institute of Technology
Department of Urban Studies and Planning


11.521: Spatial Database Management and Advanced Geographic Information Systems
11.523: Fundamentals of Spatial Database Management

Problem Set C: Relational Database Design

Out: 15 March 2018 || Due: 23 March 2018


Overview: In this problem set you will: Construct a relational database design for a generic housing authority

The Database Design

Imagine you work for the public housing agency of a city, and you have been charged with keeping track of who is living in the agency's apartments over time. To help you in this task, you have decided to use a relational database for your record keeping. Your task is to design a database that allows you to capture the facts described below: You will invent data for the three developments; two units in each development; and three families, one with 2 members, one with 3 members, and one with 4 members. Include records for each housing unit and household tracking the occupancy of each housing unit during a hypothetical period beginning January 1, 2014, through the current time. Assume that all 6 housing units are empty but ready for occupancy on day 1. Move your three families in at varying times and account for at least one move to another of the 6 housing units between then and now. You may insert these data records into your database using INSERT statements.

You may be interested to know that this assignment was originally inspired by records kept by the Boston Housing Authority (during the late 1990s) about their developments. This type of problem has definite real-world importance. The BHA is big enough to (eventually) hire consultants to design and implement their tenant tracking system, but many smaller non-profits and community groups face similar data management problems (with time-varying data and one-to-many relationships) in order to track their clients, projects, funding sources, workshops, etc. A little relational thinking about how to structure the data can greatly facilitate data maintenance, data integrity, and the practicality of subsequent program analysis.

The Process

Follow this process while designing your database. Keep in mind that there is not single 'right' answer (but lots of wrong ones). Also, you may think of complexities that go far beyond what you need to think about for the purpose of this homework set. For example, don't worry about how to record births/deaths over time, renovations that change the size and attributes of apartments, etc.. Focus on a schema that handles the basics by recording the basic characteristics of housing units and individuals and keeping track of which households occupy which units over time. The goal is to have a relational schema that handles one-to-many and many-to-many relationships appropriately and supports SQL queries that can answer basic questions like, "Was household X ever in Unit Y?" or "Has Individual Z ever lived in more than one housing unit?" or "What is the vacancy rate for a development during the past two years?" or "How many households have lived in their current housing unit for more than two years?"

What to Turn In

The breakdown of point values for this assignment is as follows: Turn in your username_dbschema.sql, username_dbschema_log.txt, username_dbinsert.sql, username_dbinsert_log.txt, and the entity relationship diagrams files. Upload your answers to Stellar. The assignment is due at 5PM on Friday, March 23, 2018. This is the last assignment for those who are taking only the 11.523 first half of the semester-long 11.521 class.

Home | Syllabus | Lectures | Labs | CRN | MIT

For more information about this page, please contact the 11.521 Staff Mailing List <11.521staff@MIT.EDU>.
Created 5 November 1998 by Tom Grayson and Joe Ferreira; Last Modified: 14 March 2018 [rb]