【问题标题】:How to store multiple, variable, amounts of specification tables in MySQL database如何在 MySQL 数据库中存储多个可变数量的规格表
【发布时间】:2018-03-29 09:16:14
【问题描述】:

我有一个产品数据库,每个产品可以有尽可能多的规格表,这些规格表本身可以有不同数量的列,具体取决于产品。

我只是想知道在设计数据库时如何处理这个问题。

我认为 JSON 作为一种数据类型是可行的方法,但在我好奇之前从未使用过它,我想知道如何存储可变数量的规格表。例如,我是使用数据透视表还是 json 数据类型可以包含多个条目?

非常感谢任何指针或建议。

【问题讨论】:

  • 如果多对多则需要设计关系,然后需要创建第三张表
  • 请举例说明这些产品和规格
  • 一个例子是“豆罐头”和“雨伞”。 Beans 可以有一个重量和尺寸规格表,一个用于成分,另一个用于卡路里和健康饮食。雨伞可能有一个重量和尺寸的规格表,也许还有一个防水等级或类似的规格表。关键是规格表,它们的列数和标题等,不一定事先知道。这就是为什么我假设 JSON 是要走的路?
  • scotch.io/tutorials/working-with-json-in-mysql 找到了一个我正在学习的非常有用的教程。考虑到如果它们没有被明确命名等,我将如何知道如何迭代它们,我开始有了第二个想法……

标签: mysql json database database-design


【解决方案1】:

首先,您需要为产品和规格创建两个表。

在我看来,产品和规格表之间存在多对多关系,所以一个好主意是创建第三个表,除了主键之外,它还应该有一个 product_id 和 specification_id 作为外键。

为了简化问题,我建议添加一个名为 specification_description 的新列,该列可能为空,也可能不为空,具体取决于产品。

-- 餐桌产品

  CREATE TABLE  products 
 (
   product_id  Int  primary key AUTO_INCREMENT,
   product_name   json 
 )
 ;

-- 表格规格

CREATE TABLE  specifications 
(
  specification_id  Int   PRIMARY KEY AUTO_INCREMENT,
  specification_type json,
  specification_desc json  
)
;

-- 表product_specification_table

  CREATE TABLE `product_specification_table 
  (
   product_specification_id  Int primary key AUTO_INCREMENT,
   specification_id  Int,
   product_id  Int 
  )
 ;

-- 创建外键(关系)部分 -------------------------------------------------- ------------

 ALTER TABLE  product_specification_table  ADD CONSTRAINT  Relationship1  FOREIGN KEY ( specification_id ) REFERENCES  specifications  ( specification_id ) ON DELETE CASCADE ON UPDATE CASCADE;


 ALTER TABLE  product_specification_table  ADD CONSTRAINT  Relationship2  FOREIGN KEY ( product_id ) REFERENCES  products  ( product_id ) ON DELETE CASCADE ON UPDATE CASCADE;

希望对您有所帮助。

【讨论】:

  • 如果对您有帮助,请不要忘记标记或投票我的回答。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-18
  • 2023-04-03
相关资源
最近更新 更多