本帖最后由 qichao888888 于 2013-05-10 14:35:48 编辑

解决方案 »

  1.   

    你的设计太理想化了,纯纸上谈兵。实际应用的时候要注意一下变通。
    解决方法:
    1、可以把外键约束去掉。既然都是自己程序添加进去的数据,要不要外键约束没啥分别,区别只是删除的时候需要自己删除两张表而已。
    2、也可以设计成一张表,用一个字段做区别,1:people,2:student,3:teacher,然后把所有需要的字段都列上,允许为空,大不了就是多余一些字段就是了。
      

  2.   


    谢谢指点,确实没有实战经验。第二个问题关于Dao层的设计可以说说吗?再多问个问题,系统中通常有一些系统常量,比如大学教师都有职称、学位等信息,这些信息就那么几个可列举的取值,而且大部分都不会变动,需要建立职称表、学位表,然后教师表通过外键引用吗?还是全部把这些常量放在一张表中,或是直接在教师表中直接记录。哪种更好了?希望不吝赐教。
      

  3.   

    职称表就不用单独建立了。
    给每个people记录,加一个职称的列就行了。页面输入的时候给个选项,选职称就好了。
      

  4.   

    dao只是一种设计思想,没有规定一定不能dao调用别的dao。
      

  5.   


    最简单的方法。
    你现在设计的是:子类引用用父类的ID为子类的ID。因为数据库的ID字段一般是插入的时候自动取值的,所以存在问题。
    优化设计:给子类定义一个自己的ID,然后再定义一个外键,比如parentId引用父类的ID。这样,子类插入的时候就不存在没有ID值得情况了。
      

  6.   

    请参考我的基于spring,security的开源项目
    http://blog.csdn.net/shadowsick