How can I improve this ERD for a bakery database?

Posted on 2014-09-28
Medium Priority
Last Modified: 2014-10-26

I am new to databases and am trying to make an Entity Relationship Diagram for a bakery. I attached what I have so far, but I know there must be a lot mistakes on it. Ultimately, the database will be created with Microsoft Access. From the database, I plan to create forms, generate reports, and do queries. What I'm not sure of, is if my ERD is organized enough that it will be able to do all of the following:

Inventory (Reports)
•      Tell how much inventory there is at a given time. Provide a running total of how much inventory is left
•      Insure that there is plenty of inventory (i.e. cake toppers for special orders) for future sales. Avoid stock-outs.
•      Baker should know which products to make the most of and which to make less of to avoid waste of inventory.
Sales (Queries & Reports)
•      Tell what items have sold and at what quantity.
•      Generate reports of most popular products and slow-sellers.
•      Owners should be able to see itemized records of daily, monthly, and yearly sales
Order Taking (Forms)
•      Orders will be assigned a unique number # for every order.
Also, I'm unsure of is how to do inventory of the bakery, since the process starts with ingredients then they're turned into finished goods. I wasn't sure if I should add a recipe entity.

Can someone please point out all the mistakes and tell me in which direction I should go on next? Any feedback is appreciated.

Thank You.
Question by:Jose Herrera
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 2
LVL 48

Expert Comment

by:Dale Fye
ID: 40349568
Jose,  Just checking, is this a homework assignment?

Author Comment

by:Jose Herrera
ID: 40350248
It's for a class project.
LVL 48

Accepted Solution

Dale Fye earned 2000 total points
ID: 40350442
There are limits to what we experts are allowed to contribute in this arena.  However, we can provide some assistance.  Questions you should consider as you review your ERD.

1.  Will this be tied into a Point of Sale system?  If not, keeping track of quantity on hand will be difficult.
2.  Will prices go up and down over time for a product?
3.  What is the difference between a recipe and a product ingredient list?
4.  I don't see an OrderDetails table, and am not sure what the difference is between a MenuOrderDetails and a SpecialOrdersDetails?
5.  Does the baker need to know how much of each ingredient to purchase?  If so, how would they determine that?
6.  Does the baker need to know how much to charge for an item based on what  ingredients and quantity of those ingredients?  How many of each product are produced in a single batch?  How much did each ingredient cost for a particular purchase, by what unit?
7.  Does the baker need to keep track of employee hours, salaries, schedules, vacation time?

These are just a few of the things I thought of while looking at your ERD and considering what a bakery might need in a database.
LVL 74

Expert Comment

by:Jeffrey Coachman
ID: 40357231
Other issues with answering "tell me whats wrong with my design" questions is the scope of the recommendations.
For example, your question title is: "How can I improve this ERD for a bakery database"
...yet some of your subsequent questions do not relate directly to the ERD:
For example:
    Generate reports of most popular products and slow-sellers.
    Owners should be able to see itemized records of daily, monthly, and yearly sales
...are, in essence, reporting aspects

To approach this from purely the standpoint of the ERD, ...here are some of my suggestions:
1. Add the following fields  the customer table:

2. Use a consistent naming convention, for example:
All Primary keys should end with "ID"
Do not include spaces in your names.

3. To me, you may not need a separate table for "Special Orders", ...perhaps a Boolean field in the Orders table would do...:
SpecialOrder: Yes/No

4. Differentiating between entities like Products and Ingredients can become an exercise in futility if these things are not very clearly defined.
In some cases a "Product" can end up being an "ingredient" or vice versa.
For example a Bagel can be a product you make from ingredients, ...but it can also become a "ingredient" in the case of flavored bagel chips.
Or suppose that another bakery wants to buy a sack of flour(an ingredient) from you as a "product"?

5. To me a "recipe" table is not needed in this database.

6. Rename the table: Order/Purchases, to just: "Orders"

7. Rename: Product Ingredients List, to simply,: ProductIngredients

8. You seem to be missing a ProductCategory table...?

To me questions like:
•      Insure that there is plenty of inventory (i.e. cake toppers for special orders) for future sales. Avoid stock-outs.
•      Baker should know which products to make the most of and which to make less of to avoid waste of inventory.
...are managerial functions, and deal with things like maximizing output.
Maximizing output is not a simple concept, and may have to be dealt with with special formulas, functions , or algorithms.
Furthermore, in most production systems, the "employee" (Baker) is not called upon to do these calculations.
In most cases the baker is simply given a list of things to bake.
...and since no manager can predict "future sales" with 100% accuracy, having "plenty of inventory", ...is a somewhat vague requirement.... (how much is "plenty" for each product/ingredient and for what time period?)

So, as you can see,  we could spend all of this month "suggesting" improvements.

So this leads to the main problem with these purely "academic" exercises.
Is this a neighborhood bakery of a large conglomerate Bakery?
Did this assignment start with the requirements, and you created the design?
Or were you given the requirements and the design?

...Without knowing *all* the aspects of this "theoretical" business, ...it is hard to make any read, meaningful suggestions
So you may want to narrow the scope of this question so that you can get more focused recommendations.


Featured Post

Moving data to the cloud? Find out if you’re ready

Before moving to the cloud, it is important to carefully define your db needs, plan for the migration & understand prod. environment. This wp explains how to define what you need from a cloud provider, plan for the migration & what putting a cloud solution into practice entails.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

This post contains step-by-step instructions for setting up alerting in Percona Monitoring and Management (PMM) using Grafana.
In this article, we’ll look at how to deploy ProxySQL.
In Microsoft Access, learn different ways of passing a string value within a string argument. Also learn what a “Type Mis-match” error is about.
Do you want to know how to make a graph with Microsoft Access? First, create a query with the data for the chart. Then make a blank form and add a chart control. This video also shows how to change what data is displayed on the graph as well as form…
Suggested Courses

765 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question