0

对于我需要构建的数据库(InnoDB),我有两种不同的结构,我想知道哪一个在性能方面最好。

我想存储数千种产品。每个产品都可以包含一定程度的——也可能是 0——的一种成分(它们是化学产品)。AZ 说,有 26 种不同的成分。每种成分都有自己的特点。

问题是:我如何才能最好地存储和链接成分和产品(在性能方面)?

选项 A

Products 表中的每一行都有 26 个附加字段:每种成分一个。该字段包含金额(不是引用键)。每个成分列都有一个索引,用于更快地搜索。产品和成分之间的联系只存在于程序逻辑层面。数据库中没有链接表。

选项 B

有一个包含产品的表格,以及一个包含成分的表格。表 Products 没有成分字段,而是有一个链接表,将产品链接到成分并定义数量。产品和成分之间的链接现在在 db 级别定义。这张表可能会变得非常大。

另一种选择 B 是我为每种成分制作一个链接表,因此最终得到 26 个链接表。我不确定这在搜索时是否更快......?

4

1 回答 1

2

不要使用选项 A。它使添加或修改成分变得困难,并且根据某些情况会大大增加产品表的大小。

选项B是要走的路。添加或删除成分将是微不足道的,并且对性能没有实际影响。如果将链接表的主键设置在 上(product_id, ingredient_id),大小不会太差,性能也不错。这种方法也是最简洁和最容易管理的。

为每种成分创建链接表会不必要地复杂且效率低下。

于 2013-04-29T21:08:03.583 回答