大多数人不推荐EAV,我知道一些原因。 然而,EAV方法与这种方法有什么区别?
表计算机:
id, price, description
表连接:
id, name (possible values: LAN, USB, HDMI, ..., all all about 10)
表 connections_computer
comp_id, conn_id
或者也就是EAV?如果是,那么标准化的替代方案是什么?
考虑一下,我想做那样的搜索:
所有同时具有LAN和HDMI连接的计算机。在这种情况下,我需要1个join / filter属性,当它作为1列/属性时,搜索会很容易,但我会有很多NULL值。
任何建议怎么做?
答案 0 :(得分:0)
你的例子很简单。在 EAV 中,属性名称是列的值,而不是列的名称。例如,
computer: {computer_id, attr_name, attr_value}
insert into computer (computer_id, attr_name, attr_value)
values
(1, 'connection', 'HDMI')
, (1, 'connection', 'USB')
, (1, 'memory', '2 GB')
;
将是一种EAV方法。
Here is an example您在RDBMS中为EAV方法(灵活性)支付的价格。