0

我对 MYSQL 还没有那么丰富的经验,所以请尽可能广泛地回答您的问题。谢谢。

为了学习机制和代码,我决定尝试制作一个目录。数据库将保存产品ID、标题、(名称)、内容、图像路径和缩略图路径。产品也应该是一个或多个类别的一部分,因此它们可以被过滤。以我有大约 7个类别

即使在阅读和搜索之后,也无法真正决定哪个是构建批次的最佳选择。

  • 一张有很多列的表?每个类别都有一列,行中有 1 或 0 值?

  • 一个用于信息的表和一个用于类别的表,也具有 1 或 0 值,并与第一个表中的父级链接。并将它们连接在一起。

我真的不知道什么是最好或最容易构建、组织和使用的东西。

4

1 回答 1

1

永远不应该使用具有可变数的任何类型的解决方案(即您的第一个解决方案)。不能保证一个产品最多有 7 个类别,也不能保证一个产品甚至会有一个类别。您最终将不得不ALTER经常访问此表,并且没有指定多个列的简单方法来选择类别。

第二种解决方案要好得多——它的表Categories在每一行都有一个标识符和类别名称。然后,您只需要另一个具有(产品标识符、类别标识符)的表,您可以将产品链接到任意数量的类别。

CREATE TABLE Categories (
    catID int unsigned not null auto_increment primary key,
    catName varchar(255),
    unique key (catName)
);
CREATE TABLE ProductCategories (
    pcID int unsigned not null auto_increment primary key,
    proID int unsigned,
    catID int unsigned,
    unique key (proID, catID),
    foreign key (proID) references Products (id),
    foreign key (catID) references Categories (catID)
);
于 2013-07-10T12:06:52.730 回答