关系数据库设计 - 用户最喜欢的数据库设计
Relational Database Design - User favorite DB design
用例:将用户最喜欢的组合保存到数据库。
用户可以 select
1."a,b,c"作为他最喜欢的第一个组合。
2."a,b" 作为第二喜欢的组合。
如何设计数据库 table 来保存这些信息以及
应该能够通过使用使用的 id
查询来检索
select * 来自 UserFav,其中 userId = :userId
应该 return
[a,b,c] 和 [a,b]
此 table 架构的冗余数据过多
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
用例:将用户最喜欢的组合保存到数据库。
用户可以 select
1."a,b,c"作为他最喜欢的第一个组合。
2."a,b" 作为第二喜欢的组合。
如何设计数据库 table 来保存这些信息以及 应该能够通过使用使用的 id
查询来检索select * 来自 UserFav,其中 userId = :userId
应该 return
[a,b,c] 和 [a,b]
此 table 架构的冗余数据过多
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