Spring 2018


Most applications written today rely on direct interaction with a relational database. If you end up working in the software industry you will almost certainly be querying, populating, maintaining or designing a database. In many of those cases, you will be saddled with choices made by developers and users who did not understand the principles of data modeling and database design. This course introduces the student to those principles and the structured query language (SQL).

Beyond learning the theory behind database systems, we will be doing projects and smaller assignments using PostgreSQL, an industrial-strength relational database management system. You will access PostgreSQL on one of the department servers via your preferred database client (although I recommend psql). Detailed instructions will be given in class. By default, you must access the database from an on-campus address. You are welcome (and encouraged) to install and use PostgreSQL on your own machines but assigments and projects must be completed on the designated system.

The effort needed for the individual database project will probably be roughly evenly divided between database design, SQL coding, data collection and massaging, and web interface coding. Conventional wisdom suggests that you select a project topic about which you are personally interested. The project will be much more fun this way and you will probably learn more.


Students successfully completing the course, will demonstrate understanding of (among other skills and knowledge):

  1. domain data modeling. starting with a problem domain, how to design a data model that is faithful to the properties and constraints of the domain. the model will be represented using entity-relationship diagrams.
  2. relation schema. how to convert a data model as E/R diagram into a relation schema with an awareness of relevant functional dependencies and how to normalize the relation schema into one of several standard forms.
  3. database schema. how to create tables in a relational database based on a relation schema and how to populate those tables with data. how to write triggers and functions.
  4. query data. how to use SQL to query the information that resides in a data base.
  5. web-based application. how to design and implement a web-based application interface to a database.

Course Materials