2015-11-15 2 views
1

У меня есть две таблицы, таблица вопросов и таблица ответов.Может ли одна таблица быть дочерней на две родительские таблицы

У меня тогда есть таблица комментариев, так что комментарии могут быть связаны с вопросом или ответом. Там будет много комментариев для каждого вопроса или ответа.

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

+0

Да, это может быть. – i486

ответ

2

Это зависит. В общем, вы хотели бы иметь отношения с внешним ключом. Если в вопросе/ответе есть только один комментарий, то это легко. A commentId идет в каждой из таблиц, Questions и Answers. Существует легкая внешняя связь.

Чтобы поддерживать отношения с внешним ключом и допускать множественные комментарии, это немного сложнее. Вероятно, самым простым способом является наличие двух соединительных столов, QuestionComments и AnswerComments. Это необходимо для соответствующего родителя и таблицы Comments.

Примечание: есть причины, по которым вам нужны отдельные таблицы комментариев для двух целей. Например, вы можете классифицировать комментарии к ответам в разных группах. Или вы можете разрешить только один комментарий для пользователя по вопросу. Эти различные бизнес-правила могут быть проще реализовать, если комментарии находятся в разных таблицах.

+1

Чтобы расширить ответ на ответ Гордона ... Возможно, ваш вопрос показывает недостающую таблицу в вашей схеме или что-то, что вы сейчас собираетесь осознать. Если в таблице Child нет явно одного родительского ключа на одной таблице, вы можете сделать что-то, о чем позже пожалеете. Мой ответ по умолчанию, ничего не зная о вашей ситуации, заключается в том, что вам нужны две таблицы. Эта деталь, вероятно, проявится, когда вы присоединитесь к FK к таблице «Идентификация тестового экземпляра» в вашей модели. –

+0

@SqlSurfer Вы говорите sooth. –

1

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

 
     table question: 
id |questionDes |commentId| 
1 | what  | 2  | 

table answer 
|id | answerDes| commentId| 
|201| yes  |  44 | 
table comment 
|id |commentDes| commentId| 
|2 | hi  |2   | 
|4 |nii  | 44  | 

you sql query will be-- 
SELECT questionDes.question, commemtDes.comment 
FROM question 
INNER JOIN comment 
ON commentId.question=commentId.comment; 
and 
SELECT answerDes.answer, commemtDes.comment 
FROM answer 
INNER JOIN comment 
ON commentId.answer=commentId.comment; 
3

Создать комментарии таблицу с двумя внешними ключами от вопросов и ответов таблицы. Достаточно.

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