数据排除的问题

sy_binbin 2009-05-12 01:29:37
我现在有三个基础表,用户表(member),商店表(shop),商品表(product)

用户表能有1W多数据
商店表能有5W多数据
商品表能有100W数据

我现在想要一个功能
就是用户可以选择一些商店和一些商品,让这些商店或者商品信息不在自己的后台内显示出来,不同的用户可能选择的数据不一样。
用户可能选择的数据量会很大。

这样的功能该怎么去设计表结构,在翻页的时候怎么做效率才能高一些。
...全文
198 15 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
sy_binbin 2009-05-14
  • 打赏
  • 举报
回复
哦!明白一些了!我试试先!!
等不到来世 2009-05-14
  • 打赏
  • 举报
回复
把用户不想看到的商品都存到一个黑货表(badprod)中,
查询时,把黑货表中的数据剔除掉。

剔除的方式无非有:
1. not in
2. not exists
3. left join + null的判断
4. 正向、逆向判断结合:建一个 用户-商品表:userid,prodid,isvisible,crdate.isvisible的0和1分别表示存的是红货还是黑货。这样可以根据数据量来灵活存储,但逻辑更加复杂。

我给出的是第3种方案的示例。用原结果集去left join badprod,如果不在badprod表中,则badprod.prodid将会是null,也就是我们需要的记录。
另外,row_number()是2005的排序函数,如果是2000的话,就用其它方式分页,比如top+order by.
sy_binbin 2009-05-14
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 szx1999 的回复:]
SQL code加两个表:
黑店表(badshop): userid,shopid,crdate
黑货表(badprod): userid,prodid,crdate

示例:某用户查询他想看到的商品的关键语句:
select * from
(
select *,rn=row_number() over(order by xx)
from 你原来的结果集 a
left join badprod b on b.userid=@userid and a.prodid=b.prodid
where 你原来的条件集 and b.prodid is null
) t
where rn between 100 and 110
[/Quote]

能不能解释下什么意思啊!
sy_binbin 2009-05-13
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 hery2002 的回复:]
表设计主要是做用户和商店,商店和商品,以及用户和商品之间的映射关系.
--------------------
首先从用户和商店的映射出发,
然后在剔除用户和商品的映射.
这样数据量估计会少一些.

关于翻页的话,最好用存储过程来实现比较好.
个人建议.
[/Quote]
你说的剔除是什么意思??

ai_li7758521 2009-05-13
  • 打赏
  • 举报
回复
这里重点关注翻页的效率。
hery2002 2009-05-13
  • 打赏
  • 举报
回复
表设计主要是做用户和商店,商店和商品,以及用户和商品之间的映射关系.
--------------------
首先从用户和商店的映射出发,
然后在剔除用户和商品的映射.
这样数据量估计会少一些.

关于翻页的话,最好用存储过程来实现比较好.
个人建议.
sy_binbin 2009-05-13
  • 打赏
  • 举报
回复
再顶一下
bestdqf 2009-05-13
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 sy_binbin 的回复:]
再顶一下
[/Quote]

8楼的 语句能介绍一下吗
等不到来世 2009-05-12
  • 打赏
  • 举报
回复
加两个表:
黑店表(badshop): userid,shopid,crdate
黑货表(badprod): userid,prodid,crdate

示例:某用户查询他想看到的商品的关键语句:
select * from
(
select *,rn=row_number() over(order by xx)
from 你原来的结果集 a
left join badprod b on b.userid=@userid and a.prodid=b.prodid
where 你原来的条件集 and b.prodid is null
) t
where rn between 100 and 110
sy_binbin 2009-05-12
  • 打赏
  • 举报
回复
-狙击手- 2009-05-12
  • 打赏
  • 举报
回复
精华里关于这个的很多,找找
sy_binbin 2009-05-12
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 Haiwer 的回复:]
就是个普通的关联关系,和权限没多大关系

关键是翻页得效率,搜索下这方面的贴子,一般用存储过程实现
[/Quote]

对!!就是普通的关联问题,网站其他地方的翻页都是用存储过程实现的,但这个地方用存储过程实现就点麻烦。

所以大家给点思路!
sy_binbin 2009-05-12
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 mugua604 的回复:]
这是个权限问题吧..

配个商品回有自己的归属用户!在商品资料表里付有权限..
[/Quote]

和权限没关系
昵称被占用了 2009-05-12
  • 打赏
  • 举报
回复
就是个普通的关联关系,和权限没多大关系

关键是翻页得效率,搜索下这方面的贴子,一般用存储过程实现
mugua604 2009-05-12
  • 打赏
  • 举报
回复
这是个权限问题吧..

配个商品回有自己的归属用户!在商品资料表里付有权限..

22,300

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧