Определенно создайте таблицу, содержащую в списке доступных тегов .
Вы также должны обязательно создать отдельную таблицу примененных тегов , содержащую:
- Внешний ключ к вашему сообщению.
- Внешний ключ вашего тега.
- Порядковый номер, показывающий порядок.
- Все остальное, что может вас заинтересовать, например, кто добавил тег или когда он был добавлен.
Вы хотите использовать нормализованный дизайн, потому что используется денормализованный дизайн (добавление 5 столбцов)сломается, если вы когда-нибудь захотите изменить свои бизнес-правила, чтобы разрешить использовать меньше или больше тегов.Кроме того, это не поможет вам, если у вас есть другая информация, например, когда был добавлен тег и кем.
РЕДАКТИРОВАТЬ: DDL
По запросу ОП:
CREATE TABLE post (
id INTEGER IDENTITY
, title VARCHAR(1000) NOT NULL
, added_date DATETIME NOT NULL
, posting_user_id INTEGER NOT NULL
, ... (and so forth) ...
, PRIMARY KEY (id)
, FOREIGN KEY (posting_user_id) REFERENCES posting_user (id)
);
CREATE TABLE tag (
id INTEGER IDENTITY
, term VARCHAR(20) NOT NULL
, description VARCHAR(1000) NULL
, ... (and so forth) ....
, PRIMARY KEY (id)
);
CREATE TABLE applied_tag (
post_id INTEGER NOT NULL
, tag_id INTEGER NOT NULL
, display_order INTEGER NOT NULL
, tagging_user INTEGER NOT NULL
, applied_date DATETIME NOT NULL
, ... (anything else you want)....
, PRIMARY KEY (post_id, tag_id_, display_order) -- Or use an auto-increment, but this is unique.
, FOREIGN KEY (post_id) REFERENCES post (id)
, FOREIGN KEY (tag_id) REFERENCES tag (id)
, FOREIGN KEY (tagging_user) REFERENCES posting_user (id)
);