回答

收藏

您如何在通用方案上对数据变量方差建模?的SQL

技术问答 技术问答 167 人阅读 | 0 人回复 | 2023-09-12

最近在想一些事情,想知道做类似以下情况的正确方法是什么(相信对于DB对于专家来说,做类似的事情是很常见的)。! r, p4 U9 u) G+ @! D
假设你有一个product表,如下所示(MySQL):
* M+ o( g/ U7 B9 W+ n/ V/ U6 A7 PCREATE TABLE `products` (  `id` int(11) NOT NULL auto_increment, `product_name` varchar(255) default NULL, `product_description` text, KEY `id` (`id`), KEY `product_name` (`product_name`)) ENGINE=MyISAM DEFAULT CHARSET=utf8;这里没什么不寻常的。现在,假设在另一个表中有一个类别的层次结构,并且有一个单独的表将与产品表绑定多对多-因此每个产品都属于某种类别(我将省略那些类别)+ `  Q, ^  g7 L) ?3 s
,因为这里不是问题)。
. F9 o% n1 J' E2 l2 q( }现在我们来介绍一些有趣的部分-如果每个类别都需要产品项的附加变量集,该怎么办?例如,计算机监控器类别中的产品必须具备LCD /
3 t0 y! G4 S& Q; P7 V% y; DCRT枚举字段、屏幕尺寸枚举等。-还有其他一些类别,可以说冰淇淋还具有其他一些变量,例如风味varchar,货架保存时间int等。
7 f1 q2 F# ?5 Q& g* b这里的问题是所有产品都有一组共同的变量(id,名称、描述和类似的变量),但类别之间还有其他变量不一致-
8 m# K; `8 c# K6 q. V但所有产品都应共享同一组,因为最后,它们都属于产品组,因此可以查询SELECT * FROM products ORDER BY- b+ }7 g4 ^5 e# }
company_id(简单的例子可能没有代表性,但你可以看到图片)。
) Z+ g4 E- y3 M4 p) V" R现在,我看到了许多潜在的解决方案:# e2 d* U$ ~8 }) W$ P; w2 r' c
-为每个产品类别生成单独的表,并存储具有适当附加变量的产品-愚蠢,对查询不友好
/ E) [$ X. v# t; @2 Q5 ?+ n-产品表与通用变量保持不变,并为每个类别创建一个单独的表,包括其他变量变量JOIN绑定两个表-标准化,但查询性能和清晰度-一个产品将如何过滤(第一个表)-以及如何为额外变量(如17英寸)LCD附加过滤器监视器-它需要SQL JOIN欺骗   5 l+ u7 z7 P. i8 F3 l+ V, X. m* D
-产品表保持不变,并添加另一个变量文本,如JSON该文本包含其他变量-紧凑整洁,但不能使用SQL筛选变量 # C1 }- R* p4 Y& \# M, n6 T$ A
我知道我在这里缺少非常明显和简单的东西-我对标准化技术有点生锈
; }. |* D9 H5 J: F# v6 Q5 w编辑:
) R0 K7 `# ~: a, H" d; v在问这个问题成功之前,我一直在搜索stackoverflow。然而,在问题发布后,我点击了我的标签标准化,发现了几个类似的问题,导致了通用和专业的关系设计的搜索。故事的重点是,这一定是我在互联网生活中第一次真正有用的标签。但我仍然想听听你的意见。- c4 d6 Q% t" Y$ z' _8 ]. D5 r
edit2    :方法2的问题是我期待1000个左右的专业化。层次结构有一个类别(深度为1-4层),终端节点增加了特殊变量-( ?* V" j( q7 u& B
它们按1000的顺序积累,所以添加要连接的专用表有点不切实际。* i$ g" _0 a! j" f" @9 p& x
edit3    :因为在我的案例中,大量的属性是可变的,所以建议的物理属性值看起来像是一条路要走。噩梦来了!谢谢你们。3 A' }8 a& w2 @' h
                                                                1 U5 \1 p$ r1 p$ H* |
    解决方案:
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则