请教一个表设计的问题
sql server 2005:
一个很简单的表设计问题,请教各位。本人数据库设计方面很菜。
有一个楼盘项目表,存储楼盘的各种信息,其中有个一个学区属性,该字段可能值是:幼儿园、小学、中学中的某1个,或是其中的某2个或是全部。
现在的问题就是如何设计这个楼盘项目表,使得搜索学区时,效率较高的查询出结果来,注意:学区搜索条件有可能是多种学区,如搜索同时有幼儿园和小学的楼盘项目。
------解决方案-------------------- 如果学区属性不太会变的话,建议建一张学区属性表。
Table 编号 学区属性
0  无
1  幼儿园
2  小学
3  中学
4  幼儿园、小学
5  幼儿园、中学
6  小学、中学
7  幼儿园、小学、中学
然后在楼盘项目表里放编号。
------解决方案-------------------- 楼盘ID   学区ID
1     1
1		2
2		1
2		3
2		4
3		1
楼盘ID 楼盘
1	1号楼
2	2号楼
3	3号楼
学区ID 学区
1		幼儿园
2		小学
3		中学
4		少年宫
做好索引,链接即可。
------解决方案-------------------- 探讨  sql server 2005: 一个很简单的表设计问题,请教各位。本人数据库设计方面很菜。 有一个楼盘项目表,存储楼盘的各种信息,其中有个一个学区属性,该字段可能值是:幼儿园、小学、中学中的某1个,或是其中的某2个或是全部。 现在的问题就是如何设计这个楼盘项目表,使得搜索学区时,效率较高的查询出结果来,注意:学区搜索条件有可能是多种学区,如搜索同时有幼儿园和小学的楼盘项目。 
------解决方案-------------------- 探讨  sql server 2005: 一个很简单的表设计问题,请教各位。本人数据库设计方面很菜。 有一个楼盘项目表,存储楼盘的各种信息,其中有个一个学区属性,该字段可能值是:幼儿园、小学、中学中的某1个,或是其中的某2个或是全部。 现在的问题就是如何设计这个楼盘项目表,使得搜索学区时,效率较高的查询出结果来,注意:学区搜索条件有可能是多种学区,如搜索同时有幼儿园和小学的楼盘项目。 
------解决方案-------------------- 探讨  sql server 2005: 一个很简单的表设计问题,请教各位。本人数据库设计方面很菜。 有一个楼盘项目表,存储楼盘的各种信息,其中有个一个学区属性,该字段可能值是:幼儿园、小学、中学中的某1个,或是其中的某2个或是全部。 现在的问题就是如何设计这个楼盘项目表,使得搜索学区时,效率较高的查询出结果来,注意:学区搜索条件有可能是多种学区,如搜索同时有幼儿园和小学的楼盘项目。 
------解决方案-------------------- 传统的方法要设置三张表, 一张用于保存学区, 一张用于保存楼盘, 第三张用于保存学区和楼盘的多对多关系
------解决方案-------------------- 你可以把选择的学区的ID都放到临时表#t, 然后类似这样写, 能找到同时有幼儿园和小学的楼盘
SQL code
select @c = count(*) from #t
select * 
from 楼盘 t
    join( 
        select t1.楼盘ID
        from 楼盘 t1
            join 楼盘学区关系 tx on tx.楼盘ID = t1.楼盘ID
            join #t on #t.学区 = tx.学区
        group by t1.楼盘ID
        having count(*) = @c
    ) a on a.楼盘ID = t.楼盘ID