急!这种情况数据库要怎么设计呢。
大概是这样子的,有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呢?
------解决方案--------------------
有10万个公司,每个公司有10万种产品+产品种类也是非常多的,有几千万种
=各个公司的产品很少重叠?
我的一个6亿记录的表(每年增长2亿),就采用了 取模分区 的方式
应该能适合任何 类似这种“差不多十万公司”又能按公司id分区的需求:
公司id % 100 作为分区标志