繁体   English   中英

需要有关mysql数据库设计的建议

[英]need advice on mysql data base design

我需要构建应用程序,用户可以通过多种特征搜索/过滤产品。 有25个产品组。 每个产品组都有大约10个产品特征。 我有一些数据库设计解决方案,但它们似乎都不够合适:

  1. 每个组创建25个表,列名称存储产品组特征。
  2. 创建一个包含所有产品的表和包含产品特征的列数(~200)
  3. EAV:为所有特征和1个表创建一个表,其中所有产品及其属性存储在行中,而不是列名中。 此解决方案将导致编写大量应用程序代码,因为我无法在一行中选择具有所有特征的产品。 我将不得不编写应用程序代码来组合mysql结果。

我相信已经解决了像我这样的问题。 感谢帮助。

编辑:

在大多数情况下,组中的特征完全不同。 这些是起动机/交流发电机组件。 只有大约25%的特征可以重叠,如物理特性,长度,直径等。

我建议如下:创建3个表; 群组,群体特征,产品。

  1. 组链接到两个表。
  2. GroupCharacteristics将具有特征列表,使用3列,(1)GroupName,(2)CharacteristicsName,(3)Mapping [映射的值可以是C01,C02到C10]稍后您将使用映射。 一组具有许多特征,因此它是一对多的链接。
  3. 产品将有12列; (1)ProductName / Id,(2)GroupName,(3)C01,(4)C02 ......(12)C10。 C **列将填充相关特征的值,以便正确映射它们。

团体:
[组名]
1-车辆
2,家具
特点:
[地图] [集团] [特点]
1-C01 | 车辆| 长度
2-C02 | 车辆| 体积
3-C03 | 车辆| 类型
4-C01 | 家具| 高度
5-C02 | 家具| 体积
6-C03 | 家具| 长度
产品介绍:
[ProdName]的[组] [C01] [C02] [C03] ...
1车| 车辆| 2 | 50 | 两厢
2-Jet | 车辆| 10 | 70 | 空值
3,表| 家具| 1 | null | 1.6
4杯| 家具| 0.1 | 0.12 | 空值

String col =从特征中选择地图,其中Group ='Vehicles'和Characteristics ='Type'
- 这将返回列(在本例中为C03)然后 -
String sql =“从产品中选择ProdName,其中Group ='Vehicles'和”+ col +“='Hatchback'”
- 这将在字符串中构建查询然后您只需执行它 -
执行(SQL)
- 无论您使用何种语言,这只是您必须编写的代码背后的基本思想。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM