This depends on what your rating algorithm and requirements are. You can just record the number of stars received using five fields instead of one:
star1 integer not null default 0,
star2 integer not null default 0,
...
star5 integer not null default 0,
but if you do, you lose the possibility of "cooling off" ratings and changing idea on the user's part.
On the other hand, this accepted answer algorithm requires only to store the mean, so you can store
stars integer not null default 0,
voters integer not null default 0,
...but now the user cannot retract his vote, and indeed not even know whether he has voted or not.
(You can compromise by storing daily or weekly votes into one table, with datetime and voter id and whatever, and then "distilling" older results in the average table. Now the voter can see and undo what he did in the last week).
So what you need to do is to clearly state your requirements - what can the user do? What must the system be able to do? etc. - and work out what information needs to be known; then you derive the table(s) structure from there. If the data is too much (10,000,000 records isn't much) you either try throwing more hardware at it, or see if you can scale somehow - for example if you don't (often) need cross-article information (such as "the most starred articles"), nothing stops you from partitioning the rating table across different servers based on article id until each partition is small enough for your taste.