Most of that looks fine, though I"m not quite sure what the art_commentsA, art_commentsB, art_ratingsA, and art_ratingsB are for. The rankings part you've got an issue with, though. How you're currently thinking about doing it won't work, because you won't know how many people will have already rated it. Take the following example:
1) you have 2 ratings, 1 and 5. Therefore, (1+5)/2 = 3, which would be the average. Then you get a third rating, 5. (3+5)/2 = 4, which is your new average.
2) you have 3 ratings, 1, 5, and 5. (1+5+5)/3 = 11/3 != 4.
So you've got an issue with the logic there. If you want to be able to track visitors that rate your articles (for example, to prevent duplicate entries from the same IP), then you'll need to hold every vote, with a table like you have. If you only want to keep track of the total, then you can have two columns in your article table, one for the raw ranking, which is just the sum of all the rankings for the article, and the other being the number of people who have voted.