日期:2014-05-17  浏览次数:20409 次

急!这种情况数据库要怎么设计呢。
大概是这样子的,有10万个公司,每个公司有10万种产品,产品有数量、价格等属性,产品名由字母和数字组成。
要求:
1、每个公司能快速的对自已的产品进行增删改查操作。
2、根据产品名能快速的检索出该产品哪些公司有。
3、根据产品名的首字母,能检索出以该字母开始的所有产品信息。

我能想到的:
1、建一张公司表,一张产品表。这样的话产品表里有尽100亿的数据。要求1、2、3似乎都不满足。
2、根据产品名的首字母(a-z,0-9)不同,建立36张产品表,根据产品名首字母不同,将产品信息存到对应的表里。这样的话每个产品表里有大概有3亿条数据。能满足要求3,但要求1、2 不满足。
3、每个公司建一张产品表。这样能满足要求1,但要求2、3 不满足。

各位大神,要怎么设计数据库才能满足要求1、2、3呢。
数据库 设计 产品 数据

------解决方案--------------------
每个公司,总是有10个产品吗,是固定的吗,会不会有这种情况呢,有的公司有1万种产品,有的只有1000种。

每个公司有的10个产品,在不同公司之间有重叠的吗,比如a公司有产品XX,b公司也有产品xx呢?
------解决方案--------------------
引用:
Quote: 引用:

好像没什么特别吧,就是 公司-产品 关联表的记录可能比较多
设为按公司id进行分区,也就好了


不只是关联表记录多而已。产品种类也是非常多的,有几千万种的。
按公司ID分区 也会有问题吧。有差不多十万公司,貌似不能有这么多的分区。


有10万个公司,每个公司有10万种产品+产品种类也是非常多的,有几千万种
=各个公司的产品很少重叠?

我的一个6亿记录的表(每年增长2亿),就采用了 取模分区 的方式
应该能适合任何 类似这种“差不多十万公司”又能按公司id分区的需求:
公司id % 100 作为分区标志