My requirement is : I want to develop a site where there will be a site collection,and the root site will be for site admin who can add the data to the site and around 20 subsites which will use around 90% of data from the top level site . My question is regarding the Design : above mentioned design is it correct ? or in the above scenario how should i go and plan the site structure and the permissions ?
As you're reusing lot of the data from the root, I would consider just using the root for everyone - and even move the 10% to the root, if possible.
If you would have subsites, but the data on root lists, you would anyway need to define permissions in two places: lists and the subsites. Assuming of course that you would like to hide the subsites from people just to keep the UI clean.
So, if you would have all data on the lists at the root site, then you would use permissions to prevent access to specific lists/items. Then use Audience targeting to display only the required web parts on the root site for correct groups of people. You can target Web Part for a Group also, not just actual audiences.
Points to notice: - try not to make the permissions too fine-grained. More fine-grain = more administrative work to keep the permissions correct + more risk in making a mistake. So, try to avoid item level permissions and raise the permission definition level to folders or lists/libraries at least. - is this at all possible, considering the rest 10% of the data? Can you move it to root?
This is a broad question and there is no easy answer. But at first sight your architecture makes sense. You'll need to create site columns at the top level (most probably lookups), and consume them in your sub-sites.
Everybody will need to have read access to the top level. Then you can customize access to each sub-site.