我在 MySQL 中有一个表结构,其中具有以下结构:
home_id、home_name、添加日期
我有另一个名为 specs 的表,其结构如下:
home_id、spec_key、spec_value
在其中我可以有如下条目:
1, price, 500000
1, location, 90210
1, rooms, 3
1, washrooms, 3
1, furnished_basement, 0
2, location, 14410
2, garage_size, 3
2, price, 335000
出于搜索目的,我想对上述内容进行非规范化。表 ( denormalized_homes
) 结构类似于:
home_id, price, location, rooms, washroom, furnished_basement, garage_size, dateadded
从上面可以看出,a) 并非所有条目都具有所有列的值。b) 表结构不利于INSERT INTO
denormalized_homes select * from
specs 类型查询。我也不能使用存储过程或触发器(主机规则)。
到目前为止,我采取的策略是将 home_id 插入denormalized_homes
表中,然后使用类似于以下查询的内容遍历规范中的每个字段:
UPDATE `denormalized_homes` dh, specs s SET dh.price = s.spec_value WHERE dh.home_id = s.home_id AND s.spec_key = "price";
为每个可能的列创建一个查询然后运行它们是可行的。我只是在想一定有更好的方法,是吗?