CPSC 343 Database Theory and Practice Fall 2017

CPSC 343 Course Information

On this page:

Course Description

Computer databases are used to store, organize, and retrieve large collections of information. This course introduces the theory and practice of relational databases and relational database management systems (RDBMS). Topics include data modeling and database design, query languages (SQL), and elements of RDBMS implementation such as file structure and data storage, indexing, and query evaluation. Additional topics may include Web-based access to databases, transaction management, reliability, security, and object-oriented databases.

By the end of the course, the successful student should be able to:

  • analyze and model the data needs of a real-world situation
  • use a relational database management system to effectively store and access data
  • construct a Web application to access a database
  • explain how relational database systems store information and process queries, and apply that knowledge to increasing database performance

Course Content and Objectives

This course, like many of the other 300- and 400-level computer science courses, explores a particular subdiscipline of computer science. Many aspects of modern society and commerce involve the management of large quantities of data, so databases are a crucial component of computer systems. Furthermore, the study of database systems brings together many areas of computer science (theory, data structures, algorithms, parallel computing, user interfaces, and more); it is particularly nice as an application of theoretical computer science topics.

The course material can be divided into five sections:

Introduction to Databases: The course starts with an introduction to databases, database management systems, and information management concepts.


  • explain what distinguishes the database approach from programming with data files
  • describe the components of a database system

Data Modeling and Database Design: A database is a structured collection of information; data modeling deals with capturing and expressing that structure. A well-designed database based is easier to query, maintain, and extend. This section of the course will address the process of going from specifications to a collection of tables and columns; specific topics include the entity-relationship (ER) model for data modeling, the relational model, ER-to-relational mapping, and principles of database design.


  • define the concept of data independence and explain its importance
  • explain the difference between different types of data models, such as conceptual data model, physical data model, and representational data model
  • be conversant in the terminology of the ER model
  • be conversant in the terminology of relational databases
  • identify the requirements of real-world situations
  • create ER diagrams to model the entities, relationships, and constraints of real-world situations
  • explain the tradeoffs in modeling in a certain way (e.g. entity vs. attribute) and when to pick what
  • create a relational schema from an ER model
  • identify and employ principles of good design

Query Languages: SQL is the standard language for working with relational database management systems, and this part of the course will introduce SQL for data definition, queries, and data manipulation.


  • create relational database schemas in SQL demonstrating appropriate choices of data types and which incorporate key, entity integrity, and referential integrity constraints
  • express queries in SQL, and explain what queries expressed in SQL do
  • use INSERT, UPDATE, and DELETE statements to manipulate data
  • define views, and explain their purpose

Database-Driven Applications: A database doesn't just sit by itself - application programs access the information stored in the database. This section of the course will introduce technologies for constructing an application that interacts with a database (HTML/PHP/mysqli or Java/JDBC) as well as the privacy and security issues that become relevant when the outside world gets involved.


  • explain how a three-tier application works and what technologies address what aspects of the system
  • be conversant in the technologies introduced (i.e. be able to read and understand source code, modify an example to suit a similar purpose, and create basic examples from scratch)
  • explain issues relating to security and address how to address them
  • explain what stored routines are and give examples of when to use them
  • explain what assertions and triggers are and give examples of when to use them
  • implement a robust, secure application which provides a basic, user-friendly interface and interacts with a database

Database Management Systems and Database Tuning: The last portion of the course will look at the software systems that make databases happen - the database management systems themselves. The goal is to make the student an informed user of database management systems by understanding some of the factors that affect performance and what control the database administrator/user has over these factors. Specific topics include file structure and data storage, indexing, and query evaluation.


  • be conversant in the terminology
  • explain how information is stored in a computer system, and what issues are relevant to performance
  • compare and contrast methods for indexing, and explain when they should be used
  • produce a set of plans for a moderately complex query, and evaluate which is the most efficient
  • use SQL to create and manipulate indexes


CPSC 225 is required.
Your familiarity with one programming language (Java), with using typical programming constructs to solve problems, and, more generally, with "thinking like a programmer" will help you pick up the new languages (SQL, HTML, PHP) used in this course. In addition, Java may optionally be used for the course project.

CPSC 229 is recommended.
Relational databases are all about relations, a topic introduction in CPSC 229, and there is a great deal of theory underlying the design of relational databases and query languages for those databases. The necessary material will be introduced in this course, but previous exposure to the theoretical side of computer science is useful.


There is no textbook to purchase. Material will be handed out in class and/or posted on the course webpage. In addition, the 5th edition of Fundamentals of Database Systems by Elmasri and Navathe has been placed on reserve in the library for reference; relevant sections will be noted as appropriate.


You will be interacting with servers set up on a machine running within the department. All of the client software needed for this course is available on the Linux machines in Lansing 310 and Rosenberg 009. If you would like to use your own computer, check back for information on how to set it up.

Valid HTML 4.01!