Without going to a potentially infinite number of rating columns (one per person/rating source) I can think of a couple of ways.
The simplest is a tag-like column. In that, you record a series of names that have given the thumbs up. Then the score is the total number of approvals.
But, I think I would do it with a tag-value. That would have a tag for who the rating came from, and a value for their rating. Then you average those ratings. Or you do something to weight the ratings based on the source and then calculate from there.
So, the value in a column for a book would look something like:
Code:
Bill Gates=4, Naval Ravicant=4, davidfor=1, Goodreads=3.9
Then you could create a template in another column that could calculate the overall rating from that. That could include a weighting for different sources (obviously, "davidfor" would have weighting of 0.001 and Goodreads would be a bit lower). And handle whether the number is out of five or ten or a simple thumbsup/thumbsdown.
I used an equals sign above as that is what I tend to use elsewhere for tag-value. But, it might work better to use a colon like an identifier. I'd have to look at the template functions to decide.
I would probably do it as a plugin with a predefined list of sources and the weights. Or a way to add them as needed. And then calculate the weights.