Мне было поручено спроектировать и разработать веб-приложение для неправительственной организации (Non Govt Org), которая управляет начальными школами во многих городах и деревнях.Приложение будет вести учет всех школ, учащихся, волонтеров и учителей каждой школы.В настоящее время в ведении НПО находится около 30 школ, но у них очень амбициозный план по быстрому увеличению их числа.Мы разместим приложение на Windows Azure , используя SQL Azure в качестве базы данных.Теперь передо мной стоит сложная задача: как разработать свою базу данных с минимальными затратами (поскольку НПО полностью финансируется за счет благотворительных взносов и пожертвований).Поскольку вы, возможно, знаете, что базы данных в SQL Azure предлагаются в определенных размерах, например от 5,10,20 до 50 ГБ, это накладывает ограничение на максимальный размер каждой базы данных.Я предложил следующие подходы:
1) Для каждой школы создайте отдельную базу данных размером 5 или 10 ГБ.Каждая база данных будет иметь такие таблицы, как «студент», «предмет», «посещаемость» и т. Д. Проблема в этом подходе заключается в том, что потребуется создать много баз данных.Один на каждую школу.Это резко увеличило бы стоимость.Также изначально большая часть размером 10 ГБ будет использоваться недостаточно, но в будущем может случиться так, что 10 ГБ будет казаться меньше для хранения школьных данных.
2) Держите единую базу данных с таблицами типа «школа», «ученик», «посещаемость» и т. д. Изначально это позволило бы снизить стоимость, но с течением времени база данных начнет заполняться и может достигнуть максимального предела в 50 ГБ, так как НПО открывает больше школ.Также одна таблица для «ученика» и особенно «посещаемости» будет иметь огромное количество записей и замедлять запросы.Даже если в будущем мы добавим еще одну базу данных, насколько легко будет разбить таблицы на несколько баз данных.
Учитывая ограничения, мы не сможем продолжить.Любой подход или предложение от вас будет очень полезным для нас.Заранее спасибо.
РЕДАКТИРОВАТЬ: Спасибо большое, что люди ответили на мой вопрос.я понял: 50 ГБ - это огромное пространство, и оно не заполняется в ближайшее время.Но это вызывает у меня вопрос: рассмотрим ситуацию, когда количество школ вырастет до 200, 300 или 1000!Тогда как должен быть мой дизайн базы данных?Я полагаю, что 50 ГБ не будет большим в этой ситуации.