对于当前的客户项目,我开发了一个存储产品的CMS.
产品是具有标题,文字和文字等一些特性的条目.等等
但是,有些客户希望拥有不同的属性,如价格,颜色和价格.等等
我尝试使我的代码尽可能通用,所以我不想修改代码
为每个客户.
我的问题:
我如何设计这样一个数据库,产品可以拥有无限的多个属性?
如何为这种不同的设计创建/生成表单?
谢谢阅读.
解决方法:
你需要有两个表:
CREATE TABLE products( product_id INT, product_name VARCHAR, ... );
CREATE TABLE product_properties( product_id INT, property_name VARCHAR, property_value VARCHAR );
第一个表包含每行一个产品及其唯一ID及其常用属性
--------------------------------------------------------
| id | name | other common properties...
--------------------------------------------------------
| 1 | apple | ...
| 2 | bentley |
| 3 | ... |
| ... | ... |
第二个表将每个产品与其非常见属性相关联:
----------------------------------------------------
| id | property_name | property_value |
----------------------------------------------------
| 1 | color | red |
| 1 | size | large |
| 2 | wheel count | 4 |
| 2 | top speed | 200 |
| 2 | airbags | yes |
| ... | ... | ... |
您通过两个查询获得产品信息,首先获得公共属性:
SELECT product_name, ... FROM products WHERE product_id = 2
那么非常见的属性:
SELECT property_name, property_value FROM product_properties WHERE product_id = 2
标签:mysql,database-design
来源: https://codeday.me/bug/20190716/1482491.html