Ответы пользователя по тегу Проектирование баз данных
  • Как организовать структуру БД?

    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;
    Ответ написан
    Комментировать
  • Организация БД для нескольких компаний?

    0neS
    @0neS
    Не совсем ясна архитектура. Вы пишете что-то вроде CRM? Т.е., создав компанию, пользователь получает доступ к определенным таблицам (к примеру: клиенты, платежи, товары, задачи, заметки). Структура БД для каждой компании одинакова?
    Тогда Вам стоит поискать, как это делают в популярных CRM-системах, я думаю там вариант с хранением данных всех компаний в общих таблицах с полями company_id, с целостностью проблем не должно быть.
    Ответ написан
  • Структура каталога интернет магазина

    0neS
    @0neS
    Гуглите исходники любых интернет-магазинов и смотрите как это сделано у них.
    Ответ написан
    Комментировать