2013-02-28 2 views
0

На самом деле я создаю программное обеспечение для учебных заведений, поэтому я просто хотел узнать ответы на несколько вопросов:больше таблицы или больше строк лучше в sql?

Как вы знаете, некоторые новые данные будут генерироваться каждый год (для новых допущений), а некоторые будут обновлены , Поэтому я должен хранить все данные в одной таблице с разделением учебного года (как столбцы, такие как ac_year), или я должен составлять отдельные таблицы для каждого года. Кроме того, существуют разные таблицы для хранения информации, например, классов, меток, платы, хостела и т. Д. О студентах. Таким образом, каждая информация, как Плата будет храниться в различных таблицах, как Плата-2010 Плата-2011 Fee-2012 ...

Или в одной таблице 1 Fee с года в качестве столбцов.

Еще один момент заключается в том, что вскоре после 1-2 лет база данных будет тяжелее, поэтому резервное копирование данных за один год будет возможно в отдельной таблице (например, с годом в виде столбца)?

И Пожалуйста, ответьте имея в виду SQL Server 2005.

Благодаря

+0

Просьба уточнить больше. Вам нужно показать, какие усилия вы сделали. Измените свой вопрос, иначе я боюсь, что никто не сможет вам помочь – DevelopmentIsMyPassion

+0

Пожалуйста, просто добавьте столбец 'ac_year' на все эти таблицы. Одна из разновидностей вашей таблицы в год - это кошмар для обслуживания, а также будет значительно осложнять запрос ваших данных впоследствии – Lamak

+0

, но еще одна вещь: если я храню всю информацию в одной таблице, то через несколько лет база данных будет тяжелый. Итак, как бы я мог резервировать только данные за 1 год из таблицы. А также я могу позже использовать отдельные (резервные и удаленные) данные из таблицы. – user2106652

ответ

1

Это не характерно для хранения данных в нескольких таблицах, основанных на временных ограничений. Я бы предпочел сохранить все это в одном столе. В будущем вы можете посмотреть на архивирование старых данных, но все равно будет значительное время до того, как производительность станет проблемой.

+1

Обычно, если вы видите необходимость разбивать результаты по времени, вы создаете секционированную таблицу (хотя истинное разделение доступно только с Enterprise в SQL 2005). Разделение может значительно повысить производительность, но на самом деле не требуется, если у вас нет большого количества строк для обработки. Для приема в школы это, вероятно, не требуется (если вы, возможно, не принимаете вступительные экзамены для каждой школы в Техасе сразу). –

+0

:) yup, но на самом деле я бы хотел хранить изображения студентов в базе данных, чтобы он мог быть доступен для других сетевых клиентов. – user2106652

1

Всегда лучше добавить новое свойство для сущности, чем создать новый объект для каждого другого свойства. Таким образом, обслуживание и запрос будут намного проще для вас. В части выполнения запроса вам не нужно беспокоиться о внутренних делах данных и базы данных. Если возникнет реальная проблема с производительностью, существует множество решений, таких как Создание индекса в годах, как в вашей ситуации.

2

Как вы говорите, вопрос заключается в том, чтобы четко хранить данные в одной таблице с указанием года (или даты или другой информации) в качестве столбца. Это просто правильная вещь. С течением времени вы имеете дело с одним и тем же лицом.

Единственное исключение было бы при значительном изменении полей с одного года на другой. Я сомневаюсь, что это касается вашего стола.

Если ваша база данных действительно становится большой, вы можете разделить разбивку таблицы на время. Каждый раздел будет стоить один год. Это ускорит запросы, которые требуют только одного года. Это также помогает при резервном копировании и восстановлении данных. Это может быть решение, которое вы в конечном счете ищете.

«Действительно, большой» означает по крайней мере миллионы строк в таблице. Даже с несколькими миллионами строк в таблице большинство запросов, вероятно, будут работать на достойном оборудовании с соответствующими индексами.

Смежные вопросы