С точки зрения согласованности данных вы можете нормализовать свою схему, а не перечислять пользователей, отели и т. Д. В массивах.Например, есть таблица соединения между вашими таблицами coupons
и users
, которая отслеживает пользователей, которые ограничены определенным купоном.Вы можете добавить уникальное ограничение на комбинацию внешних ключей купона и пользователя, чтобы избежать записи дубликатов.При использовании массива вы склонны к дублированию, поэтому вам захочется обработать ваш массив либо в вашем запросе (например, unnest()
с последующим group by
), либо в коде приложения.
ВВ больших масштабах существуют также потенциальные проблемы производительности с массивами типов переменной длины.Это если вы придерживаетесь text[]
, который, я подозреваю, должен быть integer[]
.Смотри https://heapanalytics.com/blog/engineering/dont-iterate-over-a-postgres-array-with-a-loop