Это реальная проблема, связанная с маркировкой элементов в целом (и да, это относится и к StackOverflow, и нет, это не вопрос о StackOverflow).
Вся проблема с тегами помогает группировать похожие элементы, какими бы они ни были (шутки, сообщения в блогах, вопросы и т. д.). Однако существует (обычно, но не строго) иерархия тегов, означающая, что одни теги подразумевают и другие теги. Чтобы использовать знакомый пример, тег so "c#" подразумевает также ".net"; другой пример, в базе данных шуток тег «блондинки» подразумевает тег «насмешливый», аналогично «ирландскому», «бельгийскому» или «канадскому» и т. д., в зависимости от страны происхождения шутки.
Как вы справлялись с этим в своих проектах? Я предоставлю ответ, описывающий два разных метода, которые я использовал в двух разных случаях (на самом деле, один и тот же механизм, но реализованный в двух разных средах), но меня также интересуют не только аналогичные механизмы, но и ваше мнение по вопросу иерархии. .