Предположим, у меня есть таблица, в которой может быть 0 или более тегов:
TABLE: foo
- foo_id (PK)
TABLE: tag
- tag_id (PK)
- name
TABLE: foo_tag
- foo_tag_id (PK)
- foo_id (FK)
- tag_id (FK)
Вопросы:
- Вышеупомянутый является наиболее распространенным и простым способом реализации системы тегов, который я видел. Я понимаю, что существуют потенциальные проблемы с системами тегов с точки зрения масштабируемости. Я собираюсь иметь это здесь?
- Есть ли способ сделать что-то подобное в PHP или SQL: вставить новый тег «bar». Если «полоса» не существует, добавьте ее в таблицу
tag
и верните последний вставленный идентификатор. Если «bar» действительно существует, не добавляйте его, а верните для него tag_id. - Есть ли «правильный» термин БД для такой таблицы, описанной в №2?