Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 2003.06.12;
Скачать: [xml.tar.bz2];

Вниз

Посоветуйте базу данных   Найти похожие ветки 

 
.::D.e.M.o.N.i.X::.   (2003-05-24 08:36) [0]

Сейчас делаю курсовую и есть такая задача : Нужно создать тест (по физике) примерно в таком духе : Есть вопрос и пять ответов, один из которых верный и т.д. Так вот, в базе соответственно должны быть поля Вопрос Ответы и маркер(метка) на правильный ответ. Что посоветуете уважаемые мастера, какой базой пользоваться и каким компонентом для такой задачи?
Заранее благодарю всех ответивших...


 
Anatoly Podgoretsky   (2003-05-24 09:10) [1]

Абсолютно любой, ту которую освоил за время обучения, ту и используй.


 
uw   (2003-05-24 12:11) [2]

Запусти Database Desktop из D6.
Создай парадоксовскую таблицу.
Запусти SQL Monitor, создай алиас, связав его с директорией, где лежит таблица.
На форму положи BDE-таблицу TTable и работай с ней.


 
Polevi   (2003-05-24 12:37) [3]

текстовый файл, можно xml


 
Sergey Masloff   (2003-05-24 13:07) [4]

Для такой задачки - типизированый файл. Даже xml будет излишним наворотом.


 
sniknik   (2003-05-24 13:29) [5]

сразу переходи на полноценный SQL сервер! (желательно не бесплатный) препода как узнают что для твоей программы нужна прединсталяция SQL serv. за ~1000-3000$ сразу пятерку поставят, без экзаменов. ;о))


 
uw   (2003-05-24 14:36) [6]

>Polevi © (24.05.03 12:37)
>Sergey Masloff (24.05.03 13:07)

Для курсовой ему нужна БД. Лучше б поправили мой SQL Monitor на SQL Explorer! Еще можно было бы добавить, что по постановке хорошо бы завести 2 таблицы - вопросов и ответов - и связать их.


 
sniknik   (2003-05-24 14:50) [7]

uw © (24.05.03 14:36)
> хорошо бы завести 2 таблицы - вопросов и ответов - и связать их
незачем, задача линейная, 1-ой таблицей обойтись без проблем. и даже маркер на правильный ответ лишний, правильный может всегда лежать в одном поле а вот при выдаче на экран "тасовать" его с неправильными (немного сложней в програмировании, но данные будут занимать немного меньше места).
хотя конечно преподы не любят когда просто, и искуственно усложненные решения оценивают выше. :) в таком свете можно разбить на 7 таблиц, каждый вопрос/ответы(~5) плюс маркер все в отдельных, все связано.


 
Anatoly Podgoretsky   (2003-05-24 15:57) [8]

Да кого интересует правильное решение, всего лишь надо сдать курсовую.


 
.::D.e.M.o.N.i.X::.   (2003-05-24 18:30) [9]

Еще нужно в программе создавать вопросы, что-то типа препод заход в администрирование, создает новый тест(название) и пошел редактировать вопрос-ответ. Т.е. при считывании в Run-Time будут создаваться Radiobox"ы соответственно каждому ответу, а в memo загоняться вопрос. Ну и перед началом тестирования нужно выбрать тест (название). Куда можно пихнуть несколько тестов???
P.S. Я с базами данных имел дело аж 2 года назад, так что извеняйте за вопрос...


 
uw   (2003-05-24 20:34) [10]

Да в те же таблицы и пихай. Отличаться будут значением столбца.


 
Sergey Masloff   (2003-05-24 21:37) [11]

uw ©
>Для курсовой ему нужна БД.
База данных - компьютеризированная система хранения записей. (Дейт).
Система должна обеспечить:
- добавление новых записей в "файл"
- осуществлять поиск записей в "файле"
- изменять данные записей
- удалять данные.
Что из этого не делает мой вариант с простым файлом? Более того, есть возможность продемонстрировать базовые знания а не знание конкретной коммерческой СУБД.
Я бы такую курсовую оценил выше. Ну правда я не преподаю сейчас но опыт 5 лет преподавания в ВУЗах не пропьешь ;-)


 
uw   (2003-05-24 21:46) [12]

Для конкретики организуй таблицы так.

Таблица Question:

TestNo - номер теста
QuestNo - номер вопроса
Question - собственно вопрос

Таблица Answer:

TestNo - номер теста
QuestNo - номер вопроса
AnsNo - номер ответа (для данного теста и вопроса)
Answer - собственно ответ
Marker - маркер

Таблицы связываешь по TestNo и QuestNo.

Можно, конечно, делать и так, как предлагает sniknik, но при этом будут повторяться вопросы. Это противоречит принципу построения реляционных баз данных: каждое сведение - в одном месте, поэтому не нервируй препода. Смысл в том, что если придется подправить вопрос, то это сделаешь только в одном месте, а не по всей базе.

Если выбросить маркер, а правильный ответ располагать, скажем, первым, опять получишь геморрой, не предусмотренный, например, DBGrid"ом.


 
uw   (2003-05-24 21:49) [13]

>Sergey Masloff (24.05.03 21:37)

Да я разве против файлов! Но если человеку надо понять принципы построения баз данных с применением СУБД и работы с ними, то это одно; если не надо - это другое.


 
Sergey Masloff   (2003-05-24 21:57) [14]

uw ©
убедил ;-)


 
sniknik   (2003-05-25 03:35) [15]

uw © (24.05.03 21:46)
непонял только почему у меня будут повторятся вопросы (если конечно одно и тоже несколько раз не ввысти)

насколько понял нужно чтото вроде теста в гаи повторить? думал сделать так.

Таблица 1 (пофигу как назвать);

TestNo - номер теста
Question - собственно вопрос
TrueAnswer - собственно правильный ответ
FalseAnswer1 - неправильный ответ 1
FalseAnswer2 - неправильный ответ 2
FalseAnswer3 - неправильный ответ 3
FalseAnswer4 - неправильный ответ 4
FalseAnswer5 - неправильный ответ 5
(количество ответов всегда 5, нет нужды во второй таблице как для неопределенного количества)

при показе формы с тестом, делаем в зависимости от random() установку заранее предопределенных координат(сохраненных в масиве по номеру) у DBText.Left/Top. номер правильного (устанавливается первым) запоминаем для сравнений. все, визуально они в разных местах, человеку не определить, а работать проше, никаких циклов/сравнений/мастер детайлов, можно сразу если не совпал номер кнопки/радиобатона/чеготам еще с запомненным то "вы ответили неправильно, правильный ответ
: "+ФиелдБайНейм("TrueAnswer").КакСтрока
и для заполнения еще одну форму без мудростей (6 едитов/мемо и + стандартный навигатор), и курсовик считай сдан. а разбиратся с базами в освободившееся от перездачь время. :о))

в общем все элементарно, в принципе и в файл типа рекорд это можно впихнуть, но по моему в таком варианте с 1 таблицей даже проще.


 
uw   (2003-05-25 10:30) [16]

>sniknik © (25.05.03 03:35)

У тебя работать будет. Но я говорю о том, как нужно строить реляционные базы данных, а ты - о том, как можно изворачиваться в каждом конкретном случае, не используя сути РБД.

Дело в том, что если это реализовать на том же IB и попросить тебя одним SQL-запросом выбрать все ответы, начинающиеся с буквы "Х" и расположить их друг за другом, то ты серьезно напряжешься, я же сделаю это легко. Для моей модели тоже можно придумать крайне неудобные задачи, но...

РСУБД спроектированы таким образом, чтобы быть удобными для большинства запросов, применяемых на практике. При этом при проектировании БД следует придерживаться определенных принципов. В частности, все сведения должны содержаться в столбцах в виде значений, т.е. мы не должны делать о сведениях выводы по тому, в каком столбце и какое сведение находится («правильный ответ», например). Если мы в твою таблицу добавим столбец, содержащий номер столбца с правильным ответом, то это опять же будет нарушением Третьей нормальной формы, т.к. у тебя неключевые столбцы будут зависеть друг от друга.

Еще раз повторю: если человек хочет научиться работать с РСУБД, то он должен придерживаться принципов, заложенных в РСУБД. Хао.


 
sniknik   (2003-05-25 15:01) [17]

точка зрения препода и студента... :о)) один пытается учить(читай завалить) другой сдать. задачи разные координально.
тоже все сказал.


 
Бобко Сергей   (2003-05-26 14:23) [18]

Ну тогда и я выскажу свое мнение:
Так вот не стоит извращаться с использованием какой-либо СУБД, так в этом случае затраты не оправдывают результат. Тут однозначно надо использовать типизорованный файл, ко всему сказанному можно добавить что не надо будет в случае чего настраивать и ставить на выбранную машину эту самую СУБД, что в свою очередь является очень большим плюсом, т.е. твоя программа будет легко переносима. Вся задача во всех своих прелестях решается за 3-4 часа работы. Из этого времени 1/2 уйдет на качественный GDI.



Страницы: 1 вся ветка

Форум: "Потрепаться";
Текущий архив: 2003.06.12;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.5 MB
Время: 0.017 c
3-34721
Darts
2003-05-23 14:54
2003.06.12
Помогите с запросом


1-34802
Hooch
2003-06-02 14:08
2003.06.12
MDIChild


3-34757
Инна
2003-05-23 15:16
2003.06.12
output значения хп


14-35038
Soft
2003-05-27 15:58
2003.06.12
Linux не умеет работать с proxy?


14-35006
Bug
2003-05-26 12:14
2003.06.12
Создание ехе файла





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский