2017-01-20 49 views
0

即時通訊不是很熟悉,我有以下問題。我會在MySQL中存儲一些產品。這些產品有一堆子產品,我怎麼能存儲這些子產品如何在mysql中存儲變量列表

我應該爲每個子產品做一行,但每個產品都有不同的子產品組。 或者是更好地使用NoSQL數據庫這樣的數據

product 
    productName 
    productDescription 
    productDimension 
    subProducts 
     1 
     2 
     3 
    price 

感謝您的幫助

+2

我會考慮一個產品表和單獨的product_subproduct表。 – jarlh

回答

0

有幾種方法可以做到這一點。您可以將副產品放在單獨的表中,並在主產品表中使用FOREIGN KEY引用產品ID。

如果產品屬性有些類似,也可以將它們放在同一個表中,但使用parentID列來引用父級產品。然後可以使用FOREIGN KEY來強制約束,即使它是同一個表。不是子產品的產品可以具有NULL的parentID。

例如:

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對象表示一個產品,其中包含一個子產品對象的數組。

+0

好的,就是這樣。不幸的是,它不可能切換到noSql數據庫。非常感謝 – tbere

0

我認爲這是更好地爲您使用NoSQL數據庫。你的想法可以提高生產力。

+0

這就是你的意見,而我說用rdbms去! – jarlh