Without knowing a LOT more about your particular usage/system/etc I can't offer a lot of comment on the overall usefulness, correctness, or completeness of your solution.
As Tony pointed out, five million rows will get a database engine to pay attention to your query. Five thousand is "makework" for most engines.
If your schema works for you (and your use of the term 4NF makes me think that it will), the databse engine should happily chew through it with gusto!
-PatP
Edited to correct a minor bone-head on my part. I was talking to one person, and typing about a different person, and confused the names!