В этом случае вам поможет внедрение
конечного автомата.
Вместо использования флага и введения новой таблицы вы можете использовать ту же самую таблицу с колонкой "состояния". К пример draft, on_moderation, published, archived и так далее.
Этот способ поможет в будущем, когда будет несколько состояний. Плюс конечные автоматы помогают описать некий процесс (например у вас - публикацию и модерацию контента).
Если будет рабоатть все на флагах, то потом придется учитывать множества состояний. Типа is_moderation, is_deleted, is_achived и так далее.
А что касается, если пользователь редактирует версию уже опубликованной статьи, то здесь зависит от того, как у вас внутри приложения все устроено. Скорее всего нужно вводить таблицу с "версией" статьи, где будет сохраняться контент. Т.е. когда юзер что-то редактирует, создается новая версия, а в articles содержится id это версии article_version_id например.