Welcome to Debtech International


Onsite Seminar

Advanced Agile Data Modeling


This course combines sophisticated data modeling practices with the principles of agile development. Agile databases are iterative, collaborative and evolutionary. The business requirements that they must solve are not always simple. Inevitably, there are demanding problems that the data modeler must address, such as the use of abstraction. In this course you will learn various ways to handle complex subtypes, ragged hierarchies, different entity roles, time and history Time and history are not as simple as type 1, type 2 and types 3. There at least seven different types of history that a data modeler might be confronted with.

The course will show that the characteristics of “iterative, collaborative and evolutionary” are natural and inherent characteristics of data modeling. But it will also show how to achieve them. Data models need to be created quickly enough to satisfy the rapid-paced delivery schedule of the business and to conform to agile principles. This is true even when the business problem is difficult. Conversely, databases must be designed and built in a way that delivers maximum business value. Sometimes business requirements are complex. This course teaches you how to address them.

Data models should also enable data reuse. Rigid databases will interfere with long term business agility. So will unnecessary redundancy across databases. Such parochial databases interfere with business growth and agility. How do you avoid building rigid data structures? How flexible should the data model be? What are the consequences of building a database that is so rigid in its structure that refactoring is not an option? What are the consequences when the only solution is to drop multiple tables, alter them and they re-populate them? Is this refactoring or major maintenance? What consequences will this have on SQL code? What if these tables have several billion rows? A data model that is delivered at rocket speeds but fails to satisfy the business requirement, or one that is horrendous to modify, is of little benefit. The class will teach how you can use agile methods to transition rapidly from model to database.

How do you satisfy all of these requirements -- even when the business subject matter is complicated? To produce a good data model requires collaboration among the data modeler, the subject matter experts, the developers and the database administrator. This course, applicable to experienced data modelers, will explain how to create and build high-quality, high-value databases within an agile timeframe and context. It will explain what a data model is, what its main components are, how to produce a good one, and how to do so with maximum agility. It provides criteria for determining when it is best to go ahead and build the data base and when it is better to do further data model validation. It will explain how and why you can work with application developers and other stakeholders, examine critical issues in agile development and data management, and describe how developers and data professionals can work together to make agile projects successful while delivering maximum-benefit data to the business.

This course is not just on agile methods. It is about advanced data modeling. More correctly it is about dealing with difficult data modeling situations and still delivering with agility. It contains many different exercises, adapted from real life experiences. The exercises are intended to challenge the skills of the data modeler. This is a workshop and relies on realistic exercises. You will learn how to apply leading edge data modeling principles to practical and difficult modeling situations in an agile environment. All of the exercises have been derived from real modeling situations.

Course Outline

Review of Data Modeling

  • Definition of data modeling
  • Definition of agile principles
  • The benefits of agile data modeling
  • How agile principles are pertinent to data modeling
    • Entity
    • Attribute
    • Relationship
    • Constraint
    • Object identity and granularity
    • Primary keys
      • Natural
      • Compound
      • Surrogate
      • Foreign keys (use them or not?)
  • Domain
  • Data classes
  • Derived data
  • Metadata guidelines
  • [Exercise]

Normalization

  • The basic three forms of normalization
  • What is quick normal form?
  • How do real data modelers deal with normalization?
  • Fourth, fifth and Boyce Code normal forms (Optional)
  • Should agile databases be normalized?
  • Application of normal forms to objects and classes
  • Class normal forms
  • [Exercise]

Abstractions in Data Modeling

  • Abstraction in general
  • Aggregation
  • Generalization
  • How abstraction can reduce the need for refactoring
  • [Exercise]
  • Subtyping
  • Rules
  • Inheritance
  • Single inheritance
  • Multiple inheritance
  • Other characteristics
  • [Exercise]
  • Entity roles vs. entity subtypes, how to distinguish
  • [Exercise]
  • "Member Of" relationship
  • [Exercise]
  • “Type Of” relationship
  • [Exercise]

Inheritance Rules

  • One-to-many relationship
  • Inheritance in "member of" relationships
  • Distinction of "member of" from subtyping
  • Practical examples
  • Other characteristics
  • [Exercise]

Flexibility in Models

  • Different meanings of flexibility
  • Limitations of subtyping
  • Abstracting to generalize
  • Entity abstraction
  • Attribute abstraction
  • Relationship abstraction
  • Creating extensible models
  • Using type coding
  • Generalizing business rules
  • Use of generic models
  • Use of data model patterns
  • [Exercise]

Application of Agile to Data Modeling

  • How to fit complex problems in Agile
  • Definition of refactoring
  • Example of refactoring
  • What refactoring is
  • What refactoring is NOT
  • What applications are suitable or unsuitable for Agile
  • [Exercise]

Different Kinds of Relationships

  • Complex relationships
  • Relationship constraints
  • Mutually exclusive and inclusive relationships
  • [Exercise]

Modeling Time and Change

  • Importance of representing the business time dimension
  • Short term and long term view
  • Seven types of time and history
  • Derived data
  • Capturing business changes
  • [Exercise]

Entity Life Histories

  • Rules for
  • Value of
  • Syntax rules
  • Examples
  • [Exercise]

Process Discovery Methods

  • Event analysis
  • External events
  • Temporal events
  • Data triggers
  • User stories
  • Object analysis
  • Entity life histories
  • CRUD matrices and others
  • [Exercise]

Model Reconciliation

  • Importance of parallel model development
  • The four forms of prototyping
  • Scenario based modeling
  • Various model reconciliation methods
  • CRUD Matrix
  • Data views
  • Usage maps
  • Other Methods

Introduction to NOSQL Databases

  • Definition of NOSQL
  • Types of NOSQL databases
  • Big data
  • Types of big data
  • Dealing with big data
  • Column oriented vs. row oriented databases

Object Orientation

  • Characteristics of a class
  • Classification
  • Encapsulation
  • Inheritance
  • Message passing (and polymorphism)
  • Definition of an object
  • Relationship of OO to data modeling
  • Use of existing modeling methods in OO
  • What is UML?
  • UML data modeling constructs
  • How do data models relate to UML?
  • Object-to-relational mapping
  • How to enhance UML to support data models

Database Design

  • Integrated sandboxing
  • The ten database design decision points
  • Safe compromises for optimization
  • Aggressive compromises for optimization
  • Integrity
  • Redundancy
  • Key structure
  • Optimization of operational, master data and analytical data

Summary and Conclusion

Duration
2 days

Course Format
Lecture, group discussion and exercises 

Instructor
Tom Haughey

To request a quote for this in-house seminar
Please call (561) 218-4752 or email info@debtechint.com

Return to Onsite Seminars Table of Contents