Course Description
This course introduces database management systems as a class of software systems. Students will study and gain experience with two of todays dominant types of database management systems: Relational Database Management Systems (RDBMS) and Non-Relational or NoSQL databases. The goal is to prepare students to analyze the requirements of a given applicaton and select the appropriate type of database, and to gain competentency in the major features of each.
Topics covered for RDBMS include history of RDBMS, relational algebra, SQL, stored procedures, user-defined functions, cursors, embedded SQL programs, client-server interfaces, entity-relationship diagrams, normalization, B-trees, concurrency, transactions, databasesecurity, constraints, and performance tuning issues.
Topics covered for NoSQL databaess include the property-oriented and "schema-less" data representation, compromises made to consistency (in the sense of the CAP theorem) in favor of availability, partition tolerance, and speed, the lack of ACID transactions in many implementations, and the concept of "eventual consistency."
Finally the course looks at common issues such as replication and distribution, and how each database supports specialized data representations such as object-relational mapping, spatial, text XML conversion, and time series representations
This course offers a number of opportunities for hands-on problem solving using a simple embbedded SQL database, a traditional client-server database, and a popular NoSQL database system.
Prerequisites
The course assumes a moderate level of progrmamming skill. The RDMS portion of the course will require a basic knowledge of Java, and the NoSQL portion will require a basic knowledge of JavaScript/ECMScript 6 or greater. You will be responsible for acquiring sufficient knowledge on your own, with the help of supplimental readings, and familiarity with similar languages.