List steps in a single row?

Hello, I am new here and creating my first app. I own a cocktail lounge and I am creating an app as a reference source for our bartenders, giving them all the necessary details to make each of our cocktails, including:

  • Name
  • Price
  • Picture
  • Ingredients w/ amounts
  • Steps to make the drink
  • Glass Type
  • Garnish
  • Ice Type

Both ingredients and steps have include several line items (i.e. there are multiple ingredients and multiple steps for each drink).

I am starting by building the database of the drinks. I am wondering if I should:

  1. Include all of the ingredients and steps in the same row by naming the cells “Ingredient 1”, “Ingredient 2”, “Step 1”, “Step 2”, etc.
  2. Since we use a lot of the same ingredients and same steps, list them in a separate table and link them into the row of the drink.
  3. A better approach that you guy have that I am not aware of.

I am just getting started and wanted to do it the right way before I put a bunch of effort in to building it wrong.

Thanks for your help!!

Hello! Hope the guide below helps you a bit with building relational databases for your use case. A note for this is I don’t know if you need an ingredient in multiple steps for a single recipe (e.g: 10g of Ingredient X in Step 1, 5g of Ingredient X in Step 4). Please let me know if that is the case.

Your instinct to list ingredients and steps in separate tables is spot on. This approach, known as normalization in database design, is much more efficient and scalable than your first idea of having multiple “Ingredient 1,” “Step 1,” etc., columns in the same table.

1. Cocktails Table

This is the main table for your drinks. Each row represents a unique cocktail.

Table: Cocktails

Cocktail_ID Name Price Picture_URL Glass_Type Garnish Ice_Type
C001 Old Fashioned 14.00 /images/old_fashioned.jpg Rocks Orange Peel Large Cube
C002 Margarita 12.50 /images/margarita.jpg Margarita Lime Wedge & Salt Rim Crushed
C003 Negroni 13.00 /images/negroni.jpg Rocks Orange Peel Large Cube

2. Ingredients Table

This table will store a master list of all the ingredients you use in your lounge. This prevents you from having to type out the same ingredient name multiple times and reduces the chance of typos.

Table: Ingredients

Ingredient_ID Name
I001 Bourbon
I002 Angostura Bitters
I003 Sugar Cube
I004 Water
I005 Tequila
I006 Lime Juice
I007 Triple Sec
I008 Gin
I009 Campari
I010 Sweet Vermouth

3. Steps Table

Similar to the ingredients table, this will be a master list of all the individual steps involved in making your cocktails. These steps can be used globally in any recipes.

Table: Steps

Step_ID Description
S001 Muddle the sugar cube and bitters with a splash of water.
S002 Add the bourbon and a large ice cube.
S003 Stir until well-chilled.
S004 Garnish with an orange peel.
S005 Rim the glass with salt.
S006 Shake all ingredients with ice.
S007 Strain into the chilled glass.
S008 Garnish with a lime wedge.
S009 Add all ingredients to a mixing glass with ice.
S010 Garnish with an orange peel.

Linking the Tables Together

Now that we have our core data, we need to connect them. This is where “linking” or “junction” tables come in.

4. Cocktail Ingredients Table

This table links the Cocktails and Ingredients tables. It specifies which ingredients are in which cocktail and in what amount. This is the key to handling multiple ingredients for each drink.

Table: Cocktail_Ingredients

Cocktail_ID Ingredient_ID Amount
C001 I001 2 oz
C001 I002 2 dashes
C001 I003 1
C001 I004 1 splash
C002 I005 2 oz
C002 I006 1 oz
C002 I007 0.75 oz
C003 I008 1 oz
C003 I009 1 oz
C003 I010 1 oz

5. Cocktail Steps Table

This table links the Cocktails and Steps tables. It outlines the preparation steps for each cocktail and, importantly, the order in which they should be performed.

Table: Cocktail_Steps

Cocktail_ID Step_ID Step_Order
C001 S001 1
C001 S002 2
C001 S003 3
C001 S004 4
C002 S005 1
C002 S006 2
C002 S007 3
C002 S008 4
C003 S009 1
C003 S003 2
C003 S007 3
C003 S010 4
1 Like

This is a HUGE help and exactly what I needed. Thank you!! I assume that all of these tables are made in a individual tab within the same spreadsheet, correct?

1 Like

No. If using glide tables, they would all be separate tables. If using google sheets, they would be separate tabs in the same spreadsheet. It is not a best practice to merge different sets of data in the same table.

1 Like