MySql数据库格式化

时间:2011-11-17 21:17:27

标签: mysql database-design database-schema

我目前正在为我所工作的公司开发产品库存信息的数据库存储解决方案。我正在使用MySql,我很难想出一种有效,可行的数据存储格式。

目前,我们有大约25000种产品需要跟踪。对于每种产品,我们需要跟踪大约20种不同类别(可用数量,价格等)。该报告每3-4天下载并更新一次,现在就在excel中存储和更新。

我的问题是,到目前为止,我提出的唯一解决方案是为上面提到的每个类别创建单独的表,使用基于产品skus的外键,并级联以更新每个相应的表。但是,这种方法要求每个表在每次运行程序时都添加24000行,因为每个产品都需要在运行它的日期进行更新。这样做的问题是数据将存储大约一年,因此表格将增加很多。我对其他数据库格式的研究已经产生了一些例子,但没有一个例子。它们的目标是每天增加100行。

是否有人知道或有任何关于设置此类数据库的合适方法的想法,或者我在上面描述的方法是否合适并且在MySql表的限制范围内?

谢谢, 麦克

1 个答案:

答案 0 :(得分:0)

对于那种情况,25,000行对MySQL或平面文件没有任何意义。最初不要担心数据量。我曾参与许多零售数据库模式,产品通常由静态或任意长度的属性集定义。无论哪种方式,您的数据量都不会太远。

静态:

create table products (
    product_id integer primary key auto_increment
  , product_name varchar(255) -- or whatever
  , attribute1_id -- FK
  , attribute2_id -- FK
  , ...
  , attributeX_id -- FK
);

create table attributes (
    attribute_id integer primary key -- whatever
  , attribute_type -- Category?
  , attribute_value varchar(255)
);

或者,你显然:

create table products (
    product_id integer primary key auto_increment
  , product_name varchar(255) -- or whatever
);

create table product_attributes (
    product_id integer
  , attribute_id integer
  , -- other stuff you want like date of assignment
  , primary key (product_id , attribute_id)
);

create table attributes (
    attribute_id integer primary key -- whatever
  , attribute_type -- Category?
  , attribute_value varchar(255)
);

我会毫不犹豫地将几亿条记录推入基本结构中。