2012-08-09 56 views
-1

我在我的网站上列出了不同的房地产项目。基于类型的Sepeartion的数据库表设计结构

该项目分离如下。

 
affordable 
budget segment 
Luxurious 
affordable & budget segment 
budget segment & Luxurious 
affordable,budget segment & Luxurious. 

我将使用上述分类填充项目描述页面中的类似项目选项卡。

对于如

 
ProjectName   Class 
ProjectA   Affordable 
ProjectB   Budget Segment 
ProjectC   Affordable & Budget Segment 
ProjectD   Budget Segment    
ProjectE   Affordable 
ProjectF   Affordable, Budget Segment & Luxurious 

现在,在项目描述页面项目A人们应该看到项目C,ProjectE,ProjectF类似项目选项卡因为项目A是经济实惠,项目C,ProjectE,ProjectF包含在负担得起的房子段。

向我建议一个单列表结构以上述要求和一个查询来获得相似的项目。

谢谢你

+0

解决方案单列表结构过度限制了问题。这个问题最好用一个很多的关系来解决。否则,你最终会被彻底破解。 – 2012-08-09 18:39:08

+0

如果这不是家庭作业,那么你为什么要限制对单列表结构的答案?如果它是作业,为什么你没有标记它呢? – Recurse 2012-08-10 00:49:51

回答

0

与上面的评论同意,你应该使用一对多的关系。如果您必须有它会出现只有一列:

分配一个int值每一项,并使用数字+存储位AND(&)来检索不同的组合。

Affordable = 1 
Budget Segment = 2 
Luxurious = 4   # Note: it's Four, not Three. 

请注意4+2+1=7。将其作为proj_val存储在proj_description表中。

在您的项目目录,将这些值:

ProjectName  Class       int val 
-----------  -----       ------- 
ProjectA   Affordable        1 
ProjectB   Budget Segment       2 
ProjectC   Affordable & Budget Segment  1+2=3 
ProjectD (=ProjB) Budget Segment       2 
ProjectE (=ProjA) Affordable        1 
ProjectF   Affordable, Budget & Luxurious 1+2+4=7 
no Proj ?   Luxurious        4 
........   Affordable + Luxurious    1+4=5 
........   Budget + Luxurious     2+4=6 

要获取项目A的相似,这样做:

SELECT * FROM `proj_description` WHERE `proj_val` & 1 != 0 

1基于表格上面计算。所以Proj C(proj_val=3)会给Proj F作为结果:3 & 7 = 3这不是零。