|
#1
|
|||
|
|||
БД ВУЗ
Создается БД ВУЗ, ведется учет студентов, предметов, преподавателей и т д. Также в БД должны хранится результаты сдачи студентами зачетов, и екзаменов. Некак не получается организовать даную возможность, скажем так оптимально организовать. Как субд используется Firebird, но в моем случае не важно Какая субд, мне бы любой пример как можно хранить результаты студентов. С етими результатами в будущем предпологается работать дальше, тоисть определять успешные и не успешные групы, сравнивать разные групы и т д. Даную БД создаю для Магистерской. Хоть практического применения она не будет иметь, но проверять будут тщательно. Количество Студентов в среднем 15 тысяч. Буду рад любым советами. Если не понятно изложил вопрос пишите, попытаюсь изложить по другому. Прошу помощи сдесь так как сам пришол в тупик и не вижу выхода.
|
#2
|
||||
|
||||
Ты начинай работать а народ если будет нужно поможет.
|
#3
|
|||
|
|||
Да я работаю)
В БД созданы таблицы Студенты, Преподаватели, Групы, Предметы и так далее. Вот когда прихожу к созданию таблиц для учета успеваемости все стопор. Пытаясь создавать ее по образу: ID|ID_Stud|ID_Object|ID_Teacher| ... Получается что все время у меня повторяеются студенты , и предметы , должен быть какой то выход но не вижу его. Пытался по другому создавая для каждой групы свою таблицу, но как на меня тоже не вариант. Нужна хоть какая то идея, а то стою на месте. |
#4
|
|||
|
|||
Не пойму в чем тупик то?
Например [Table_Group] ID Group [Table_Student] ID FIO IDGroup [Table_Predmet] ID Predmet тогда оценки по предметам будет таблица ID IDFIO IDPredmet Ocenka Создавать для каждой группы отдельную таблицу не стоит. Новый вирус - "БОМЖ"! Он просто роется в Корзине...и спит под ярлычком "Сетевое окружение" |
#5
|
|||
|
|||
Цитата:
Суть в следующем: Каждый студент в каждом семестре сдает 10 предметов в среднем. Написав как ты советуеш я и сам пытался, получается что нам прийдется для каждого студента писать: ID_STUD ID_PREDMET stud1 Predmet1 stud1 Predmet2 . . stud1 Predmet10 потом также для второго студента и т д . Поскольку стедентов 15 тыс. То на 1 семестер ето будет 150 тысяч записей. По моему слишком много, и я считаю что должен быть какойто обход для етого повторения даных типа: ID_STUD ID_PREDMET Чтото с помощью дополнительного расбивания на таблицы или тому подобное. Вот в етом моя проблема собственно. Мжет быть ето считается нормальным , ктото из знающих подскажет но насколько помню одно из правил Нормализации БД какраз говорит что такие вот случаи надо выключать с помощю расбивки на дополнительные таблицы. |
#6
|
|||
|
|||
Как раз таки нормализация данных говорит о том что б не было повторяющихся данных!!!(это так, в общем)
Разбитие на таблицы и бессмысленно и трудоемко в плане выполнения запросов. 150 К записей это не много. потом, это таблица связей. Где вы увидали повторяющиеся записи? по большому счету в этой таблице еще поле Semestr и так представим студенты 1 Иванов 2 Петров 3 Сидоров Предметы 1 математика 2 азбука 3 Письмо Семестры 1 01.09.2010-01.01.2011 2 01.01.2011-01.06.2011 в итоге будем иметь таблицу вида: Студент Предмет Семестр Оценка 1 1 1 4 1 2 1 4 1 3 1 2 2 1 1 2 2 2 1 3 2 3 1 4 3 1 1 5 3 2 1 4 3 3 1 5 Покажите мне хоть одну повторяющуюся запись? не поле в таблице а именно запись (если понятней строку!) а следуя вашей логике, надо создавать на каждого студента по таблице. Новый вирус - "БОМЖ"! Он просто роется в Корзине...и спит под ярлычком "Сетевое окружение" Последний раз редактировалось Black Raider, 28.01.2011 в 17:55. |
#7
|
|||
|
|||
Ну мб не много, моя логика совсем не имела ввиду создавать таблицу для каждого студента, а просто имела ввиду можно ли как небудь уйти от того чтобы все время записывать Студент - предмет, и потом повторять это. ИБо я смотрю какбы со стороны что ведь студент не меняется , изменяются только предметы в даном случаю. Или записывать даным способ вполне примемлемое и привычное дело?
Если так нормально писать тогда гуд, а то как всегда ищу какоето решение ибо считаю что первое пришедшое не единственное, и не совсем правильное. Если так как вы предлагает вполне нормально писать тогда вопросов больше нет, просто нету опыта чтобы самому судить насколько правильно все это). Спасибо за помощ. Последний раз редактировалось Fides, 28.01.2011 в 18:06. |
#8
|
|||
|
|||
Цитата:
в принципе можете завести еще одну таблицу ID IDStudent IDPredmet писать в нее практически тоже кол-во записей а в таблицу с оценками вставлять ID из этой таблицы. Новый вирус - "БОМЖ"! Он просто роется в Корзине...и спит под ярлычком "Сетевое окружение" |
#9
|
|||
|
|||
Что я выиграю от того что сделаю две таблицы в которых будет столько же записей? Судя по всему нечего оно изменить же не должно, и как вы писали выше можно записать все в одну таблицу.
|
#10
|
|||
|
|||
В данном случае абсолютно ничего.
Новый вирус - "БОМЖ"! Он просто роется в Корзине...и спит под ярлычком "Сетевое окружение" |
#11
|
|||
|
|||
Тогда сделаю все в одной таблице. ищо раз спасибо.
|
#12
|
|||
|
|||
Подскажите и покажите пожалуйста как мне реализовать сводную ведомость в dbdrid или stringGrid, примером, чтобы в первом столбце у меня выходили фамилии студентов, второй столбец высчитывал коэффициент успеваемости, а начиная с третьего выводились названия предметов!
Все данные беруться из таблиц Paradox. |
#13
|
||||
|
||||
Цитата:
Глаза боятся - Руки делают... А еще я не внимательный... |
#14
|
||||
|
||||
Цитата:
P.S.Судя по информации из интернета у Access максимальный размер БД 2ГБ, думаю Вам с лихвой хватит... Глаза боятся - Руки делают... А еще я не внимательный... |
#15
|
|||
|
|||
Цитата:
Есть таблицы:stud(id,stud_fam,id_gr,GodPostup) group(id_gr,name) ucheb_plan(id_semestr,id_spec,id_discip) discip(id_discip,name) vedomost(id-spec,id_gr,id_stud,id_discip,id_semestr) Код для заполнения таблицы, я пока только смогла сделать заполнение фамилий сортируя по группе и году поступления Код:
procedure TForm1.TreeView1DblClick(Sender: TObject); begin Query1.Close; Query1.SQL.Clear; Query1.SQL.Add('SELECT ss.Stud_fam FROM stud ss, groups g'); Query1.SQL.Add('WHERE ss.Id_gr=g.Id_gr and g.Name='+TreeView1.Selected.Text+'and'); Query1.SQL.Add('ss.GodPostup='+QuotedStr(ComboBox1.Text)); Query1.Open; dbgrid1.Columns.Items[0].Width:=100; dbgrid1.Columns[0].Title.Caption:='ФИО'; end; |