I've been because of the task to create and create a web application for any NGO (Non Govt Org) which runs primary schools in lots of cities and towns. The applying will keep track of all of the schools, students, volunteers and also the instructors of each and every school. Presently you will find about 30 schools within the NGO's umbrella however they have very ambitious intend to boost the number very quickly. We'll host the application on Home windows Azure using SQL Azure because the database. Now i'm facing a difficult task regarding how to design its database with minimum expenditure (because the NGO is funded completely by non profit organizations and donations). As you may realize that the databases in SQL Azure is provided in specific dimensions like 5,10,20 to 50 GB, it puts a set limit around the maximum size each database. I've arrived on the scene with following approaches:
1) For each school produce a separate database of five or ten GB size. Each database may have tables like 'student','subject','attendance' etc. The issue within this approach is that many databases must be produced. One for each school. This could drastically skyrocket the price. Also initially a sizable part of 10 GB size is going to be under-utilized, however in future it might happen that 10GB would appear less for storing a school's data.
2) Have a single database with tables like 'school','student','attendance' etc. This could keep your cost low initially but throughout span of time the database would start filling and could achieve the max limit of 50GB weight loss schools are opened up through the NGO. Additionally a single table for 'student' and particularly 'attendance' may have large numbers of records and will make the queries slow. Even when we add another database later on then how easy will it be to separate the tables across several databases.
Keeping the restrictions in your mind we're not able to proceed further. Any approach or suggestion by you'll be very useful for all of us. Thanks ahead of time.
EDIT: Thanks to folks clarified my question. i acquired the purpose: 5O GB has become a space and it wouldn't get filled in the near future. But which brings us a question: Think about a situation when the amount of schools develop to 200, 300 or 1000 !! Then how ought to be my database design ? I guess 50 GB wouldn't be large at this situation.
50 Gb is a great deal of information. School personnel and attendance is a nice small problem. A correctly designed database is not likely to approach 50 gb for many years, a minimum of.
Even 60 schools shouldn't generate much data, even when you are monitoring standardized testing data of some type. If there's another school from grades 6 to 12 (I am while using U.S. for any reference) around the quarter system, with typically 6 classes per student and 1000 students within the school, there are only 24,000 class records each year. Not every 30 schools will be secondary schools. 50GB ought to be plenty. I labored using the a database that contains enrollment, testing, student and teacher information for among the greatest school districts within the U . s . States. After 7+ years their database barely contacted 30GB.