如何在mysql中存储变量列表

时间:2017-01-20 09:05:02

标签: mysql sql database

我不是很熟悉mysql,我有以下问题。我会将一些产品存储在mysql中。这些产品有一堆副产品,我怎么能存储这些子产品

我应该为每个子产品做一行,但每个产品都有不同的子产品集。 或者将noSql数据库用于此类数据

更好
product
   productName
   productDescription
   productDimension
   subProducts
      1
      2
      3
   price

感谢您的帮助

3 个答案:

答案 0 :(得分:0)

你可以使用MySQL关系来做到这一点。通过使用外键来关联表。你应该有2个表。 1为您的主要产品,另一个为您的子产品。

产品表:

产品

ID 名称

子产品表:

ID parent_product_id 名称

访问此链接。 https://dev.mysql.com/doc/workbench/en/wb-foreign-key-relationships.html

答案 1 :(得分:0)

你会得到参考 Design database for category, subcategory and associated books 喜欢: 表类别   ID   名称   parent_category

答案 2 :(得分:0)

有几种方法可以做到这一点。您可以在单独的表中包含子产品,并在主产品表中使用对产品ID的FOREIGN KEY引用。

如果产品属性有些类似,您也可以将它们放在同一个表中,但使用parentID列来引用父产品。然后,即使它是同一个表,您也可以使用FOREIGN KEY来强制执行约束。非子产品的产品可以使用parentID为NULL。

例如:

ALTER TABLE products ADD FOREIGN KEY (parentID) REFERENCES products (productID) ON UPDATE CASCADE ON DELETE CASCADE;

例如:

INSERT INTO products VALUES ('p1', 'Product 1', '55 dm3', 59.99, 1, NULL);
...
INSERT INTO products VALUES ('p1-1', 'Subproduct 1.1', '8 dm3', 19.99, 4, 1);
...

mysql> SELECT * FROM products WHERE parentID = 1;
+-------------+--------------------+------------------+-------+-----------+----------+
| productName | productDescription | productDimension | price | productID | parentId |
+-------------+--------------------+------------------+-------+-----------+----------+
| p1-1        | Subproduct 1.1     | 8 dm3            | 19.99 |         4 |        1 |
| p1-2        | Subproduct 1.2     | 4 dm3            | 19.99 |         5 |        1 |
+-------------+--------------------+------------------+-------+-----------+----------+
2 rows in set (0.00 sec)

如果你想要牺牲关系表的优势而不是使用更灵活的JSON数据,那么MySQL 5.7也支持它。看看https://dev.mysql.com/doc/refman/5.7/en/json.html

例如,您可以拥有一个代表产品的JSON对象,该产品包含一个子产品对象数组。