Храните. например, каждое свойство - отдельная таблица со связкой + таблица агрегированных данных на каждый объект. Так вы получите выбор всех объектов по свойству + быструю отдачу данных. 5000 объектов — не та цифра, из-за которой заморачиваться по поводу занимаего места. А можно хранить связки не в каждой таблице, а в отдельной связывающей. В прочем, я не вижу, чтобы здесь была какая-то просадка по скорости даже на 80 джойнах, если везде связь по primary key.