一定要创建一个包含可用标签列表的表格。
您还应该创建一个单独的应用标签表,其中包含:
- 您的帖子的外键。
- 标签的外键。
- 序列号
显示顺序。
- 您可能感兴趣的任何其他内容,例如谁
添加标签或添加标签的时间。
您希望使用规范化设计,因为如果您想更改业务规则以允许更少或更多标签,则使用非规范化设计(添加 5 列)会中断。此外,如果您有其他信息需要保留,例如添加标签的时间以及由谁添加,它也无济于事。
编辑:DDL
应 OP 的要求:
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)
);