Courseiva
DBS-C01Chapter 2 of 17Objective 1.2

Relational Database Design Principles on AWS

How do you store millions of customer orders so that finding any single order from three years ago takes less than a second, without accidentally losing data? This is the core challenge that relational database design solves. For the DBS-C01 exam, you must understand how to choose between Amazon's managed database services — RDS, Aurora, and Redshift — and how to design the underlying structure (tables, keys, relationships) that makes those services actually work efficiently.

12 min read
Intermediate
Updated Jul 23, 2026
Editorial oversight: Johnson Ajibi· Security Systems Architect · MSc IT Security · IEEE Senior Member

A simple way to picture Relational Database Design Principles on AWS

The Personal Library Organisation Analogy

Have you ever tried to find a specific book in a room full of thousands of unsorted books? That's the chaos of unstructured data. Relational database design is the system you use to organise your personal library so you can always find exactly what you need, understand its connections, and know who borrowed it last.

You start with separate shelves for different genres (fiction, history, cookbooks) — these are your tables. On each shelf, every book has a unique tag, like a library barcode — that's the primary key. Some books have a note inside saying "see also the author's other title" that points to another shelf — that's a foreign key. You might also have a separate index card file that lists every borrower and which books they have — that's another table that maps relationships.

On AWS, you don't build your own library building. You rent space in a pre-built, climate-controlled library managed by Amazon. RDS is like renting a room with standard shelves. Aurora is like renting a room where the shelves double as filing clerks, automatically indexing every book as you place it. Redshift is like a giant warehouse designed only for year-end reports — it's terrible for daily borrowing but amazing for analysing reading trends over five years.

The key is designing your shelf system (the schema) so that you avoid putting the same book on two different shelves (data duplication) and so you can quickly find all books by a specific author without digging everywhere (efficient queries).

How It Actually Works

Relational database design is the art of organising data into structured tables that relate to each other. A database is simply a place where you store data electronically. A relational database is a special type where data is stored in tables (like spreadsheets) and relationships are defined between those tables. This structure prevents data duplication and keeps everything consistent.

Core concepts first: A table is a collection of rows and columns, similar to a spreadsheet. Each row is a single record (for example, one customer). Each column is a single attribute of that record (for example, customer name or email address). A primary key is a special column (or combination of columns) that uniquely identifies each row — think of it like a passport number for each record. A foreign key is a column in one table that points to the primary key in another table, creating a link between them.

The process of designing these tables is called normalisation. Normalisation is the practice of breaking down large, messy tables into smaller, well-connected tables to eliminate data redundancy (duplicating the same information in multiple places) and avoid anomalies (problems when inserting, updating, or deleting data). For example, instead of storing the customer's full address in every order row, you create a separate customers table with the address once, and link each order to that customer ID.

On AWS, the primary relational database services are:

Amazon RDS (Relational Database Service): This is the standard managed service. It supports multiple database engines like MySQL, PostgreSQL, Oracle, SQL Server, and MariaDB. AWS handles backups, patching, and hardware maintenance. Think of it as a pre-configured database server that you still manage (you choose the instance size, storage type, and configure security groups).

Amazon Aurora: This is AWS's own high-performance relational database engine, compatible with MySQL and PostgreSQL. It is not a separate service but a specific database engine you can run under RDS. Aurora offers much higher performance and availability than standard MySQL or PostgreSQL because of its distributed storage architecture. It automatically replicates data across multiple Availability Zones (physically separate data centres) and can scale storage automatically up to 128 TB.

Amazon Redshift: This is not a transactional database. It is a data warehouse, optimised for analytical queries on massive datasets (petabytes). You would never use Redshift to process a single customer order. Instead, you load billions of rows of historical data into Redshift and run complex aggregation queries (e.g., total sales by region for the last five years). Its design uses columnar storage (storing data by column instead of by row) to scan large amounts of data very quickly.

Why does this matter for the exam? The DBS-C01 tests your ability to choose the right service for a given workload. A key decision point is whether the application needs fast, transactional read-write operations (Choose RDS or Aurora) or heavy analytical processing on historical data (Choose Redshift). Aurora is specifically tested as the premium option for high-availability, high-throughput applications that demand minimal downtime and automatic failover.

Another critical design principle is indexing. An index is like the index at the back of a textbook — it tells the database exactly where to find the data without scanning every row. Without indexes, even a simple query can become extremely slow on large tables. However, indexes also slow down write operations (insert, update, delete) because the index must be updated each time, so you must balance them.

Finally, you must understand ACID (Atomicity, Consistency, Isolation, Durability) — the set of properties that guarantee reliable transaction processing. Atomicity means a transaction either completely succeeds or completely fails. Consistency means the database state always follows its rules (constraints). Isolation means concurrent transactions do not interfere with each other. Durability means once a transaction is committed, the data is permanently saved even if the server crashes. All relational databases on AWS support ACID, but Redshift sacrifices some transactional capabilities for analytical performance.

Decision tree for selecting AWS relational database services based on workload type and design steps.

Walk-Through

1

Analyse the workload

Determine if your application is transactional (many small reads and writes, like an e-commerce checkout) or analytical (large queries on historical data, like monthly reports). This decision directly guides whether you choose RDS/Aurora or Redshift.

2

Normalise the table design

Split data into logical tables (e.g., Customers, Orders, Products) and define primary keys and foreign key relationships. This eliminates duplicate data and maintains consistency.

3

Choose the AWS service

For transactional workloads needing high availability, select Amazon Aurora. For simpler workloads or specific engine requirements (e.g., SQL Server), use RDS. For analytical queries on terabytes of data, use Amazon Redshift.

4

Add indexes strategically

Create indexes on columns that appear in WHERE clauses or JOIN conditions. Avoid indexing every column — over-indexing hurts write performance. Use Amazon's Performance Insights (RDS/Aurora) to identify slow queries that need indexes.

5

Configure high availability and backups

Enable Multi-AZ for automatic failover if a data centre fails (RDS or Aurora). Set automated backups to a retention period of at least 7 days. For Aurora, consider using an Aurora Global Database for cross-region disaster recovery.

6

Scale as needed

Monitor performance metrics in Amazon CloudWatch. If read traffic grows, add read replicas. If the database becomes too small, scale vertically by changing the instance type. For Redshift, add nodes to the cluster for more storage or compute power.

What This Looks Like on the Job

An IT professional uses these principles every day. Consider a typical e-commerce platform built on AWS. The company sells products online and needs to store customer accounts, product inventory, and order history.

Step one: The database architect analyses the data. They identify four main entities: Customers, Products, Orders, and Order_Items. Each entity becomes a table. The Customers table has columns: customer_id (primary key), name, email, address. The Products table has columns: product_id (primary key), name, price, stock_quantity. The Orders table has columns: order_id (primary key), customer_id (foreign key to Customers), order_date, total_amount. The Order_Items table links orders to products and has: order_id (foreign key to Orders), product_id (foreign key to Products), quantity, unit_price. This design avoids storing the customer address in every order row — that would be redundant.

Step two: They choose the database service. Because this is a live e-commerce application with frequent read and write operations (transactions), the architect selects Amazon Aurora. The application needs high availability — if one Availability Zone goes down, the database must keep working. Aurora provides automatic failover to a replica in another zone within minutes. The architect also enables Multi-AZ deployment for RDS (if they had chosen RDS) which creates a standby replica in another zone.

Step three: They create indexes. The architect adds an index on the Orders.order_date column because the marketing team frequently queries "total orders per month for the last year". Without the index, the database would scan every row in a table that might have millions of rows. They also create an index on Order_Items.product_id because the product catalogue page needs to show "how many units sold" quickly.

Step four: They set up monitoring. Using Amazon CloudWatch (AWS's monitoring service), they track metrics like CPU utilisation, database connections, and read/write latency. If the database becomes slow, they can scale vertically by moving to a larger instance type, or horizontally by adding read replicas (separate copies of the database that handle read-only queries).

Step five: They plan for analytics. The business also needs a weekly sales report by region. Instead of running heavy aggregation queries on the live Aurora database (which would slow down customer orders), they export data once a day to Amazon Redshift. In Redshift, they run complex queries that join millions of rows from multiple tables, using its columnar storage to get results in seconds instead of hours.

This scenario illustrates the practical decisions: choosing Aurora for transactional workloads, designing normalised tables with foreign keys, adding indexes strategically, and separating analytics into Redshift to keep the main application fast.

How DBS-C01 Actually Tests This

The DBS-C01 exam tests your ability to design relational database architectures and select appropriate services. Expect approximately 10-15% of the exam questions to come from this objective (1.2). The questions are scenario-based: you are given a business requirement and must choose the best AWS service or design pattern.

Exam topics you must master:

When to use RDS vs Aurora vs Redshift. The classic trap: a question describes heavy analytical querying on terabytes of data with complex joins. Many beginners choose RDS because they know it supports SQL. The correct answer is almost always Redshift for analytical workloads. Conversely, if the scenario requires sub-second latency on single-row lookups (like fetching a user's profile), Redshift is wrong — choose Aurora or RDS with proper indexing.

Normalisation vs denormalisation. The exam loves testing your understanding of when to break normalisation rules. A question might describe a reporting table that is intentionally duplicated (denormalised) to improve query speed. The trap is to always choose the most normalised design. Remember: normalisation is for transactional systems to avoid anomalies; denormalisation is for analytical systems to speed up reads.

Indexing strategies. Expect questions about which columns to index. The trap: indexing every column. The correct approach is to index columns used in WHERE clauses and JOIN conditions, but avoid over-indexing on tables with heavy write activity.

ACID compliance: the exam tests the acronym. Know that RDS and Aurora are fully ACID-compliant, which is critical for banking and e-commerce transactions. Redshift is not fully ACID-compliant in the same way — it uses a different model for consistency.

Multi-AZ and read replicas: know the difference. Multi-AZ is for high availability (automatic failover if the primary fails). Read replicas are for scaling read-heavy workloads (you can have up to 15 read replicas for Aurora). A common question: "Your application needs to survive a single Availability Zone failure. What do you enable?" Answer: Multi-AZ deployment.

Automated backups and point-in-time recovery: RDS and Aurora automatically back up your database and allow you to restore to any point within the retention period (default 7 days, up to 35 days). The exam tests retention policies and how to restore from a snapshot.

The correct answer pattern: always read the scenario's key phrase. If it says "high availability", search for Multi-AZ or Aurora. If it says "heavy analytical queries", think Redshift. If it says "minimise data redundancy", think normalised design with foreign keys. If it says "improve query performance", think indexing or read replicas.

Traps to watch for:

Choosing Redshift for transactional workloads (it is columnar and slow for row-level operations)

Choosing RDS when Aurora is available and the requirement includes high availability with automatic failover (Aurora is superior for this)

Creating too many indexes on a write-heavy table (slows down inserts and updates)

Forgetting that foreign keys enforce referential integrity — a question might ask you to identify which design prevents orphaned records

Key Takeaways

RDS is a managed service that supports multiple database engines; Aurora is a high-performance engine that runs within RDS with better availability and scalability.

Redshift is a columnar data warehouse designed for analytical queries on large datasets, not for transactional read-write operations.

Normalisation reduces data redundancy and prevents anomalies by breaking data into related tables with foreign keys.

Indexes speed up read queries but slow down writes; only index columns used in WHERE clauses and JOIN conditions.

Multi-AZ deployments provide high availability through automatic failover to a standby replica in a different Availability Zone.

Aurora automatically replicates data across three Availability Zones and can scale storage up to 128 TB without downtime.

ACID compliance ensures reliable transactions: Atomicity, Consistency, Isolation, Durability.

Read replicas improve read performance by offloading queries from the primary database, and Aurora supports up to 15 read replicas.

Easy to Mix Up

These come up on the exam all the time. Here's how to tell them apart.

Amazon RDS

Supports multiple engines: MySQL, PostgreSQL, Oracle, SQL Server, MariaDB

Storage is limited to 16 TB per instance (for some engines)

Multi-AZ provides a standby in one other Availability Zone only

Amazon Aurora

A custom high-performance engine compatible with MySQL and PostgreSQL only

Storage scales automatically up to 128 TB per cluster

Replicates data across three Availability Zones for better durability

Normalised Design

Splits data into many small, related tables to reduce duplication

Slower read queries due to many JOINs

Preferred for transactional (OLTP) systems to avoid anomalies

Denormalised Design

Merges tables into fewer, larger tables with some duplication

Faster read queries because fewer JOINs are needed

Preferred for analytical (OLAP) systems to speed up reporting

Primary Key

Uniquely identifies each row in a table

Must have a unique value for every row

Can be a single column or a composite (multiple columns)

Foreign Key

Links a row in one table to the primary key of another table

Can contain duplicate values (many rows can reference the same parent)

Used to enforce referential integrity between tables

Multi-AZ (RDS)

Creates a standby instance for automatic failover during outages

Standby cannot serve read traffic

Provides high availability, not read scaling

Read Replicas (RDS)

Creates additional database copies that serve read traffic

Can be promoted to a primary if needed, but failover is manual

Provides read scaling for query-heavy workloads

Watch Out for These

Mistake

RDS is a single database engine like MySQL.

Correct

RDS is a managed service that supports multiple database engines including MySQL, PostgreSQL, Oracle, SQL Server, and MariaDB. You choose which engine to run under the RDS umbrella.

Beginners often think RDS is a specific database, not a service that manages different databases. The exam uses 'RDS' broadly, and you need to know it's the container, not the engine.

Mistake

Amazon Aurora is a separate service from RDS, like an alternative to RDS.

Correct

Aurora is a database engine that runs within the RDS service. You launch an Aurora DB instance from the RDS console, but it uses a different storage architecture than standard MySQL or PostgreSQL on RDS.

The naming is confusing: 'Amazon Aurora DB cluster' sounds like a standalone service, but it's really an engine option under RDS. The exam tests your understanding of the relationship between RDS and Aurora.

Mistake

Redshift is just a faster version of RDS for any kind of query.

Correct

Redshift is a columnar data warehouse designed for analytical queries on large datasets, not for transactional read-write operations. It is dramatically slower than RDS for single-row lookups or frequent inserts.

Beginners see 'SQL' and think all databases are interchangeable. They do not understand the fundamental architectural difference between row-oriented (RDS/Aurora) and column-oriented (Redshift) storage.

Mistake

Normalisation is always the best design for every database.

Correct

Normalisation is best for transactional systems to prevent data anomalies. For analytical systems (like reporting), denormalisation is often better because it reduces the number of joins needed for queries, improving read performance.

Standard database courses teach normalisation as the ideal. The exam tests your ability to choose the right balance based on the workload, not follow a rigid rule.

Mistake

Adding an index always makes queries faster with no downside.

Correct

Indexes speed up read operations (SELECT queries) but slow down write operations (INSERT, UPDATE, DELETE) because the index must be updated each time. Over-indexing on a write-heavy table can degrade performance.

Many beginners see indexes as a pure performance win and ignore the trade-off. The exam expects you to recognise scenarios where too many indexes hurt performance.

Mistake

Multi-AZ and read replicas are the same thing.

Correct

Multi-AZ provides high availability by creating a standby replica in another Availability Zone for automatic failover. Read replicas are used to offload read traffic and can be promoted to primary, but they do not provide automatic failover by default.

Both involve multiple database copies, so beginners conflate them. The exam tests the distinct purpose of each feature.

Do You Actually Know This?

Reveal each answer, then mark whether you got it right. Score 60%+ to unlock the next chapter.

Frequently Asked Questions

What is the difference between RDS and Aurora?

RDS is a managed service that supports multiple database engines like MySQL and PostgreSQL. Aurora is a specific database engine offered within RDS that provides much higher performance, automatic scaling, and better availability by replicating data across three Availability Zones.

When should I use Redshift instead of RDS?

Use Redshift when you need to run complex analytical queries on very large datasets (gigabytes to petabytes) and you do not need real-time transactional processing. Use RDS or Aurora for everyday application data where you need fast inserts, updates, and single-row lookups.

What is normalisation and why is it important?

Normalisation is the process of organising data into separate tables to reduce duplication and avoid inconsistencies. It breaks down a large, messy table into smaller, well-linked tables using primary and foreign keys.

How do I improve query performance in RDS?

You can improve performance by adding indexes on columns used in WHERE clauses and JOINs, using read replicas to offload read traffic, and increasing the instance size. Also, review slow query logs and use Amazon's Performance Insights.

What does Multi-AZ mean in RDS?

Multi-AZ (Multi-Availability Zone) means RDS automatically creates a standby copy of your database in a different physical data centre (Availability Zone). If the primary fails, RDS automatically switches to the standby with minimal downtime.

Can I run analytical queries on Aurora?

You can, but Aurora is optimised for transactional workloads. For heavy analytical queries on large datasets, Aurora may become slow. Best practice is to use Aurora for live application data and export data to Redshift for analytics.

Terms Worth Knowing

Keep going

You've finished Relational Database Design Principles on AWS. Continue through the DBS-C01 study guide to build a complete picture of the exam.

Done with this chapter?