Ребят, кто знает подскажите:
БД делаю не часто, а тут дело такое, вообщем есть база данных поступающих студентов. Вопрос как правильней это все организовать – на каждый год поступления создавать новую таблицу (каждый год добавляется примерно 3000 записей – абитуриентов) или же все впихивать все в 1 таблицу, а затем устаревшие записи скидывать в дополнительную таблицу (записи должны быть сохранены на достаточно долгий период и могут иногда использоваться в запросах и составлении хранилищ)?
Прошу просто поделиться опытом, поскольку может кто такое делал когда-то подобные базы.
Примечание: активная часть данных это студенты поступавшие в течении последних 5 лет (с 1 до 5 го курса), остальные просто записываются в базу и редко используются.
11 марта 2010 в 9:05
Индексированные представления сделай для того что ты хотел в отдельные таблицы вынести и все.
11 марта 2010 в 0:01
Спасибо всем за советы, буду разбираться!
11 марта 2010 в 0:00
ну вот теперь собери, смоделируй и вперед к проектированию
)))
10 марта 2010 в 23:05
аналогично. только постарайтесь так, чтобы мухи отдельно – котлеты отдельно:
Студенты: ИД, ФИО, Паспортные данные, …
Группы: ИД, Название, Год_поступления, …
Группы_студенты: Группа_ИД, Студент_ИД.
ну и так далее.
ЗЫ: SQL Server 2008 шутя справляется с сотнями тысяч записей. так что отдельный архив не нужен, главное индексы правильные создать.
10 марта 2010 в 23:02
Три тысячи в год, 15 000 активных всего… Не думаю, что имеет смысл создавать отдельные таблицы, при таких числах это не даст особой выгоды.
А вот архив стоит сделать отдельно.
В итоге: одна база активных записей, одна база на архив.
Раз в год активные переносятся в архив.
И для каждой записи лучше хранить не номер курса, а год поступления – это избавит от мороки с ежегодными переназначениями(хоть она и не велика).
10 марта 2010 в 23:02
На счет СУБД, база разрабатывается на SQL Server 2008, под Web-клиентов на Java
10 марта 2010 в 23:01
я против нескольких таблиц для !студентов!
если одну таблицу для всего использовать сложно, тогда таблицы необходимо использовать следующие:
- абитуриенты
- студенты
- выпускники
- резерв
==
в случае надобности, всегда можно перебрасывать записи из одной в другую
10 марта 2010 в 23:00
3000 записей в год для СУБД это детский сад. Тем более при правильном проектировании. Если только это нормальная СУБД, а не какой-нибудь Paradox
У нас за сутки добавляется где-то тысяч 5 записей. СУБД IB 2009
10 марта 2010 в 22:03
Даже так, тогда думаю стоит опыт вашего универа перенять)). А насчет отчисления/перевода есть специальные таблицы, в которых содержатся характеристики этих движений (то есть куда, откуда, почему и тд).
10 марта 2010 в 22:02
1. есть 5 таблиц на каждый курс актуальных на данный момент (их всегда будет 5, заголовок менятеся только 2005 5 курс, 2006 5 курс).
2. есть таблицы отчисленных (Это для каждого года по таблице).
3. есть таблица окончивших для каждого года (для 2005, 2006)
10 марта 2010 в 22:02
Ок, спасибо, буду думать.
10 марта 2010 в 22:02
У нас в универе так это все устроено, Хотя можно оставить 1 пункт (5 таблиц), удалить таблицы отчисленных и добавить поле отчислен в таком то году , в карточке студента. А вот если несколько раз отчислен , но это так тонкости
10 марта 2010 в 22:01
Спасибо, то есть просто растет число таблиц: 1год ++1таблица! Хотелось бы узнать как бы это сказывалось на БД лет эдак через 15, и в связи с этим создать более менее универсальную структуру, чтоб ее почти не потребовалось модифицировать из-за проблем ФИЗИЧЕСКОЙ организации!
10 марта 2010 в 22:00
А я бы сделал так:
У нас 5 курсов ? , значит пять таблиц актуальных на данным момент. При отчислении Переносим в таблицу отчисленные в такомто году. Закончил , тогда кидаем в таблицу в таком то году закончившие. + Надо хранить (наверное) те кто отчислен с первого курса, ибо на первый курс не восстанавливают