Minoru остановите Землю, я сойду: гуглю, как правильно делать автоматы на SQL, а мне предлагают заняться machine learning с помощью SQL. Безумие какое-то!
Minoru а я наоборот хочу хранить только текущее состояние, без истории. И вот у меня вопрос: лучше все эти данные запихнуть в одну таблицу, или лучше для каждого состояния сделать отдельную?
Minoru в первом случае вроде как проще выяснить текущее состояние: смотрим на строку и по полям определяем, какое они описывают состояние. Но тут чревато багами (забыли посмотреть на какое-то поле, забыли обновить какие-то поля когда меняли состояния etc.)
Minoru во втором случае для выяснения текущего состояния нужно посмотреть в каждую табличку, мне это кажется не очень разумным. Зато баги попроще (можно забыть удалить запись о предыдущем состоянии, но не более того)
Minoru в принципе, можно в перечне сущностей хранить поле, показывающее, в каком сейчас состоянии эта сущность. Тогда не нужно просматривать все таблички, а забытая неудалённая запись никого не запутает (потому что на неё уже не смотрят)
А если на изменения состояния делать события и хранить их в бд, тогда ты можешь получить актуальное состояние просто схлопнув все события. И тебе уже не особо нужно париться про таблицы. Это если не особо требуется производительность. Или ты прям хочешь автомат именно, а не задачу решаешь?