Skip to content
← All projects
Databases / Cloud project

Campus event registration data model

Design and test a DynamoDB data model for a college event, then defend its access-pattern tradeoffs.

Intermediate150 minutesUpdated 2026-09-23Use your own AWS learning account

Overview

Build the data layer for a campus event registration system. Your project must support listing attendees for one event and finding one student's registration within that event. The deliverable is a tested data model, not a complete public web application.

Architecture

The console is your test client; IAM authorizes it to access a dedicated DynamoDB table. The composite key groups registrations by event. Document how an authenticated API could be added later without giving a browser AWS credentials.

Access patternKey operation
Attendees for an eventQuery eventId
One attendee's registrationQuery eventId plus studentId
Events for one studentAdditional index or different model required

Prerequisites

Steps

1. Build the first version

Follow the prerequisite lab to create a table, add three records, query one event, and update a status. Save the observed results. The lab includes creation and cleanup instructions; recreate the dedicated table if you already cleaned it up.

2. Expand the dataset

Expand the existing dataset to three event IDs with five student registrations each using the item editor: add three registrations to cloud-day, four to career-day, and five to a new event. You should have 15 items in total, including the three baseline items. Keep each eventId/studentId pair unique. Add a status attribute with either registered or attended. Write down the expected count per event before querying.

3. Test the access patterns

Query each event and compare the returned records with your expected counts. Query a single registration with both keys. Change one status, read it again, and confirm the update. Use consistent reads where available or account for eventual consistency.

4. Examine duplicate behavior

In the console, edit an existing item's non-key status attribute and save it. Observe that a table's complete primary key identifies one item. Explain why a public registration API would also need conditional writes and validation to handle duplicate requests safely; do not claim the console exercise implements that API.

5. Present a design extension

Design, but do not provision, a global secondary index for listing events by student. Specify its partition key, sort key, and projected attributes. Explain that additional index storage and writes have a cost, and that a GSI does not support strongly consistent reads.

Verification

Prepare a table of your three event IDs, expected counts, observed counts, and one status-update result. Include a diagram and answers to: Why these keys? When would a relational database fit better? How would you stop a user reading another user's registration?

Your project is complete when another learner can reproduce your small dataset and your documented queries return the stated results.

Cost and cleanup

Use on-demand capacity with a small synthetic dataset. Requests and storage may be billed; no always-free promise applies. Delete the dedicated table and any backups you explicitly created. Verify absence in the correct region. Keep evidence and your design document rather than leaving the table running for a viva.

References