Существует довольно много дискуссий о схемах тегов, но я заметил, что большинство из них посвящено одному типу контента, например закладкам или фотографиям.
Я заинтересован в использовании тегов для множества функций мультитенантного бизнес-приложения; та, где теги могут быть связаны с полями формы, документами, фотографиями, настройками конфигурации и многим другим.
Я хотел бы разработать меньший набор таблиц, которые можно масштабировать в соответствии с этими различными потребностями, вместо того, чтобы исключать таблицы ссылок для каждого типа контента, что добавляет некоторую сложность:
tags {
tagsID
tagName
}
tagChildren {
childID
childValue
}
tagType {
typeID
typeName
}
entity {
entityID
entityName
...
}
tagMap {
mapID
tagsID (FK)
childID (FK)
typeID (FK)
entityID (FK)
}
TagMap может быть использован для подключения любого количества этих элементов, но как минимум соединит теги и tagType. Например, тег может быть связан с раскрывающимся типом поля. Это может быть раздел реестра с типом реестра, дочерним значением и связанный с объектом. Дочерний тег может быть другим тегом, чтобы разрешить многоуровневые родительско-дочерние отношения.
Существует риск распространения, поскольку многие функции зависят от небольшого набора таблиц.
Если вы столкнулись с подобным решением или у вас есть идея, которая может помочь, поделитесь своими мыслями, подходом и отношением производительности к риску распространения.
Спасибо!