【发布时间】:2011-06-07 13:39:55
【问题描述】:
抱歉,标题无法描述性更强,我仍然不知道我正在处理的内容的名称。
我正在为一个房地产网站开发一个搜索系统,它运行良好,直到我意识到我忘记考虑我的一些字段(在搜索页面中用作过滤器)可能是多个值。我的意思是,我只有一个用于出售和出租的领域,而只有一个用于住宅和商业的领域(其他领域也是如此)——问题是房产可能是出售或出租的,也可能是住宅、商业和工业。
我想我会做的就是把它们移到他们自己的桌子上。问题是,我还有另一个表,其中列出了每个字段的可能值,用于显示值名称、填充表单、用作约束等。
所以现在我被无数张桌子困住了。
属性表,然后是值表,然后是将这些值连接到属性的表。
没有过滤器的普通搜索查询(更多过滤器,更多连接)我有 7 个内部连接。
我很难让联接在查询的 SELECT 部分中同时用于约束结果和返回值。
感谢任何建议,因为这个问题在过去 2 天让我精神疲惫。
编辑:
我目前有以下表格:
属性
属性图像
属性列表
属性选项
属性_用途
res_geo_address
res_geo_cities
res_geo_neighborhoods
res_geo_states
res_property_options
res_property_type_age
res_property_type_listing
res_property_type_property
res_property_type_用途
res_property_type_purpose_property
属性表是主要的属性表,有一些描述属性的列。
properties_表用于连接properties表和res_property_表(使用ids - 一个用于属性,一个用于值)(图像除外,它只包含图像记录)
res_ 表列出了大部分的 id 和 value 名称。 (res_geo 表除外)
截至目前,我的查询不起作用。老实说,我已经达到了难以解释我目前的设置的复杂程度。
如果有一种简单的方法可以查询具有数组的字段的表并轻松检索这些表,那就太好了。
编辑 2:
上图显示了其中一个连接。我如何能够查询一个属性,始终检索与其关联的所有列表名称的连接,但可选择通过一组列表 ID 限制属性?
【问题讨论】:
-
请描述您创建的表,特别是您的值查找的工作方式。一般来说,如果无数表正确地对您要存储的数据进行建模,则它们没有任何问题。
-
正如我在与 EAV 相关的问题中经常做的那样:weblogs.sqlteam.com/davidm/articles/12117.aspx - 查看这篇文章并注意最后一句话。
标签: mysql database database-design schema entity-attribute-value