Как правильно спроектировать БД MySQL?

Впервые занялся проектированием БД.
1. Просьба указать на явные ошибки и огрехи.



2. Так же интересует как лучше организовать комментарии. Сделать отдельно таблицы комментариев для каждого из типов публикации(news, post, special, special_page), или к каждой публикации добавлять уникальный идентификатор комментариев (по примеру сервисов типа disqus, только свое).

По ссылке zip-архив с изображением в большем разрешении, sql файл и файл проекта для MySQL workbench.
  • Вопрос задан
  • 9104 просмотра
Пригласить эксперта
Ответы на вопрос 8
Wott
@Wott
не понятно зачем иметь 4 таблицы для похожих сущностей — post,news,special, special_page. Если ихъ обьеденить, то сразу вопрос с комментами отвалится.

имхо очень плохая практика иметь безликие id, name — лучше иметь blog_id, post_name и сразу все понятно без разглядывания схем или ключей
Ответ написан
rakot
@rakot
Обратите внимание на ваши INT(6),INT(3),INT(1), думаю что это не совсем то, что вы хотели(попробуйте в INT(1) записать число 1000000).

Вы везде используете VARCHAR, хотя для password и salt можно(и нужно) использовать CHAR.
Ответ написан
dbmaster
@dbmaster
Я в таблицах связках ( например post/tag ) делаю ключ одним дополнительным полем c autoincrement.
Ответ написан
@balloon
Внесу и свою лепту. Я бы:
1. Отказался от сокращенного найменования полей и назвал бы некоторые поля по другому bid -> blog_id, uid -> user_id, uid_add -> created_by, uid_upd -> updated_by, time_add -> created_at, url_name -> slug
2. Объединил таблицы post, special, special_page, news (и соотв. вместо 2 таблиц news_tag & post_tag осталась бы одна) + как уже упомянули, решился бы вопрос с комментариями
3. Для статуса использовал бы ENUM вместо INT(1), а если ENUM нельзя — то хотя бы TINYINT :)
4. Если комментариев много — то использовал бы nested set либо добавил поле с путем для быстрого вывода дерева (в чем поле level не помогает вроде)
Ответ написан
foxmuldercp
@foxmuldercp
Системный администратор, программист, фотограф
Как минимум мы тут видим кучу внетренних, непонятно за что отвечающих переменных.
так что пока не будет нормального тз с описанием что надо и как вы видите решение этой проблемы — Ваша диаграмма 90% пользователям ничего не скажет
Ответ написан
@egorinsk
Слишком много таблиц
Ответ написан
Комментировать
Sergei_Erjemin
@Sergei_Erjemin
Улыбайся, будь самураем...
Без ТЗ сложно сказать. Мне кажется что функционал вполне стандартный и можно обойтись таблицами ПОЛЬЗОВАТЕЛЬ и ПУБЛИКАЦИЯ. Если в публикации есть ссылка на родительскую публикацию то это комментарий и дальше можно их этого строить хоть ленты хоть деревья. Еще, конечно, нужно таблицу ТЭГОВ иметь, но пока не ясно что из нее надо будет строить )может связанные массивы релевантности) то про ее структуру сложно сказать сто-то определенное. Для чего нужна таблица СПЕШАЛ (и связанные таблицы) вообще не понятно.

P.S. Кстати, а с помощью чего нарисована схема?
Ответ написан
afiskon
@afiskon
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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