一个用户可以收藏很多的书籍,但是每本书籍都有不同的标签(一个或者很多个),需要列出用户的所有标签以及当前的热门标签,如何在 mysql 里存储标签信息呢,是只用一个单独的字段存储还是单独创建一张表去存储?
希望有相关经验的可以指点一下?
单独表放的,为了复用,比如查阅某个标签下的图书会方便很多。 另:试试 gem acts-as-taggable-on不错
再弄两张表
book_tags
tags
这样更符合范式
我现在建了两张表,一张用于存储收藏的图书,一张存储 tag。
favorates 表:
user_id: 用户 ID book_id: 图书编号
tags 表:
book_id: 图书编号 name:标签名
#3 楼 @jasonliu 差一张,book_tags 多对多,不然你这个和不建 tag 表有什么区别。
@flowerwrong @xiaoronglv 确实应该这样做,非常感谢!!!
用 PostgreSQL 比较方便
create table test_array(id serial primary key, phone int8[]); insert into test_array(phone) values ('{1,2}'); insert into test_array(phone) values (array[3,4,5]); select id ,phone from test_array where phone && array[1,2]::int8[];
#1 楼 @flowerwrong 正解
#2 楼 @xiaoronglv 按 rails 的惯用法 关联表 book_taggings 会更好