Вопросы по РНР+MySQL
Модератор: Злобный
- DiMoN
- Отец
- Сообщения: 4456
- Зарегистрирован: Вт май 24, 2005 19:06
- Откуда: Молдова\г. Кишинёв
- Контактная информация:
Вопросы по РНР+MySQL
В общем решил создать тему, в которой будут задаваться подобные вопросы по ВЕБ-программингу..
Итак, мой первый вопрос:
решил сделать что-то он-лайн теста наших молдавских билетов для автошколы... ну вот короче что хочу спросить:
мне нужно в БД (пользуюсь mysql'ем) занести вопросы и к каждому вопросу занести несколько вариантов ответа, т.е. я хотел бы, чтобы моя таблица выглядела примерно сл. образом:
и т.д.
как можно осуществить подобное в MySQL и вообще можно ли осуществить это... если нет, тогда прибегну к банальному методу...
Итак, мой первый вопрос:
решил сделать что-то он-лайн теста наших молдавских билетов для автошколы... ну вот короче что хочу спросить:
мне нужно в БД (пользуюсь mysql'ем) занести вопросы и к каждому вопросу занести несколько вариантов ответа, т.е. я хотел бы, чтобы моя таблица выглядела примерно сл. образом:
и т.д.
как можно осуществить подобное в MySQL и вообще можно ли осуществить это... если нет, тогда прибегну к банальному методу...
Questions:
ID int (PK)
Text
AllowsMultipleAnswers bit (bool)
Answers:
ID int (PK)
QuestionID int (FK references Ouestions.ID)
Text
IsCorrect bit (bool)
PK - Primary key - ключевое поле.
FK - Foreign key - поле внешнего ключа, ссылающееся на PK в другой таблице (или в той же).
ID int (PK)
Text
AllowsMultipleAnswers bit (bool)
Answers:
ID int (PK)
QuestionID int (FK references Ouestions.ID)
Text
IsCorrect bit (bool)
PK - Primary key - ключевое поле.
FK - Foreign key - поле внешнего ключа, ссылающееся на PK в другой таблице (или в той же).
Поле Question.ID - ключ, поле Answers.QuestionID - внешний ключ. А вообще, прежде чем браться за проектирование базы данных (даже такой простой), почитай теорию реляционных БД.но вот что значит "с внешним ключём" я не очень понял.. т.е. каждый вопрос сделать ключевым что ли??
- DiMoN
- Отец
- Сообщения: 4456
- Зарегистрирован: Вт май 24, 2005 19:06
- Откуда: Молдова\г. Кишинёв
- Контактная информация:
Злобный,
о... спасибо огромное =)
щас почитаю то что ты посоветовал =)
Слушай, а может у тебя есть какая-нить полезная ссылка по этому поводу? \
[off]добавлено спустя 2 часа 6 минут:[/off]
Злобный,
Слушай, не мог бы ты объяснить вот эту строчку:
о... спасибо огромное =)
щас почитаю то что ты посоветовал =)
Слушай, а может у тебя есть какая-нить полезная ссылка по этому поводу? \
[off]добавлено спустя 2 часа 6 минут:[/off]
Злобный,
Слушай, не мог бы ты объяснить вот эту строчку:
и вот эту:AllowsMultipleAnswers bit (bool)
IsCorrect bit (bool)
Ну... AllowsMultiple - допускает ли вопрос несколько правильных ответов (чекбоксами чтобы выбрать).
Вроде как:
"Какая машина должна проехать перед тем, как ты сможешь повернуть налево?"
И ответы:
1) Та, что выезжает на перекресток справа
2) Та, что выезжает на перекресток слева
3) Та, что движется тебе навстречу
И правильных ответов два: 1 и 3. Значит AllowsMultiple у вопроса = true. Если правильный ответ может быть только один, то false. Тогда надо будет показать не чекбоксы, а радиобаттны.
IsCorrect: Ты забиваешь несколько ответов на каждый вопрос. Несколько неверных, и один (несколько) верных. Как твоя программа будет определять, правильный ли ответ выбрал пользователь? Для этого ей надо заведомо знать, правилен ответ или нет. Для этого и есть поле IsCorrect. Для верных ответов его выствишь в true, для неверных - в false.
По поводу теории баз данных, мне нравится Дейт. Щас уже, кажется, есть 8-е издание, я читал еще 6-е. Вот описание книги. Саму книгу ищи сам.
Вроде как:
"Какая машина должна проехать перед тем, как ты сможешь повернуть налево?"
И ответы:
1) Та, что выезжает на перекресток справа
2) Та, что выезжает на перекресток слева
3) Та, что движется тебе навстречу
И правильных ответов два: 1 и 3. Значит AllowsMultiple у вопроса = true. Если правильный ответ может быть только один, то false. Тогда надо будет показать не чекбоксы, а радиобаттны.
IsCorrect: Ты забиваешь несколько ответов на каждый вопрос. Несколько неверных, и один (несколько) верных. Как твоя программа будет определять, правильный ли ответ выбрал пользователь? Для этого ей надо заведомо знать, правилен ответ или нет. Для этого и есть поле IsCorrect. Для верных ответов его выствишь в true, для неверных - в false.
По поводу теории баз данных, мне нравится Дейт. Щас уже, кажется, есть 8-е издание, я читал еще 6-е. Вот описание книги. Саму книгу ищи сам.
- DiMoN
- Отец
- Сообщения: 4456
- Зарегистрирован: Вт май 24, 2005 19:06
- Откуда: Молдова\г. Кишинёв
- Контактная информация:
Злобный,
за объяснение и книгу спасибо =)
и кстати, если кто-то будет просматривать эту тему и нужна будет ссылка для книги "К. Дж. Дейт: Введение в системы баз данных", то скачать её можно ТУТ (внимание - это прямая ссылка для скачивания, файл весит 10 Мб, траффик внешний)
[off]добавлено спустя 8 часов 34 минуты:[/off]
Злобный,
Можешь посмотреть, правильно ли я составил талбицу (всё же мне пришлось попотеть, чтобы разобрать что ты имел ввиду под словом "реаляционные базы", при условии что я полный ноль в этом деле):
не, предполагается лишь ОДИН правильный ответ, так что думаю этой части не понадобится..AllowsMultiple - допускает ли вопрос несколько правильных ответов (чекбоксами чтобы выбрать).
за объяснение и книгу спасибо =)
и кстати, если кто-то будет просматривать эту тему и нужна будет ссылка для книги "К. Дж. Дейт: Введение в системы баз данных", то скачать её можно ТУТ (внимание - это прямая ссылка для скачивания, файл весит 10 Мб, траффик внешний)
[off]добавлено спустя 8 часов 34 минуты:[/off]
Злобный,
Можешь посмотреть, правильно ли я составил талбицу (всё же мне пришлось попотеть, чтобы разобрать что ты имел ввиду под словом "реаляционные базы", при условии что я полный ноль в этом деле):
Код: Выделить всё
mysql> use q_db;
Database changed
mysql> create table question(id int primary key auto_increment, q text);
Query OK, 0 rows affected (0.09 sec)
mysql> create table answer(id int, a text, primary key (id), foreign key (id) re
ferences q_db.question(id));
Query OK, 0 rows affected (0.08 sec)
- DiMoN
- Отец
- Сообщения: 4456
- Зарегистрирован: Вт май 24, 2005 19:06
- Откуда: Молдова\г. Кишинёв
- Контактная информация:
Злобный,
блин, всё никак не могу втыкнуть, как правильно записать эту таблицу:
блин, всё никак не могу втыкнуть, как правильно записать эту таблицу:
у меня выдаёт:Answers:
ID int (PK)
QuestionID int (FK references Ouestions.ID)
Text
IsCorrect bit (bool)
Код: Выделить всё
ERROR 1005 (HY000): Can't create table '.\q_db\answer.frm' (errno: 150)