Только вы можете знать какие именно задачи вы решаете и какие данные вам нужно хранить. А главное как потом их использовать.
Если это просто список заявок и потом не потребуется каких-то отчетов или подсчета аналитики - то можно хранить данные и в JSON внутри поля записи о заявке. Современные версии PostgreSQL имеют довольно хорошие возможности работы с такими JSON полями.
Если же есть прогнозы что в дальнейшем нужно будет собирать каку-то статистику из разряда "дайте нам три товара, которые больше всего покупали в третьем квартале прошлого года" и т.п - то лучше сразу хранить данные в таблицах и использовать связи между таблицами.
Самый простой вариант для вашего случая - это три таблицы.
- Таблица товаров - где есть описание каждого товара. И главное тут есть уникальный id определяющий запись в этой таблице.
- Таблица заявок - гже хранятся все данные по конкретной заявке. И соответственно есть id заявки
- Таблица для связи заявкок и товаров входящих в эту заявку. Т.е. здесь обязательно должны быть два поля - id заявки и id товара. Можно еще добавить поле "количество" - в котором будет задаваться количество товаров - если такое допустимо в вашей системе. Т.е. если в рамках одной заявки можно купить больше чем одну штуку какого-то товара. Если это не нужно, то и поле не нужно.
А дальше все просто. Когда в заявку добавляется товар, то в таблицу связи добавляется запись. Сколько товаров в заявке - столько записей в этой таблице у которых один и тот же id заявки, но разные id товаром.
Это если на пальцах. А более серьезно это можно почитать в любой статье про SQL для начинающих. Где пишется про нормализацию таблиц и про связи "одни-к-однуму", "один-ко-многим" и "многие-ко-многим".