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