|
БД подготовки к единому госэкзамену.
|
|||
---|---|---|---|
#18+
Сперва о предметной области: Все вы наслышаны о одином государсвенном экзамене, так вот моя программа призвана служить бедным выпускникам для подготовки к единому экзамену, а именно разделу математика. Структура теста такова: Имеется 3 категории: А, В, С. Категория А: Всего в разделе А пять вопросов. Пользователь просто выбирает правильынй ответ. Причем как в вопросе так и в ответе содержаться формулы. Правильный ответ может быть только один. Категория В: В разделе 3 вопроса. На форме отображается Компонент Edit и пользователь вводит в него целое чисто являющееся ответом. В вопросе попрежнему может быть формула. Категория С: В разделе 2 вопроса. Пользователь решает задание которое ему предлагает программа, просматривает решение задачи, нажав на соответсвующую кнопку, и выставляет себе оценку от 0 до 3 баллов. Всего таких тестов в районе 80 и состаляться эта БД будет на несколькиз компьютерах с последующей её сборкой в единое целое на одном. Вот тут то и проблема. Сперва я подумывал каждому тесту присвоить свой автоинкрементный id но так как разрабатываться она будет на разных компьютерах, то я так понимаю id будут совпадать и склеить правильно не получиться, вобщем выскажите всё что думаете, по поводу ключевых полей в таких случаях. Еще я бы хотел сравнить свой эскиз Бд с вашим чтобы придти к чему то оптимальному. Всем заранее спасибо! ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2003, 12:00 |
|
БД подготовки к единому госэкзамену.
|
|||
---|---|---|---|
#18+
Пока что я имею: Бд из из 5 таблиц: 1)Таблица тем - хранение имен тестов и кол-ва вариантов Уравнения и системы неравенств | 2 2)Таблица вопросов из части А Сссылка на тему | Номер варианта | Номер вопроса | Вопрос (тип BLOB) 3)таблица ответов А Ссылка на вопрос | Ответ (тип BLOB) | Метка (правильно/неправильно) 4)Таблица раздела В Ссылка на тему | Номер вопроса | Вопрос (тип BLOB) | Ответ 5)Таблица раздела С Ссылка на тему | Номер вопроса | Вопрос (тип BLOB) | Ответ (тип BLOB) Как правильно ссылаться в данной ситуации? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2003, 12:55 |
|
БД подготовки к единому госэкзамену.
|
|||
---|---|---|---|
#18+
Имеется 3 категории: А, В, С. Извиняюсь, но я немного не понял: "3 категории: А, В, С" - это категории или типы тестов , называемых "разделы"? Например... Категория А: Всего в разделе А пять вопросов. Пользователь просто выбирает правильынй ответ. Причем как в вопросе так и в ответе содержаться формулы. ...т.е имеется раздел "А", в к-ром 5 заданий ("вопросов") и к-рые одного типа , т.е выглядят так: Чему равно число е ? Выберите правильный вариант ответа: А. 2,71828 Б. 3,14159 В. пределу последовательности (1 + 1/n) n при n -> ∞ Г. пределу последовательности (1 - 1/n) n при n -> -∞ Всего таких тестов в районе 80 и состаляться эта БД будет на несколькиз компьютерах с последующей её сборкой в единое целое на одном. Вот тут то и проблема. Сперва я подумывал каждому тесту присвоить свой автоинкрементный id но так как разрабатываться она будет на разных компьютерах, то я так понимаю id будут совпадать и склеить правильно не получиться, вобщем выскажите всё что думаете, по поводу ключевых полей в таких случаях. Если создатели тестов будут разрабатывать разные тесты, то это не проблема, т.к для столбца ID с автоинкрементом (например, IDENTITY под MSSQL) можно задавать свой seed - начальное значение для каждого компьютера, т.е у вас на разных компьютрах ID будут в разных диапазонах, к-рые не пересекаются. Еще на всякий случай к столбцу ID можно привязать соответствующее ограничение, чтобы значения ID оставались в заданном диапазоне Еще я бы хотел сравнить свой эскиз Бд с вашим чтобы придти к чему то оптимальному. А что не запостили DDL? Просто обсуждать было бы удобнее Сссылка на тему | Номер варианта | Номер вопроса | Вопрос (тип BLOB) А зачем BLOB? Я очень давно разрабатывал похожую систему - тесты для студентов по механике, но правда на основе браузера (просто и сердито), т.е локального HTML с JavaScript и TDC компонентом для доступа к локальной "БД" (текстовый файл с разделителем). Там тоже были формулы в виде GIF-картинок. Не думали насчет того, чтобы хранить в БД текст вопроса (столбец типа VARCHAR), к-рый содержит ссылку на соответствующую картинку и к-рая потом вставляется ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2003, 09:23 |
|
БД подготовки к единому госэкзамену.
|
|||
---|---|---|---|
#18+
Репликант ты всё правильно понял со структурой, но вот проблема БД не сетевая. Просто наполнить её надо будет за короткий срок, поэтому и создаваться она будет на разных компьютерах с последующим соединением. Но всеравно большое спасибо за ответ! :) Жду дальнейших! :) ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2003, 19:28 |
|
БД подготовки к единому госэкзамену.
|
|||
---|---|---|---|
#18+
UiDzerO, Какая используется СУБД? Не поможет ли Вам репликация в этом деле? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2003, 19:48 |
|
БД подготовки к единому госэкзамену.
|
|||
---|---|---|---|
#18+
Здравствуйте ещё раз! СУБД - paradox как имхо наиболее удобная в использовании вместе с Delphi Что такое репликация я пока ещё не знаю, если подскажете толковый линк где про это можно прочитать буду очень признателен. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2003, 20:05 |
|
БД подготовки к единому госэкзамену.
|
|||
---|---|---|---|
#18+
Ну вопщем то насколько я понял из рассказов репликация связана с объединением таблиц в сетевых СУБД что в данный момент меня мало интересует. Интересует меня другое, какие использовать ссылки и индексы. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2003, 20:22 |
|
БД подготовки к единому госэкзамену.
|
|||
---|---|---|---|
#18+
2 UiDzerO: Репликант ты всё правильно понял со структурой, но вот проблема БД не сетевая. Просто наполнить её надо будет за короткий срок, поэтому и создаваться она будет на разных компьютерах с последующим соединением. Даже если она не сетевая, то ты можешь выгрузить таблицы в текстовые/бинарные файлы, а потом сделать их загрузку на машине, где будет конечная БД с объединенными данными. Я просто не знаю есть там такая возможность в Paradox - вставка значений из файла в таблицу, у к-рой есть столбец с автоинкрементом? Интересует меня другое, какие использовать ссылки и индексы. А есть уже какая-нибудь эксизная модель данных или DDL? Хотя бы основные таблицы и столбцы, чтобы говорить более предметно или начинаем с "нуля"? :о) ... |
|||
:
Нравится:
Не нравится:
|
|||
28.10.2003, 08:24 |
|
БД подготовки к единому госэкзамену.
|
|||
---|---|---|---|
#18+
"репликация связана с объединением таблиц в сетевых СУБД" - какое-то странное понимание репликации ... |
|||
:
Нравится:
Не нравится:
|
|||
28.10.2003, 12:05 |
|
БД подготовки к единому госэкзамену.
|
|||
---|---|---|---|
#18+
2Репликант: Свою модель я описал во втором посте, и ссылать 1)Таблица тем - хранение имен тестов и кол-ва вариантов Строковый тип (name) | Целочисленный тип Уравнения и системы неравенств | 2 2)Таблица вопросов из части А name? (из табл1)| Сссылка на тему | Номер варианта | Номер вопроса | Вопрос (тип BLOB) ______________________________________________ - ключ? (key) 3)таблица ответов А Ссылка на вопрос (key?) | Ответ (тип BLOB) | Метка (правильно/неправильно) 4)Таблица раздела В Ссылка на тему (name) | Номер вопроса | Вопрос (тип BLOB) | Ответ (тип BLOB) 5)Таблица раздела С Ссылка на тему (name) | Номер вопроса | Вопрос (тип BLOB) | Ответ (тип BLOB) Будет ли такая структура работать в нужном мне направлении? И ещё я не понимаю зачем использовать картнки или файлы, если всё поидее хорошо храниться и в базе, а отображается в TRxRichEdit (доработанном компоненте в Delphi - RTF + OLE) 2Varan Принимаю всё поправки и дополнения по этому поводу. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.10.2003, 15:17 |
|
БД подготовки к единому госэкзамену.
|
|||
---|---|---|---|
#18+
Репликация - это не решение данной проблемы - а просто метод синхронизации данных - вопрос с повторяющимся ключем там тоже автоматически не решается. Для эого традиционно используются способы - типа игр с различным прирощением для ID различных БД или указание диапазонов и т.д. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.10.2003, 16:00 |
|
БД подготовки к единому госэкзамену.
|
|||
---|---|---|---|
#18+
2 UiDzerO: Свою модель я описал во втором посте, и ссылать Сорри, я опять написал "модель" - не модель, а DDL, т.к я кое-что опять не догоняю: Уравнения и системы неравенств | 2 - это что за столбец? К сожалению, СУБД Paradox не поддерживается в Sybase PowerDesigner и я не в курсе какая СУБД к нему ближе всего по синтаксису поэтому пока для MSSQL (тип image - это BLOB): Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54.
похоже на концептуальную модель для тестов категории A? Я просто не использовал предложенное тобой имя "Тема", т.к это все-таки тест. Можно теоретически предположить и темы - группа вопросов из любых категорий A, B и C на одну тему, например, "Комплексные числа" или "Производные и интегралы"? Будет ли такая структура работать в нужном мне направлении? В смысле обеспечивать целостность данныъх? И ещё я не понимаю зачем использовать картнки или файлы, если всё поидее хорошо храниться и в базе, а отображается в TRxRichEdit (доработанном компоненте в Delphi - RTF + OLE) Нет, тогда картинки не надо! Я просто не знал какой именно вариант ты будешь использовать для отображения формул вот и спросил наугад ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2003, 10:08 |
|
БД подготовки к единому госэкзамену.
|
|||
---|---|---|---|
#18+
Исходя из общения с вами и с другими умными людьми, я сделал вывод что в моём случае (Paradox) лучше использовать естественные ключи, в связи стем что иначе тяжело будет исключить их дублирование, хотя и мне давали хороший совет поставить начало отсчёта на автоинкрементном поле id, тоесть распределить темы и рассчитать, но это относилось к СУБД Interbase. Теперь попдробнее о структуре так как возникли вопросы: 1)Таблица _тем_ - хранение имен тем и кол-ва вариантов. В данном случае это всётаки тема, так как это помоему понятие более охватывающее, тоесть одна тема но два варианта - _теста_, помоему так правильнее, но это не очень важно :) _________________________________________________ Строковый тип (name) | Целочисленный тип Уравнения и системы неравенств | 2 Ключевое поле здесь - имя темы 2)Таблица вопросов из части А name (из табл1) | Сссылка на тему | Номер варианта | Номер вопроса | Вопрос (тип BLOB) ______________________________________________ - ключ (Akey) единственная проблема что ключ слишком большой :( 3)таблица ответов А Ссылка на вопрос (Akey) | Ответ (тип BLOB) | Метка (правильно/неправильно) 4)Таблица раздела В Ссылка на тему (name) | Номер вопроса | Вопрос (тип BLOB) | Ответ (тип BLOB) 5)Таблица раздела С Ссылка на тему (name) | Номер вопроса | Вопрос (тип BLOB) | Ответ (тип BLOB) Espessially for Репликант: За такую выкладку конечно спасибо, но нужды в ней нет, всё создаётся вручную в DataBase Desktop. Жду ваш вердикт! Очень хотелось бы перестраховаться, знате ли... =) ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2003, 14:32 |
|
БД подготовки к единому госэкзамену.
|
|||
---|---|---|---|
#18+
Исходя из общения с вами и с другими умными людьми, я сделал вывод что в моём случае (Paradox) лучше использовать естественные ключи, в связи стем что иначе тяжело будет исключить их дублирование, хотя и мне давали хороший совет поставить начало отсчёта на автоинкрементном поле id, тоесть распределить темы и рассчитать, но это относилось к СУБД Interbase. Спасибо за комплимент :о) А почему ты сделал такой вывод, что лучше использовать естественные (натуральные) ключи, а не суррогатные в случае с Paradox? Вообще у суррогатных ключей есть преимущества, например, они числовые, т.е данные и индекс меньше занимают и быстрее происходит поиск. Что касается дублирования, то это без разницы - суррогатный ключ или натуральный, т.к есть ограничения PK и UNIQUE В данном случае это всётаки тема, так как это помоему понятие более охватывающее, тоесть одна тема но два варианта - _теста_, помоему так правильнее, но это не очень важно :) Ты решаешь как называть, но просто пример, к-рый я приводил выше с вопросом про число е - это называется "тест" ("вопрос") или это называется "тема"? Сссылка на тему | Номер варианта | Номер вопроса | Вопрос (тип BLOB) ______________________________________________ - ключ (Akey) единственная проблема что ключ слишком большой :( Извини, но опять вопрос: в теме (тесте) может быть 1 и более вопросов? Ты не мог бы тогда привести типичные примеры для категорий "A", "B" и "C"? Espessially for Репликант: За такую выкладку конечно спасибо, но нужды в ней нет, всё создаётся вручную в DataBase Desktop. Да выкладка - 2 минуты отношения протянуть да столбцы и комментарии в таблицах набросать в PowerDesigner. Просто когда есть DDL его гораздо проще обсуждать - не возникает неоднозначностей ... |
|||
:
Нравится:
Не нравится:
|
|||
30.10.2003, 08:55 |
|
БД подготовки к единому госэкзамену.
|
|||
---|---|---|---|
#18+
Терминология: Тема - раздел математики на который ориентирован тест, читай глава, к примеру "Уравнения и системы неравенств" (храниться в главной таблице). Тест - В каждой теме есть несколько тестов (их количество указано в главной талице во втором столбце), читай варианты. Раздел - Читай категория: А, В , С. Вопрос - Вопрос в разделе. А - 5 штук, В - 3 штуки, С -2 штуки. Соответсвенно о числе "е" это вопрос, причём в разделе А, из за его структуры (4 варинта ответа). Примером А служит твой вопрос о числе е Пример В: Реишите уравнение ~, и введите правильный ответ в окно ввода. (Ответ целое число) Пример С: Решите уравнение ~, просмотрите решение и поствьте себе оценку от 0 до 3. Есественные/Искуственные: БД будет заполняться на разных компьютерах (никак не связанных) по частям, а потом сливаться в единое целое (ну я думаю наваять программку делающую эту, просто) на разных компьютерах. В связи с этим по моим рассуждения, если сделать автоинкрементное поле - первичный ключ, то при объединении произойдёт их дублирование. Если мне ктонибудь подскажет как можно склеить БД в данном случае с использованием искусственных ключей (например как нибудь изменить автоинкрементные поля) буду очень признателен. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.10.2003, 13:15 |
|
БД подготовки к единому госэкзамену.
|
|||
---|---|---|---|
#18+
Терминология: Тема - раздел математики на который ориентирован тест, читай глава, к примеру "Уравнения и системы неравенств" (храниться в главной таблице). .... Теперь все понтно и тогда без суррогатных ключей если я правильно понял будет: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43.
Пример С: Решите уравнение ~, просмотрите решение и поствьте себе оценку от 0 до 3. А здесь как происходит проверка правильного ответа? т.е я нахожу решение (число) и что дальше? Есественные/Искуственные: БД будет заполняться на разных компьютерах (никак не связанных) по частям, а потом сливаться в единое целое (ну я думаю наваять программку делающую эту, просто) на разных компьютерах. В связи с этим по моим рассуждения, если сделать автоинкрементное поле - первичный ключ, то при объединении произойдёт их дублирование. .... Это неважно, что они несвязаны, если б можно было задать диапазоны для значений автоикрементного ID для каждого компьютера. Но раз в Paradox нельзя задавать начальное значение для столбца с автоинкрементным ID, то тогда такой суррагатный ключ тебе не подойдет ... |
|||
:
Нравится:
Не нравится:
|
|||
31.10.2003, 12:09 |
|
БД подготовки к единому госэкзамену.
|
|||
---|---|---|---|
#18+
1) А дальше выставляешь себе оценку, система для _подготовки_ к экзамену, а не для _проведения_ самого единого экзамена. 2)Ну со структурой я разобрался... скоро появяться вопросы по использованию :) ... |
|||
:
Нравится:
Не нравится:
|
|||
31.10.2003, 18:11 |
|
БД подготовки к единому госэкзамену.
|
|||
---|---|---|---|
#18+
Да кстати вопрос по существу! А каким образом принято объединять таблицы в моём случае? ... |
|||
:
Нравится:
Не нравится:
|
|||
31.10.2003, 18:17 |
|
БД подготовки к единому госэкзамену.
|
|||
---|---|---|---|
#18+
1) А дальше выставляешь себе оценку, система для _подготовки_ к экзамену, а не для _проведения_ самого единого экзамена. Ясно, но просто подготовка как бы предполагает проверку знаний и умение решать те же уравнения/неравенства, т.е твоя программа по идее и должна это делать, подсчитывая баллы на основе кол-ва правильных ответов и "стоимости" (если есть) вопросов. По крайней в приложении, к-рое писал я так и было - подсчет баллов и вывод статистики по разделам, например, как в программе Prometric для тестирования знаний при подготовке к экзамену MCP. Но это так, просто размышления :о) А каким образом принято объединять таблицы в моём случае? Точно также - join по имени, например, для получения всех тестов из раздела. Это если такая функция у тебя будет - выбор и прохождение тестов определенного раздела или подборка тестов из каких-то разделов. А так можно и случайным образом, но чтобы не повторялись ... |
|||
:
Нравится:
Не нравится:
|
|||
02.11.2003, 00:01 |
|
БД подготовки к единому госэкзамену.
|
|||
---|---|---|---|
#18+
Раз тест идет на несвязанных РС, с дальнейшей перегонкой в единую базу, то вполне логично смотрится составной ключ из ID машины и ID выполняемого(выполненого) теста. По скорости дальнейшей обработки это даст большой плюс по сравнению с естественными ключами. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.11.2003, 17:12 |
|
|
start [/forum/topic.php?fid=32&fpage=176&tid=1546778]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
160ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
50ms |
get tp. blocked users: |
1ms |
others: | 12ms |
total: | 264ms |
0 / 0 |