Мне нужна помощь в структуре SQL. Я пишу статьи и хочу поделиться ими в Интернете на своем веб-сайте, чтобы пользователи могли прокомментировать их.Как нормализовать базу данных с древовидной структурой
Каждая статья содержит имя, абзацы, разделы и блоки содержимого. Вы можете посмотреть на него как на дерево: article => paragraph => sections => блоки содержимого. Каждая статья имеет много абзацев, каждый абзац имеет много разделов, и в каждом разделе есть много блоков контента.
Теперь, я бы хотел, чтобы пользователи могли добавлять свои комментарии для каждого уровня в дереве. Для этого я создал таблицу для каждого объекта (статьи, параграфа, разделов и блоков контента), который содержит статическую информацию.
Мой вопрос - это лучший способ справиться с динамической частью, где хранить комментарии пользователей? Какое здесь самое лучшее решение?
Спасибо.
Как насчет производительности? я должен будет запросить все четыре, используя JOIN, не так ли? – user1630359
Да, вы должны использовать JOIN, чтобы получить ваши комментарии и сущности. Причина в том, что у вас есть несколько комментариев от нескольких пользователей на сущность, и не рекомендуется хранить все комментарии в одной записи сущности с помощью поля Blob, потому что ваша РСУБД будет замедляться, как только у вас будет значительное количество комментариев за строку. –
Отдельные таблицы хороши для данных типа сущности, но если это обычно не приходит с комментарием, могут быть потерянные текстовые столбцы, которые занимают место, потому что некоторые из них используются. Конкретные таблицы станут излишне тяжелыми. Нормализация БД состоит в том, чтобы разделить данные на уникальные логические единицы и наоборот, перебирая все в несколько таблиц (здесь: сущность и данные глобального комментария вместе). Если центральная таблица комментариев правильно проиндексирована, не будет большого преимущества через четыре разные таблицы. –