Project 4: Databases

In the previous exercise, you learned how databases allow us to separate information from its presentation. You took a familiar collection of Athens coffee shops, figured out what information was worth storing, organized that information into a data model, and then used WordPress to store and retrieve it.

Now it’s your turn.

For this project, you will create a small database around a collection that you genuinely find interesting. The subject is completely up to you, but your collection should contain enough variety that you can meaningfully organize, classify, and retrieve different subsets of the information.

The finished project will include your original data model, a working WordPress collection, evidence that you inspected the underlying database, and a short project reflection.

Choose Your Collection

Choose a subject and create a collection of approximately 8–10 related items.

Possible collections could include:

  • movies
  • albums
  • books
  • recipes
  • hiking trails
  • plants
  • video games
  • historical events
  • restaurants
  • coffee shops
  • sports teams
  • campus organizations
  • thrift stores
  • fictional characters
  • something completely different!

Choose something specific enough that the individual items have meaningful differences.

For example, “Movies” is probably too broad.

Pixar movies, Best Picture winners, or 1990s romantic comedies give you a more coherent collection with characteristics you can actually compare.

Likewise, avoid a collection where every item would end up having essentially the same Categories and Tags.

Your data should give us something interesting to retrieve!

STRUCTURE: Design Your Data

Before you touch WordPress, create a Google Sheet representing your collection.

Each row should represent one item.

Each column should represent an attribute you want to store about those items.

Think carefully about what information would actually make your collection useful.

Your attributes might include things such as:

  • name
  • date
  • location
  • creator
  • genre
  • rating
  • type
  • features
  • characteristics
  • availability

Your particular fields will depend entirely on your collection.

As you build the Sheet, think about:

  • repeated values
  • data types
  • missing information
  • exceptions
  • ambiguity
  • information that might be useful for grouping or filtering

Reality rarely fits perfectly into a spreadsheet. That’s part of the point.

Ask Two Questions

Before moving on, write down at least two questions your database should be able to answer.

For example:

Which items belong to a particular group? Which items share a particular characteristic?

If your database contained hiking trails, your questions might be:

Which trails are located in North Georgia? Which trails are dog friendly?

If your database contained movies:

Which movies are comedies? Which movies were directed by women?

These questions will become important later when you test whether your structure actually works.

Keep your Google Sheet! It represents your original conceptual model and will be part of your final submission.

MAP: Translate Your Model to WordPress

Now figure out how your conceptual model will fit inside regular WordPress Posts.

You have access to:

  • Post Titles
  • Content
  • Excerpts
  • Featured Images
  • Categories
  • Tags

Decide how the information from your Sheet should map onto these structures.

You must establish at least one meaningful Category-based organization.

You should also create useful Tags that cut across that organization.

Remember: Categories organize. Tags describe across that organization.

Your original data model probably won’t fit WordPress perfectly. That’s okay! Part of this project is deciding where to make reasonable compromises.

Conceptual model ≠ implementation.

For this assignment, stick with regular WordPress Posts. Do not use Custom Post Types or install tools simply to make your original model fit perfectly.

STORE: Build Your Collection

Open WordPress Playground and create your project.

Create your Category structure first.

Then create and publish one Post for each item in your collection.

Each Post should use the WordPress structures you established during the MAP stage.

Assign appropriate Categories and Tags to every item.

You may use the regular Post editor, Quick Edit, or other Dashboard tools to make the process more efficient.

Once all of your Posts are complete, compare WordPress against your Google Sheet.

Make sure:

  • every intended item is present
  • your Posts are published
  • Categories are assigned correctly
  • Tags are consistent
  • important information from your model hasn’t accidentally disappeared

Look Behind the Curtain 👀

Next, let’s make sure you can prove that there really is a database behind all of this.

Open WordPress Playground’s Database tools and launch phpMyAdmin.

Browse the:

wp_posts

table.

Find one of your own Posts.

Locate:

  • its database ID
  • its Post title
  • one or two other values you recognize

Take a purposeful screenshot showing your Post inside the database.

You will use this screenshot in your reflection later.

Do not modify the database directly.

You also do not need to figure out the entire WordPress database schema. Find your record, identify a few recognizable values, get your evidence, and get out!

INTERACT: CRUD

Throughout this project, you have been using the four basic CRUD operations:

Create
Read
Update
Delete

You don’t need to perform extra CRUD busywork just to prove you know the acronym.

Instead, notice where those operations naturally appeared during your project.

For example:

Creating a Post = Create

Viewing a Post = Read

Editing a Post = Update

Removing an unwanted Post = Delete

CRUD is not a WordPress-specific concept. It is a general pattern for interacting with persistent data.

RETRIEVE: Test Your Data Model

Remember those two questions you created at the beginning? Time to see whether your database can answer them.

Open a meaningful Category archive. Does it retrieve the subset of your collection you expected?

Now open a meaningful Tag archive. Does it retrieve a different, cross-cutting subset?

For example, perhaps your Category archive shows: All Pixar movies released in the 2000s, while a Tag archive shows: Movies featuring a female protagonist

The specific results will depend on your project. The important part is that WordPress is generating these collections from your stored data. You should not manually create pages containing copies of your Posts.

STRUCTURE makes RETRIEVE possible.

PRESENT: Keep It Functional

Select an appropriate WordPress theme for your collection.

Make sure your:

  • individual Posts
  • main listing
  • Category archives
  • Tag archives

are readable and usable.

You are welcome to customize the appearance further, but this is not primarily a visual-design project. Do not let theme customization dramatically expand the scope of your project. No block-template or Site Editor customization is required.

The goal is a clear and functional presentation of your stored information.

BACK UP YOUR WORK!

WordPress Playground is great for experimentation, but remember:

Persistence does not guarantee permanence.

Export your WordPress Playground project as a .zip file at appropriate checkpoints while you work.

Definitely export a final copy when the project is complete.

There’s an important distinction here:

Persistence means information remains available beyond a single interaction.

Portability means the information or project can be moved somewhere else.

Backup means you have another copy in case something goes wrong.

Your Playground project may be persistent during your work, but your exported ZIP gives you a portable backup that you control.

REFLECT: Create a Project Page

Create a Capstone-style project page written in HTML and link to it from your hosted course page.

This page should document what you built and, more importantly, what you learned from the process.

Include a short project overview along with purposeful screenshots rather than screenshots of every step.

At minimum, include evidence of:

STORE

Show the recognizable record you located inside wp_posts.

Include the database ID of the Post you inspected.

RETRIEVE

Show a meaningful Category or Tag archive that demonstrates your taxonomy working.

PRESENT

Show the finished collection as a user would encounter it.

Reflection Questions

On your project page, respond to the following:

1. What was one important data-modeling or taxonomy decision you made?

Explain why you structured your information that way.

2. What was one compromise you made when translating your Google Sheet into WordPress?

What did your conceptual model want to do that WordPress’s standard structures didn’t represent perfectly?

3. What did WordPress do for you that you otherwise would have needed to build yourself?

Think beyond appearance. Consider storing, managing, retrieving, or presenting data.

4. Connect one concept from this project to something you’ve encountered elsewhere.

This could be another web-development concept, another programming language, an app you use, a previous NMI assignment, etc.

If everything in this project was genuinely new to you, explain what new idea stood out instead.

5. Return to your two original questions. Could your finished structure answer them?

Explain how.

6. What would you model differently if you were starting the project again?

Your answer might involve fields, Categories, Tags, values, scope, or the collection itself.

Submit Your Supporting Files

Your final project page should also include:

  • a link to your original Google Sheet
  • a download link to your exported WordPress Playground .zip

Upload the .zip file to your host. An /assets folder is a perfectly reasonable place to keep it.

Your hosted project page should ultimately serve as the home for the entire assignment.

What We’re Looking For

This project is not about creating the world’s most sophisticated WordPress site.

It is about demonstrating that you can take a collection and thoughtfully move through this process:

STRUCTURE → MAP → STORE → INTERACT → RETRIEVE → PRESENT

The most successful projects will make intentional choices about how information is modeled and organized, rather than simply entering ten Posts into WordPress.

Rubric

A-Level Work

  • Exceptional quality, originality, and/or insight
  • Thoughtful data model with meaningful classifications
  • Category and Tag retrieval clearly demonstrates the structure
  • Fully meets the project criteria with no significant errors
  • Reflection demonstrates strong understanding of the concepts
  • Polished, organized, and professional

B-Level Work

  • Meets all major project criteria with minor issues
  • Data model and taxonomy are functional and reasonably thoughtful
  • Retrieval works as intended
  • Reflection demonstrates solid understanding
  • Good organization and presentation

C-Level Work

  • Meets most project criteria but contains notable gaps
  • Data model or taxonomy is basic, inconsistent, or only partially useful
  • Some retrieval or classification problems
  • Reflection demonstrates basic understanding
  • Organization or clarity needs work

Below C-Level — Not Passing

  • Disorganized, incomplete, or poor-quality submission
  • Meets few project criteria or contains major errors or omissions
  • Little evidence of meaningful data modeling or retrieval
  • Reflection demonstrates limited understanding or effort