如果优化的话
拆成下面几个表:用户表 (所有的用户,里面包括出租房子的,出售房子的,求租的,求购的)
房源表  (房源的信息,就是户型等等,然后加上一个字段,来标志是出售还是出租,另外再加上一个发布人的id,参照用户表的信息)
需求表  (需求的信息,就是最后两个表的共同部分,然后加上一个字段,来标志是求购还是求租,另外再加上一个需求人的id,参照用户表的信息)

解决方案 »

  1.   

    冗余是可能出现的多余的重复数据,从设计上讲是不可避免的,如果你的程序是面象OO,那么数据库设计应该依照OO设计好的来。从你的表设计来看,第一眼感觉清晰,但一考虑到程序业务层中的种种,你的设计根本没有任何优点。
      

  2.   



    衡量一个数据设计冗余大不大,最好的方法是“在数据更改的情况下必须更新大量数据,也同时浪费存储空间,这就是冗余大的标志,并不是所有冗余都是坏事,当冗余的数据基本不变化,这样的冗余是好的,这样可以大大提高效率”你的设计很不好,基本看不见软件工程学的任何影子,对扩展及业务应用上根本就是自己给设下了第一个障碍,建议从OOp到数据层设计
      

  3.   

    http://www.ilib2.com/Class.aspx?Query=sql+%E5%86%97%E4%BD%99
    这里有你应该看的,非常非常专业