Avatar of the_b1ackfox
the_b1ackfox
Flag for United States of America asked on

Storing OOP data in a Mysql DB

Hello experts,

I am working on an expert system which will run through a website I have in development.  The purpose is to provide step by step instructions based on Project by state, so no matter who is working the queue, we end up with a consistent build.  So this question is based in OOP theory and how to bring about a result (storing the data in a database...  Because if you can put it in there...  I can retrieve it... hopefully, lol.  So I am going to use a dumb made up example so I don't give up the secret sauce.  So lets go with cake.   Bob is our baker, and Karen is our master chef.  Karen has checked with each state law on how to make each specific kind of cake that we have seen, and we need to consider a default outcome for recipies she hasn't seen.

So Bob looks in his queue and sees a ticket to make a Strawberry Cake in Colorado.  Karen has predefined that Bob need to 1) pour batter A  into 2 baking pans, 2) bake the cakes 3) ice the middle using frosting C and then 4) send to shipping.  Bob see's the "preflight" instructions and follows them diligently.   Bob once again looks in his queue and sees a ticket for a Strawberry Cake in Hawaii  (State law says we have to use batter B (gluten free)).  Karen has predefined that Bob need to 1) pour batter B  into 2 baking pans, 2) bake the cakes 3) ice the middle using frosting C and then 4) send to shipping.  

A ticket can have up to 3 cakes on it ever,  And Karen needs to be notified whenever there is a request that does not have a preflight instruction.  

So if you have read through all of that, how would you design the database to hold the data?
* Object Oriented ProgrammingMySQL Server

Avatar of undefined
Last Comment
the_b1ackfox

8/22/2022 - Mon
David Favor

Likely best to store your data as JSON.

So your data will... just be data... Your code will be OOP to pack/save/retrieve/unpack/use your JSON data.

You can also use other data forms like YAML + MySQL provides a huge amount of built in intelligence around JSON data.
Dave Baldwin

Before you can design the database, you have to decide how you are going to recognize the conditions involved in making the decisions.  It looks to me like your selection process needs to list the available recipes along with 'Other' which is the condition where Karen gets notified.  That's the simple version.  Maybe a form that includes the necessary options for doing the data lookup.
the_b1ackfox

ASKER
The condition for notification will be pretty easy...  Cake+state has no recipe then notify Karen.  We'd use a form to capture the cake requests, and Karen would also have a form to assign steps for the Cake+State combo
Experts Exchange has (a) saved my job multiple times, (b) saved me hours, days, and even weeks of work, and often (c) makes me look like a superhero! This place is MAGIC!
Walt Forbes
ASKER CERTIFIED SOLUTION
lenamtl

Log in or sign up to see answer
Become an EE member today7-DAY FREE TRIAL
Members can start a 7-Day Free trial then enjoy unlimited access to the platform
Sign up - Free for 7 days
or
Learn why we charge membership fees
We get it - no one likes a content blocker. Take one extra minute and find out why we block content.
Not exactly the question you had in mind?
Sign up for an EE membership and get your own personalized solution. With an EE membership, you can ask unlimited troubleshooting, research, or opinion questions.
ask a question
David Favor

You can use CRON, as lenamtl suggested.

Sometimes more immediate/realtime notifications are required.

For this, you'll use triggers to run some external script.

Tip: Plumb your triggers to run some given single script, passing verbs to one script to invoke given actions.

This collects all code into a single script. Then if required, have your trigger script dispatch other scripts.

Taking this approach means you have a single dispatching script run for all triggers, which provides a common setup for adding new triggers + tends to simplify debugging over time.
lenamtl

If you are not on Linux you can replace the cron job by Windows task management.

Or you can use MySQL Event Scheduler fantastic to use when available on PHPMyAdmin
the_b1ackfox

ASKER
Thank you guys for your input into the whole process.  The developer I was working with went MIA for quite a while, and cause the whole project to lag.
Get an unlimited membership to EE for less than $4 a week.
Unlimited question asking, solutions, articles and more.