中易网

SQL数据库架构问题

答案:3  悬赏:30  
解决时间 2021-01-30 11:55
例如:有一张商品信息的基表,Product 里面存着一些商品的信息,售价,等等。。。
现在要 储存 超市里这些商品的信息,因为各个超市的商品售价不一定相同,所以要单独储存超市商品的信息,我新建一张超市商品信息表ShopProduct,这里面有超市的编号,商品的编号,售价,等一些字段。
现在问题来了, 假设有500家超市,每家超市有1万种商品的话,ShopProduct表里就会有500万条数据,如果超市无限增多的时候,ShopProduct表的数据会无限增大
那查询的效率会非常的慢,这种表该如何优化呢?
或者该如何构建这个数据库结构呢?
如果每家超市做一张表的话 那数据库会有N多表,也不太现实吧?有没有更好的办法呢?如果问题解决的话 再加20分
最佳答案
分区表, 可能可以解决一部分问题.
也就是 按 超市的编号 进行分区管理.
这样, 假设有500家超市,每家超市有1万种商品的话
ShopProduct表 有 500 个分区, 每个分区 1万种商品.

每个超市,检索其 自己的数据的时候, 肯定要 传入 超市编号 这个字段的.
当数据库分析 SQL 语句的时候,会分析要, 对于这个 指定的超市的编号, 我需要去哪一个分区去检索。 知道去哪一个分区去检索的话, 范围就被局限在 这 1万种商品范围内。 不会去查询其他超市的数据。

缺点也有一点, 就是每新建一个超市, 要在数据库上面创建一个新的分区。
还有就是,假如你不传递任何 超市的条件, 仅仅通过 商品的编号 去查询这个商品, 在各个超市的 售价, 那么,查询性能可能会比较低。
全部回答
有一个观点我不认可:应该是超市放在Shop表里,商品信息放在Product表里,而ShopProduct表只记录前两个表中数据的对应关系,这样比较合理吧; 可以考虑用分区表,或者可以考虑把ShopProduct按地区分为几个表(如东北地区、华北、西北等)
如果真有500家超市,每家有1万种商品,可以把产品分20类,建立20个不同 Product表,和20个不同的ShopProduct表。 如果超市继续增加,可以继续细分产品类别。
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
CDK能兑换英雄武器吗?
单片机程序中怎么把16进制转变成2进制
填空:( )的清明
看看新闻就赚钱
梦之星艺术培训中心(常德桃源)地址好找么,我
我把极品飞车10的登录密码忘记了怎么能取回?
许嵩去我是歌手第三季后台
梦幻西游,69到109点满技能要多少钱
毛豆放久了发酸怎么办
我儿子快出生了,给他取名王博君这个名字怎么
没有衣柜大家是怎么放衣服的
房产证上产别写:私有房产什么意思
被隔壁看上怎么办txt全文番外
大家 早上好!骑电动车闵行爱博五村到杨浦内
围棋中什么叫黑棋如何下才能提掉白子
推荐资讯
东南亚不也都是中国人吗 为什么和亚服差距这
我记得小时候看过一个特摄片,里面的巨大合体
回头曲线的计算公式
老是梦见一个人,怎么回事?
成人高考后还能参加普通高考吗
中国联通大阳泉营业厅这个地址在什么地方,我
阆中冷冻牛羊肉哪批发便宜
"老人一个比一个孤独"用英语怎么说?
gucci手表价格 型号是2248G 多少钱啊?
这个京东余额怎么提现,完整的提现出来,除了
属虎跟属马的婚姻相配吗
环境保护和科技发展之间的关系
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?