Module 4 - Review

Module Overview

Review key concepts from this sprint and prepare for the sprint challenge, focusing on graphs, service design, and relational databases.

Sprint Review Summary

This sprint covered three main topic areas: Graphs, Service Design, and Relational Databases. Let's review the key concepts from each area to help you prepare for the sprint challenge.

Graphs

Graphs are versatile data structures consisting of nodes (vertices) connected by edges. They're ideal for representing relationships and connections in data.

Key concepts:

  • Nodes (vertices) and edges (connections between nodes)
  • Directed vs. undirected graphs
  • Weighted vs. unweighted edges
  • Cycles in graphs
  • Graph traversal algorithms: Breadth-First Search (BFS) and Depth-First Search (DFS)
  • Graph representations: adjacency matrix and adjacency list

For the sprint challenge, be prepared to design a graph-based solution to a business problem, implement graph traversal algorithms, and analyze graphs for properties like connectivity and cycles.

Service Design

Service design focuses on creating scalable, maintainable systems that solve business problems through the optimal organization of components and technologies.

Key concepts:

  • Service design principles: don't reinvent the wheel, simplicity over complexity
  • Component-based architecture
  • Design patterns: adapter, facade, proxy, notifier, and aggregator
  • Trade-off analysis between different design options
  • AWS compute options: Lambda, ECS, EC2
  • Lambda limitations and appropriate use cases

The sprint challenge may ask you to analyze a business scenario, recommend an appropriate service design, and justify your choice with a trade-off analysis.

Relational Databases

Relational databases organize data into tables with fixed schemas, using keys to establish relationships between tables.

Key concepts:

  • Tables, records, columns, and schemas
  • Primary keys and foreign keys
  • Data types: numeric, date, varchar, boolean
  • Normalization to reduce data redundancy
  • Referential integrity constraints
  • Database associations: one-to-one, one-to-many, many-to-many
  • SQL queries: SELECT, JOIN, WHERE clauses

For the sprint challenge, expect to write SQL queries, design normalized database schemas, and interpret entity relationship diagrams.

Remember to review the code-alongs and exercise solutions from each module. These practical examples will help solidify your understanding of the concepts and prepare you for the hands-on aspects of the sprint challenge.

Learning Objectives Review

Graphs

  • Assemble a graph from provided relationships
  • Analyze whether a graph models a provided business problem
  • Identify cycles in a provided graph
  • Analyze whether a directed or undirected graph models a provided business problem
  • Manually perform a breadth-first traversal of a graph to find the shortest path from one node to any node that satisfies a given condition
  • Manually perform a depth-first traversal on a graph to perform an operation on each node
  • Outline the purpose of a Graph
  • Compare and contrast the Graph and Tree data structures

Service Design

  • Identify whether AWS Lambda should not be used as the architecture for a set of business requirements
  • Identify trade-offs of using each of a set of alternative technologies in a provided design document to solve a specified business problem
  • Make a service design recommendation based on a trade-off analysis
  • Compare Lambda against other AWS Compute options
  • Outline the use case for the adapter, facade, proxy, notifier, and aggregator service design patterns

Relational Databases

  • Recall that tables in a relational database have a fixed schema that every record must satisfy
  • Recall that relational databases use NULL to specify that a record does not have a value for a specific column
  • Recall that relational databases include numeric, date, varchar, and boolean representations of data
  • Identify a unique record in a provided table by its primary key's value
  • Recall that normalization reduces redundant data while enabling data consistency
  • Recall that relational databases use foreign keys to enforce referential integrity
  • Outline when an insert will fail in a relational database due to referential integrity constraints
  • Recall that relational databases, unlike non-relational databases, have a fixed schema, maintain referential integrity, and enable joining across tables
  • Outline referential integrity in relational databases
  • Identify foreign and primary key pairs from a given entity relationship diagram
  • Write an SQL statement that retrieves rows satisfying specified conditions from a single table
  • Write an SQL statement that counts the number of rows satisfying specified conditions in a table
  • Write an SQL statement that describes a table's columns
  • Determine the results of executing a provided SQL select statement on a given table
  • Write an inner join SQL statement that retrieves rows satisfying specified conditions
  • Predict the results of executing a provided inner join SQL statement on a set of given tables
  • Implement an SQL statement to answer a provided business question, given an entity relationship diagram
  • Write an SQL statement that retrieves only specified columns from a single table
  • Explain inner join in relational databases

Additional Resources

Sprint Challenge Preparation Tips

  • Review all module content and exercises
  • Practice implementing BFS and DFS algorithms
  • Try designing simple systems using the service design patterns
  • Write and test SQL queries for different scenarios
  • Create your own entity relationship diagrams
  • Review the AWS compute options and their trade-offs