2017-01-14 3 views
1

Я не слишком уверен, какие таблицы у меня должны быть для этого.Правильные отношения

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

Чтобы сохранить это в базе данных, я думал, что-то, как это будет работать (где жирный шрифт представляет собой первичный ключ и курсив внешнего ключа):

бумаги (paper_id, number_of_questions, paper_location, markscheme_location)

Вопрос (paper_id, QUESTION_NUMBER)

Однако это Wouldn» t как потенциально вопрос может быть «1»), «1) a)« или даже «1» a) i) «Это означает, что мне нужно было бы иметь несколько таблиц, в каждом из которых были бы либо уважаемые части номера вопроса, либо отношения, связывающие их все вместе? однако возникает вопрос, что все вопросы должны иметь все три части? Спасибо

+0

Вопрос (paper_id, QuestionID INT, QUESTION_NUMBER VARCHAR)? wll эта работа –

+0

u может иметь qno как 1, 1 a, но qid будет отличаться, он будет также помогать, когда у вас есть таблица ответов –

+0

@YashveerSingh Я думал, что, но не был уверен, что это все равно вызовет проблемы при разборе его в качестве разделяющих чисел из символов легко, но я и я - символы. Я мог бы сделать что-то вроде этого, где его var char отформатирован как «1-ai» и разбил «-», я думаю? и будет сомневаться в необходимости или может быть сложным ключом paper_id и question_number достаточно - спасибо – cookies

ответ

1

Для вопросов необходимо иметь parentId. вопрос схема таблицы, кажется, СТГ как этот

Вопрос (question_id, QUESTION_NUMBER, QUESTION_TEXT, parent_id, paper_id)

parent_id является внешним ключом, связанные с question_id.

Edit: Вопрос строки:

(1, '2', 'foo', NULL, 4) 
(2, 'a', 'bar', 1, 4) 
(3, 'i', 'blah', 2, 4) 

Результаты:

2. foo? 
2.a. bar? 
2.a.i blah? 
+0

Так что вроде отношения родительского узла между вопросами - да, я думаю, что это сработает, я попытаюсь реализовать его сейчас, спасибо :) – cookies

+0

Вы бы сохранили нули для вопроса верхнего уровня (родителя), что могло бы вызвать проблемы связанных со всеми вопросами. Кроме того, ваши вспомогательные вопросы - это строки, а не идентификаторы, как бы вы гарантировали правильный порядок. – newGuy

+0

@newGuy вы можете пересекать это дерево рекурсивно, чтобы обеспечить правильный порядок. – x01saa

Смежные вопросы