一个节目单列表,每个节目条目不同类型,所以建立了多个表实现,一个父类表,多个子类表,节目单与条目表(父类表)建立外键连接,问题:在得到节目单列表时,如何创建合适的子类对象?
因为子类数目属性差别可能很大,有可能还在新建不同的条目。

解决方案 »

  1.   

    一个父类表,多个子类表?没必要
    两个表即可
    父类表(父类id,父类名称)
    子类表(子类id,子类名称,父类id,子类的父(pid))
      

  2.   

    子类表(子类id,子类代码,子类名称,父类id,子类的父(pid))
      

  3.   

    弄棵树,建那么多表干什么啊。一张表啊(id,名字,引用本表id,)不就得了
      

  4.   

    楼主的意思我是看明白了,但问题不是很明白。
    主表里面加一个字段,区分类型。
    得到主表记录后,根据这个字段的值,来决定取哪个子表、创建哪种子类对象。
    就是工厂模式。
    没有什么好的办法。
    如果你用ibatis3做为ORM,它里面有一个功能支持一个主表对多个子表。
      

  5.   

    一个类别表   所有类别都用这张表;一个节目单表
    class Type {
    Type type;
    set<Type>
    set<Jiemu>
    }
    class  Jiemu{Type type
    }
      

  6.   


    ibatis3我没用过,现在这种方式在插入的时候没问题,一次插入几个表就行了。但在查询一个节目单的时候,得到一个条目ID,要知道具体是哪种条目还有些费事,具体在创建的时候,只能根据type类型,用个case,然后根据不同的值,再到不同的表中实例成不同的类。这感觉总有点不太自然,如果多个子类,就要 多一个case。
      

  7.   

    问题是这样的:
      大体是做一个屏幕控制和发送的程序。有多个显示屏,类似火车站外面LED显示屏,要做成节目单的形式,控制其显示内容。插入内容可能是标语,口号,广告,或者天气预报,节日,倒计时,还有从数据库实时查询出来的数据,按预先设置好的顺序显示,要求客户端控制这些节目单的生成,和条目信息按照相应接口通过UDP协议发送,并在客户端模拟显示,动态更新其状态。
    发送的内容可能有两种形式,一是发送文字,有多种字体可选,16点阵和24点阵字体。可以以点阵形式发送,控制屏幕上每一点的亮暗。其中实时查询的数据是每20s要更新一次,查询的内容可能要显示多屏。现在的想法是,根据条目的不同,分成不同的类,但每一种做为节目单上的一个条目。有些条目是固定的,如标语口号等,可以预先设置要发送的数据内容,而有些如日期,有其固定的算法,默认取当前日期,可能显示年月日时分秒,或星期几等。实时数据显示要存储其查询要求,在显示的时候,根据定义取得相应的数据,并将其分隔成多屏。
    另外,每一个条目还可能是按发送固定次数,固定的时间段显示,或每天内只是固定时间段显示。目前的划分是,将每一个节目单条目作为一个类,同时有个辅助类确定其是否符合显示条件。条目类中包含一个显示条目类,作为各种显示条目的父类。根据内容的不同,这个条目可能是标语口号等固定内容类,也可能是日期,节日等动态内容,也可能是实时数据。类和数据库设计中,如何根据一个显示条目的ID,确定实例化哪个具体的显示条目类。
    不知道我说明白了没有,呵呵。
    ================================
    谢谢!
      

  8.   

    跟我理解的意思差不多
    我以前也做过类似的设计,一个登记主表,根据主表里面的一个字段判别使用哪种类型的附表。
    没有什么好的解决办法,跟你目前使用的方法没有什么区别。增加一种附表,就得改程序加一个case。
    建议你看看ibatis3,里面提供了一种相对比较优雅的解决方案,可以把这种变化放到xml文件中。