MySQL:基于国家的产品列表

时间:2014-06-04 18:58:43

标签: php mysql sql

我有一张产品表。我想根据他们的国家/地区(IP位置)显示访客产品。该表如下所示:

Product ID, Name, Price, Size, Color, ...

这个表是#34;读得很重",我很少写新条目。

我想到了这个解决方案:将每个国家/地区添加到表中作为列。在那里,我可以设置真或假,取决于我是否要向某个国家的访客展示某种产品。

Product ID, Name, Price, Size, Color, ...,  USA, France, Spain, China

大约有200个国家/地区,因此该表将包含许多列。该脚本获得了大量的请求。该查询将被称为每分钟+ 1百万。所以我需要一些性能良好的解决方案。但我不认为这个解决方案是好的。最重要的因素是表现。

我使用的是PHP,MySQL。

1 个答案:

答案 0 :(得分:1)

维持这将是一场噩梦。随着国家的出现,您将不得不相应地修改您的模型。我会建议像:

CREATE TABLE PRODUCT_COUNTRY -- perhaps there''s a better name for this
( PRODUCT_ID ... 
, COUNTRY_CODE CHAR(3) NOT NULL
,    CONSTRAINT PK_PRODUCT_COUNTRY PRIMARY KEY (PRODUCT_ID, COUNTRY_CODE)
,    CONSTRAINT FK_PRODUCT FOREIGN KEY (PRODUCT_ID) REFERENCES PRODUCTS (PRODUCT_ID)
,    CONSTRAINT FK_COUNTRY FOREIGN KEY (COUNTRY_CODE) REFERENCES COUNTRIES (COUNTRY_CODE)
) ENGINE = INNODB