在数据库中存储MYSQL选项和值的最有效方法

时间:2013-08-28 14:45:57

标签: php mysql

我遇到了最好的做法,即在我的MYSQL数据库中存储大量选项和值,然后将它们分配给属性。我通常这样做的方式(例如房地产)是创建一个名为" pool"然后有一个自动增量值作为ID和一个varchar来存储该值,在这种情况下"高于地面"和#34; In-ground"的另一行。然后在我的属性表中,我将有一个" has_pool"的列。使用来自"池的正确ID值"分配的表。显然问题是,对于每个属性有数百个选项(壁炉,水视图等),我的数据库表的数量将变得非常大,非常快,我的左连接将在正面失去控制。

有人能指出正确的方向,即最好的做法是轻松填充属性属性的新值并将查询次数降至最低?我觉得有一个简单的解决方案,但到目前为止我的研究并没有让我明白。谢谢!

2 个答案:

答案 0 :(得分:0)

我将序列化的所有值(例如JSON或XML或YAML)存储到blob中,然后为我想要搜索的属性定义反向索引表。

我在演示文稿Extensible Data Modeling with MySQL中描述了这种技巧和替代方案。

另见http://bret.appspot.com/entry/how-friendfeed-uses-mysql

答案 1 :(得分:0)

你可以这样做的一种方法是创建一个包含四列的'options'表:id,menuId,value

创建另一个名为menus的表,其中包含两个字段; id和name。

将菜单名称(池,壁炉等)添加到菜单表中,然后将可能的值添加到选项表中,包括与其相关的菜单的ID。

相关问题