Если я что-то не пропустил, Если ваша проблема с этой системой тегов # 2 в вашем вопросе, которая вставляет новый тег "bar", если он не существует, попробуйте использовать INSERT IGNORE это пропустит вставку тега, если он существует, и я думаю, что это термин, который вы ищете в # 3 , например:
INSERT IGNORE INTO Tag set name = 'bar';