需要设计一个包含所有属性的表,这些属性必须都可以通过SQL进行搜索

Ali*_*Ali 5 php mysql database-design normalization

我在修这里.我正在建立一个家庭预订网站,客户需要一个过滤搜索工具,允许访问者根据标准搜索和过滤属性.问题是他的标准列表非常长,主要是布尔值和可计算的值,例如:

附浴室,阳台,吸烟,酗酒,最多人数,有线电视,互联网,铺有地毯,空调,中央供暖,客房服务等,等等...

我正在考虑为这些中的每一个创建一个字段,但是偏好的数量甚至可能会增加.我抛出了将序列化对象中的每一个存储为字符串的想法,因为使用SQL查询进行搜索是不可能的.除了为每个首选项设置单独的字段外,我还有其他选择吗?

谢谢.我正在使用PHP MySQL.

Bre*_*ann 5

你有一个多对多的表,将属性的ID绑定到具有属性的引用表吗?查找表将包含属性所具有的每个属性的行?

主表

ID PropertyName OtherCols

10 CottageA Stuff

20 CottageB OtherStuff

属性

100吸烟

200空调

300客房服务

400电视

500互联网

查找表

ID AttributeID

10 100

10 200

10 300

20 100

20 400

20 500


Gor*_*don 1

几年前,我对酒店目录进行了完全相同的搜索。我们为此使用了 BitMask,例如我们存储了代表所有可能值的单个数字,例如

\n\n
HotelTable \nID Name         \xe2\x80\xa6    Features\n 1 SuperHotel   \xe2\x80\xa6    5\n\nFeatures\nID Name\n 1 Balcony\n 2 Shower\n 4 Barrier-Free\n 8 Whatever\n \xe2\x80\xa6 \xe2\x80\xa6\n
Run Code Online (Sandbox Code Playgroud)\n\n

在上面的例子中,超级酒店将有一个阳台并且是无障碍的(4+1)。

\n\n

虽然这很有效,但我不确定我是否会再次以这种方式处理它。基本上,所有这些功能都与标签相同,因此您也可以使用已知的方法来创建标签表。

\n