Databases

Title Databases (53001)
Quarter Spring 2018
Instructor Nicholas Ryan Flees (nickflees@cs.uchicago.edu)
Website

Syllabus

Course Description

In this course students will learn database design and development and will build a simple but complete web application powered by a relational database. We start by showing how to model relational databases using the prevailing technique for conceptual modeling: Entity-Relationship Diagrams (ERD). Concepts covered include entity sets and relationships, entity keys as a unique identifier for each object in an entity set, one-one, many-one, and many-many relationships as well as translational rules from conceptual modeling (ERD) to relational table definitions. We also examine the relational model and functional dependencies and their application to the methods for improving database design: normal forms and normalization.

After design and modeling, students will learn the universal language of relational databases: SQL (Structured Query Language). We start by introducing relational algebra, the theoretical foundation of SQL. Then we examine in detail the two aspects of SQL: data definition language (DDL) and data manipulation language (DML). Concepts covered include subqueries (correlated and uncorrelated), aggregation, various types of joins (including outer joins and syntax alternatives), functions and stored procedures. 

Students will gain significant experience with writing and reading SQL queries throughout the quarter through the in-class discussions, online homework and the development of their real-world individual project. Some web development will be required in order to provide experience with web connectivity and data manipulation for the web.

Finally, we will provide an overview of related topics such as data warehousing, big data and NoSQL databases.

Course Contents

    Entity-Relationship model and design

    Database design

    Relational model

    Functional dependencies

    Normal forms and normalization

    Relational algebra

    SQL: Schema definition, Simple queries

    Subqueries, Aggregation, Modifications

    Joins, Views, Indexing, Constraints  

    Transactions, ACID properties

    Authorization

    Triggers

    Stored procedures

    Database connectivity

    Basic web programming

    Data warehousing overview

    Big data

    NoSQL


Coursework

    Homework (weekly) (~15%)

    Multi-part project (weekly)  (~50%)

    Midterm (~30%)

    Class participation (~5%)

 

Recommended Textbooks

A First Course in Database Systems (3rd ed.), by J. Ullman and J. Widom. http://www.amazon.com/gp/product/013600637X

Prerequisites (Courses)

Core Programming (completed or concurrently enrolled)

Prerequisites (Other)

Satisfies

Core Systems

Time

Wednesday 5:30-8:30pm

Location

Ryerson 277