给内容贴上标签,需要用一个专门的数据表记录一下内容与标签之间的关系。就是在这张数据表里面,每一条数据记录可以存储一下内容的 ID 还有给这个内容贴上的标签的 ID 。通过这个数据表我们就可以把存储内容与标签用的这两张数据表合并到一块儿,然后就可以选择自己需要的数据了,比如一个内容的标签列表,或者列出包含某个标签的内容。
在数据库客户端,可以在应用的数据仓库里创建一个数据表,执行一段 SQL,用 create table 创建一个叫 post_tag 的数据表,它里面存储的就是给内容贴上的标签。这个表里需要两个字段,一个是 postId ,类型是 int 11,限制它 not null 不能为空,还有一个栏目是 tagId ,类型是 int 11 也不能为空。
这个表的主键是这两个字段的组合,用 primary key 设置一下数据表的主键,这里就是 postId 还有 tagId 这两个字段的组合。同样的组合只能在这个表里出现一次。
然后用 foreign key 设置一下这个表的外键,postId 这个栏目,关联的就是 post 数据表里的 id 字段的值。on delete no action on update 也可以是 no action
复制一份,这个表里还有一个外键,栏目的名字是 tagId ,它关联的是 tag 数据表里的 id 字段的值。
在括号的下面,可以用 default charset 设置一下数据表默认的字段集,再用 collate 设置一下默认的整理,utf8mb4_unicode_ci 。
执行一下这段 SQL,这里提示了一个错误,这是因为 default 这个词我拼写错了,修改一下,default。 然后再执行一下。
刷新一下应用的界面,在数据仓库里会出现一个新的数据表,就是这个 post_tag ,这个表有两个字段,postId 还有 tagId。 看一下这个表的结构,你会发现,postId 这个栏目关联的是 post 表里的 id,tagId 栏目关联的是 tag 表里的 id 。