关系数据库设计 - 用户喜欢的数据库设计

Kar*_*esh 2 database sql-server rdbms sql-server-2012

使用案例:将用户喜欢的组合保存到数据库.

用户可以选择

1."a,b,c"是他最喜欢的组合.

2."a,b"作为第二喜欢的组合.

如何设计用于保存此信息的数据库表,还应该能够通过使用已使用的ID进行查询来检索

从UserFav中选择*,其中userId =:userId应返回
[a,b,c]和[a,b]

此表架构的冗余数据太多

userId  combination
qw1     a,b,c
qw1     b,c
Run Code Online (Sandbox Code Playgroud)

有人可以指导我以最好的方式进行设计.

clo*_*afe 6

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

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  
Run Code Online (Sandbox Code Playgroud)