По сути, вы спрашиваете, как добиться полиморфизма в реляционной базе данных. Существует много подходов (как вы сами демонстрируете) к этой проблеме. Одним из решений является использование наследования «таблица на класс». В этой настройке будет родительская таблица (сродни вашей «платной статье»), которая содержит уникальный идентификатор и поля, общие для продуктов и услуг. Будет две дочерние таблицы, продукты и товары: каждая будет содержать уникальный идентификатор для этой сущности и специфичные для нее поля.
Одним из преимуществ этого подхода по сравнению с другими является то, что вы не получите одну таблицу с множеством обнуляемых столбцов, которая по сути становится дампом для описания чего-либо («без схемы»).
Одним недостатком является то, что по мере роста иерархии наследования количество соединений, необходимых для получения всех данных для сущности, также увеличивается.