Проектирование архитектуры базы данных тегов T-SQL?
Я строю базу данных, которая содержит ряд различных таблиц. Они состоят из таблицы COMMENTS, таблицы BLOGS и таблицы ARTICLES. Я хочу иметь возможность добавлять новые элементы в каждую таблицу и отмечать их тегами от 0 до 5, чтобы помочь пользователю легче находить нужную информацию.
Начальные мысли для архитектурыМоими первыми мыслями было иметь централизованную таблицу TAGS. В этой таблице будут перечислены все доступные теги с использованием поля TagID и поля TagName. Поскольку у каждого элемента может быть много тегов, а у каждого тега может быть много элементов, мне потребуется отношение MANY-TO-MANY между каждой таблицей элементов и таблицей TAGS.
Например:Многие комментарии могут иметь много тегов. Многие теги могут иметь много комментариев.
Многие СТАТЬИ могут иметь много тегов. Многие теги могут иметь много статей.
и т.д.....
Текущее пониманиеИз предыдущего опыта я понимаю, что одним из способов реализации этой структуры в T-SQL является объединение таблицы между таблицей COMMENTS и таблицей TAG. Эта объединяющая таблица будет содержать CommentID и TagID, а также собственный уникальный CommentTagID. Эта структура также будет применяться ко всем другим пунктам.
ВопросовВо-первых, это правильный путь для реализации такой архитектуры базы данных? Если нет, то какие другие методы были бы возможны? Поскольку база данных в конечном итоге будет содержать много информации, я должен обеспечить ее масштабируемость. Это масштабируемая реализация? Если бы у меня было много этих таблиц, эта архитектура сделала бы операции CRUD очень медленными? Должен ли я использовать GUID или инкрементные INT для полей идентификаторов?
Помощь и предложения будут высоко оценены.
Спасибо.