Задать вопрос
@rgamretsky
SharePoint Develorep(а хочется в ASP.NET MVC dev)

Как организовать структуру БД?

Подскажите как организовать следующую базу данных что бы в дальнейшем по минимуму использовались ресурсы при работе с ней.
Есть две таблицы "Вопросы" и "Ответы". В таблице "Вопрос" будут следующие поля:
-id
-Вопрос
-Количество ответов
В таблице ответы:
-id
-Ответ
-id вопроса
- Количество выбравших этот вопрос
В дальнейшем при выборе определенного ответа нужно будет подгружать вопросы с таблицы "Ответы" по id вопроса. Удобно ли это будет и правильная ли идея реализации?
  • Вопрос задан
  • 2352 просмотра
Подписаться 3 Оценить Комментировать
Решения вопроса 1
0neS
@0neS
Я бы сделал как-нибудь вот так:
CREATE TABLE IF NOT EXISTS `questions` (
    `id` int unsigned not null AUTO_INCREMENT,
    `created` timestamp not null default '0000-00-00 00:00:00',
    `title` varchar(256) not null,
    `content` text not null,
    PRIMARY KEY (`id`)
) ENGINE=InnoDB;

CREATE TABLE IF NOT EXISTS `answers` (
    `id` int unsigned not null AUTO_INCREMENT,
    `created` timestamp not null default '0000-00-00 00:00:00',
    `question_id` int unsigned not null,
    `user_id` int unsigned,
    `content` varchar(4096) not null,
    PRIMARY KEY (`id`),
    CONSTRAINT `answer_ibfk_1` FOREIGN KEY (`question_id`) REFERENCES `questions` (`id`) ON DELETE CASCADE,
    CONSTRAINT `answer_ibfk_2` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE SET NULL
) ENGINE=InnoDB;

/* Подсчет кол-ва ответов нужного вопроса */
SELECT COUNT(*)
FROM answers
WHERE answers.question_id = 'id_вопроса';

/* Вывод вопроса со всеми ответами */
SELECT q.id, q.created, q.title, q.content, a.created as answer_created, a.user_id as answer_user_id, a.content as answer_content
FROM questions q
LEFT JOIN answers a ON q.id = a.question_id
ORDER BY q.created DESC
LIMIT 10;
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы