日期:2014-05-18  浏览次数:20768 次

请教一个表设计的问题
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