Une virgule est nécessaire si la proposition subordonnée avec « qui » complète ou précise le mot, mais ne limite pas son sens. Dans ton exemple, c'est correct : « J'ai acheté un livre qui était sur l'étagère » - une virgule est nécessaire. Ici, la proposition ajoute simplement une information sur le livre, on peut la supprimer sans perdre le sens.
Mais si tu écrivais « J'ai acheté un livre qui m'a plu », une virgule s'impose aussi - c'est une proposition subordonnée explicative. On écrit sans virgule seulement dans de rares cas, quand la proposition subordonnée *limite* le sens - par exemple, « Les livres que j'aime » peut désigner un ensemble précis de livres, différent des autres. Mais même là, la norme moderne exige souvent une virgule, donc mieux vaut ne pas prendre de risques.
Voilà un moyen simple de retenir : si la proposition subordonnée suit un nom et commence par « qui/que » - mets une virgule avant. Les exceptions sont rares, et dans la correspondance ordinaire, tu ne te tromperas presque jamais en la mettant systématiquement.