The following classes are taught using the latest release of Microsoft SQL Server. All classes involve extensive hands-on exercises.
DBTDD-SS-001: Introduction to Relational Databases
Covers the basics of relational database management systems (RDBMS). Topics include designing a database schema, normalization/de-normalization, constraints, physical and logical modeling, indexing and partitioning.
DBTDD-SS-101: Introduction to T-SQL Programming 1
This course covers writing T-SQL code to retrieve and modify data in MS SQL Server. Topics include the SELECT statement, expressions, joins, filters, grouping and aggregation. Additionally, students will learn how to write sotred procedures and functions, understand control flow and use built-in functions. Special focus is given to testing that code written actually works.
Prerequisite: Basic understanding of relational databases. Students should understand the following terminology: table, column, primary key, foreign key relationship, and data type.
DBTDD-SS-201: Database Test Driven Development 1
Test Driven Development (TDD) is a technique that can dramatically improve the design, quality and maintainability of software. This course introduces TDD, explains why it is difficult in the database and offers solutions to common database design and testing problems. tSQLt is used as a framework for writing automated unit tests. Topics include writing and organizing test cases, the impact of TDD on design, isolating tests from existing data and constraints and testing stored procedures, functions and views. Related test case heuristics will be introduced.
Prerequisite: Understanding of writing stored procedures, views and functions in T-SQL.
DBTDD-SS-202: Database Test Driven Development 2
Building on DBTDD-SS-201, this course covers intermediate Database TDD topics such as testing constraints, exceptions/error conditions, transactions, and date/time sensitive code. Related test case heuristics will be introduced.
DBTDD-SS-203: Database Test Driven Development 3
This course covers advanced Database TDD topics, including testing procedures with multiple result sets, testing console output, and the relationship between code complexity and test case design. An introduction is also provided on how to get existing, untested code under test.
DBTDD-SS-210: Test Case Heuristics
Test case heuristics are well studied techniques for identifying which conditions should be tested. This course provides an in-depth look at discovering which test cases are needed in a variety of situations. Some of the heuristics covered include: input and output class testing, boundary tests, zero-one-some, monkey testing and pairwise testing.
DBTDD-SS-301: Introduction to Database Refactoring
The design of existing systems must constantly evolve to enable new features to be added and defects to be corrected. This course discusses how to modify an existing database schema and supporting code, without breaking existing functionality. It also covers how to design database code that is easier to refactor in the future.
DBTDD-SS-302: Refactoring Monster Stored Procedures
Most legacy databases contain numerous stored procedures that developers think of as “monsters”. These procedures are difficult to understand and dangerous to modify. This advanced class teaches how to tame large, monolithic stored procedures. The result is the ability to add new functionality and fix defects in existing T-SQL code.
Prerequisite: DBTDD-SS-203 and DBTDD-SS-301