С реляционными базами 2 варианта: 1 (на мой взгляд наиболее предпочтительный) — это создание полей для всех возможных вариантов, 2 — хранение сериализованных данных в blob. 2 вариант имеет огромный минус — не получится выполнять сортировку.
Если допускается использование NoSQL решения, то я бы сделал примерно так:
{
/* ... */
"salary": {
"fixed": 30000,
"bonus": 1, // Тип бонуса, например 1 - процент, 2 - премии и т.п.
}
},
{
/* ... */
"salary": {
"range": [28000, null], // Сверху не ограничено
}
},
{
/* ... */
"salary": null, // Не указана (договорная)
},