CSCI 466
Database Management Systems
Coordinator: Stephanie Schwartz
Credits: 4.0
Description
Introduction to software design using a relational database management system. Data modeling, data normalization, database and application design, foundations of relational implementation, SQL, embedded SQL, and web publishing of database contents. Offered periodically.
Prerequisites
C- or higher in CSCI 362.
Sample Textbooks
Course Outcomes
- Able to design databases using the entity-relationship model, the object-oriented model, and a case tool.
- Able to design databases using data normalization techniques.
- Able to convert designs from the entity-relationship model and the object-oriented model to the relation model.
- Able to implement a design using a relation database available on the departmental computer network.
- Able to create graphical user-interface in one of the host languages supported by the available relational database management system.
- Able to design batch and screen-oriented reports.
- Able to describe concepts of distribute processing.
Major Topics Covered
A. Introduction
- Example Databases
- The Relationship of Application Programs and DBMS
- Definition of a Database
- A Short History of Database Processing
- Object-oriented DBMS
B. Components of a Database System
- The Database
- Creating the Database
- Components of Applications
- Developing Databases
C. Data Modeling
- The Entity-Relationship Models
- Semantic Objects Model
- Type of Objects
- Object-oriented Programming and Semantic Objects
- Comparing the Semantic Objects and Entity-Relationship Model
D. Data Normalization
- The Relation Model
- First Through Fifth Normal Forms
- Domain/Key Normal Form
- The Synthesis of Relations
- Design Trade-offs
E. Database Design
- Database Design Using Entity-Relationship Model
- Transformation from Entity-Relationship Model to Relational Database Design
- Trees, Networks, and Bills of Materials
- Transformation of Semantic Objects to Relational Database Design
F. Application Design
- Case Application: A Personnel Database
- Characteristics of Database Applications
- Objects and View Materialization
- Form Design
- Report Design
- Application Program Design
G. Foundations of Relation Implementation
- Defining Relational Database
- Relational Data Manipulation
- Relational Algebra
H. Structured Query Language
- Creating a relational database
- Query a Single Table
- Queries Involving Multiple Tables
- Updating tables
- Creating User Views
- Advanced topics
I. Imbedding Structured Query Language in Host Languages
- Imbedding SQL code in a Host Language
- SQL Module Language
- Calling SQL Modules from a Host Language
J. Client Server and Related Applications
- Multi-user Database-processing Alternatives
- Resource Sharing
- Client Server Systems
- Oracle and Sybase
K. Distributed Processing
- Components of Distributed Database Systems
- Four Goals for a Distributed DBMS
- Distributed Concurrency Control
- Failure and Transparency
Sample Laboratory Projects
There are two kinds of lab projects: database design projects and programming projects. In design projects, the student creates database model for a specified problem using a design tool such as SALSA.
The programming projects are done in SQL and one of the high level languages such as C, Perl, or Java. In a closed lab session of two-hour time-slot, the student is asked to write several SQL queries against an existing database. The student is asked to write programs to access, update, retrieve data from an existing database using a high level language.
The following is a representative set of laboratories:
Lab#1: Database design using a CASE tool such as The Analyst or SALSA.
Lab#2: Practice writing interactive SQL queries using SELECT statement, and statistical functions.
Lab#3: Practice writing interactive SQL queries involving subqueries, and queries involving several tables.
Lab#4: Creating a database using CREATE TABLE command, and loading data into the database using INSERT command.
Lab#5: User-interface design using a host language.
Lab#6: Imbedding SQL queries in a host language.
Lab#7: Loading data into a database from files using programs written in a host language.