sql-server - 关系数据库设计 - 用户最喜欢的数据库设计
问题描述
用例:将用户最喜欢的组合保存到数据库。
用户可以选择
1.“a,b,c”作为他最喜欢的组合。
2.“a,b”作为第二喜欢的组合。
如何设计用于保存此信息的数据库表,并且还应该能够通过使用使用的 id 进行查询来检索
select * from UserFav where 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
推荐阅读
- python - 如何修复 Metpy/mpcalc 错误:“InvalidSoundingError:压力不会单调下降。”
- node.js - 如何将 Wordpress 网站重定向到 Node-Angular 应用程序
- solana - 如何在 Windows 上安装 Solana?
- java - android中的SetMultiChoiceItems与动态列表数组
- excel - 我用什么分隔符来分隔这个单元格中的字符串
- reactjs - 当 url 更改但不替换 Next.js 中的整个页面时如何添加附加信息
- html - 制作下载按钮以在闪亮中创建和下载受密码保护的文件
- mongodb - 创建集合时如何创建唯一索引?还是在它创建之前?
- java - 我们可以将所有捕获从一个 try-catch-catch... 链转移到另一个函数以防止代码重复吗?
- php - 让我的用户 ID 将其传递给我的员工