Skip to main content

You are not logged in. Your edit will be placed in a queue until it is peer reviewed.

We welcome edits that make the post easier to understand and more valuable for readers. Because community members review edits, please try to make the post substantially better than how you found it, for example, by fixing grammar or adding additional resources and hyperlinks.

5
  • 4
    Sounds like what you are looking for is schemas for "workflow". You might try searching for that term. Commented Aug 8, 2018 at 4:40
  • 3
    Usually you not starting with database schema, starts with your application logic. If part of the logic is saving current state and retrieving it later - implement it in memory first. Create an object with all data you want to persist and use this object to "restore" application state. You can serialize or deserialize that object (Json, Xml for example) for now. Later when you move further you will see what kind of database you want to use based on the structure of your object. Commented Aug 8, 2018 at 10:50
  • I'd employ a state machine or the state pattern. And for every possible state, I would model the data required and design the necessary scheme for it to persist that data into the db. Edit: You may have one starting point, ~10 states to which you can transition in various ways. And each 10 states hold different data about the state itself. So then I there would be 10 tables for them. I would then probably also create a state transition / history table to be able to know which path each User took, etc. Commented Oct 7, 2018 at 16:07
  • 1
    The first step, I would say, is to define the repeatable pattern. You're currently showing use a blob of ifs (which imo isn't particularly readable) - can you break this down to its recurring core constituent? As an analogy, your question currently contains a LEGO sculpture; can you instead provide an accurate definition of what a LEGO block is? (That definition is going to be essential if you want to be able to efficiently store this information) Commented Oct 8, 2018 at 7:16
  • What happens in "..."? Is it user input or arbitrary code execution or something else? Commented Jan 5, 2019 at 12:21