我正在创建一个类似电子商务的网站。我想利用产品之间不同的特定属性为我的用户提供完美的搜索能力。我计划创建 1 个产品表,存储产品之间共享的基本信息,即名称、描述、价格和其他一些信息。然后我计划创建几个“详细信息”表,例如categories_computers,其中包含处理器、HDD、RAM 等列,另一个表为table_shoes,其中包含MATERIAL、SIZE、GENDER 等列。
我是 Mysql 新手,但不熟悉数据库的概念。我认为将这些数据存储到每个表中不会有问题。我的问题来自阅读。查询产品 id 并不难,但我认为查询所有详细信息表来获取产品的详细信息会非常浪费,因为 1 个产品只能有 1 个详细信息。
所以我的问题是如何在列中存储对表的引用,以便产品具有 ID、名称、描述、价格、Details_Table_ID 或类似的内容以在查询时保存。 Mysql 中的表有唯一的 id 吗?或者 Stackoverflow 社区建议我如何解决这个问题?谢谢。
编辑
愚蠢的我,我刚刚记得每个表名称都是唯一的,所以我可以使用它,所以我的问题变成了如何编写一个包含表 A 中的一个单元格的查询,以用作对 a 的引用表名称。
最佳答案
不要为每个类别使用单独的详细信息表,而应使用可以存储任何属性的通用详细信息表。它的列是:
Product_ID INT (FK to Products)
Attribute VARCHAR
Value VARCHAR
该表的唯一键为(Product_ID, Attribute)
。
因此,如果 Product_ID = 1
是一台计算机,您将得到如下行:
1 Processor Xeon
1 RAM 4GB
1 HDD 1TB
如果 Product_ID = 2
是鞋子:
2 Material Leather
2 Size 6
2 Gender F
如果您担心所有这些属性字符串所使用的空间,您可以添加间接级别来减少空间。创建另一个包含所有属性名称的表Attributes
。然后使用 Details
表中的 AttributeID
。这会减慢一些查询的速度,因为您需要进行额外的联接,但可以节省大量空间
关于mysql - 存储对 Mysql 表的唯一引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26188594/