用例:将用户最喜爱的组合保存到数据库。
用户可以选择
1.“A,B,C”是他最喜欢的组合。
2.“A,B”是第二喜欢的组合。
如何设计数据库表来保存这些信息,以及
应该能够通过使用used id查询来检索
从userfav中选择*其中userid=:userid
应该回来
[A,B,C]和[A,B]
此表架构的冗余数据太多

userId  combination
qw1     a,b,c
qw1     b,c

有人能指导我以最好的方式设计吗?

最佳答案

我将它存储在单独的行中,而不是作为分隔字符串:

Declare @favourites table (UserID char(3), fav_list_pos int, fav_pos int, fav_val char(1))

insert into @favourites values
  ('qw1', 1, 1, 'a')
, ('qw1', 1, 2, 'b')
, ('qw1', 1, 3, 'c')
, ('qw1', 2, 1, 'a')
, ('qw1', 2, 2, 'b')

select * from @favourites where userId = 'qw1' order by fav_list_pos, fav_pos

08-15 16:42