Я проектирую базу данных для социального приложения и пытаюсь определить, будет ли мой подход: 1) работать хорошо и 2) правильно нормализоваться?
Мое исследование производительности запросов тегов и дизайна БД показало, что единственная таблица тегов с полнотекстовым поиском дает наилучшую производительность.
Смотрите это: http://tagging.pui.ch/post/37027746608/tagsystems-performance-tests
Я знаю, что мог бы (и должен с чистой точки зрения нормализации) поместить теги в отдельную таблицу с ключом для каждого тега, но производительность будет снижаться по мере увеличения базы данных (согласно связанной статье). Поиск по тегам является ключевым компонентом моего приложения и должен хорошо работать.
Приведенная ниже структура иллюстрирует базовый подход, который я разработал, который использует таблицу метаданных моста, и я ожидаю, что с помощью этой единственной таблицы будет создано множество других «таблиц объектов», но я предлагаю лишь пару, чтобы дать идею:
Таблица пользователей: UserID PK, UserName и т. Д.
Таблица блогов: BlogID PK, UserID FK, BlogTxt и т. Д.
Таблица фотографий: PhotoID PK, UserID FK, PhotoPath и т. Д.
Таблица метаданных: MetadataID PK, UserID FK, ObjectTable (сообщения или блоги), ObjectID FK (PostID или BlogID), теги (tag1, tag2, tag3)
В дополнение к вышеупомянутым вопросам мне также интересно знать, есть ли лучшие альтернативы. Я новичок в дизайне БД, поэтому прошу прощения за любое серьезное невежество по поводу правильного способа сделать это. Большое спасибо.