网站有一个表A,专门记录客户的历史交易记录,这些历史记录一共分为几个类型,每个类型需要记录各自必要的属性,如下:表A:
ID 类型 总属性1 总属性2 总属性3 属性A1 属性A2 属性A3 属性B1 属性B2 属性B3 属性C1 属性C2 属性C3...实际情况就是:对于所有类型的记录,都会至少用到总属性
对于A类型的记录,还至少需要用到A1-A3的属性
对于B类型的记录,还至少需要用到B1-B3的属性
对于C类型的记录,还至少需要用到C1-C3的属性同时,A类型的记录还可能需要用到其他类型记录的某些属性表A一共大概有20个字段那么如何设计这个表比较好呢?我现在就是只有一个表A,在插入记录的时候根据类型的判断,写入相应的属性,然后其他不需要的属性就设置为NULL,读取记录的时候也是根据类型的不同,然后取要用的属性我当初这样设计主要考虑到总字段20个左右不算多,都装到同一个表,取记录的时候也不需要多表连接,然后对所有记录的显示排序之类也方便,但是我不知道这样设计是否科学,是否有必要根据不同类型设计出不同的表来,类似于将一般化进行特殊化的处理那样,这样做考虑到以后如果有功能上的扩展是不是会更方便点?

解决方案 »

  1.   

    符合范式都是科学的,何必要根据类型放到不同的表中呢
      

  2.   

    不符合范式,也需要看具体的应用场景,反范式的设计也是需要的,就象进销存中建立一个现存量表
      

  3.   

    是啊,我也知道在实际应用中,有时候需要违反范式,用空间换效率,但是我还是来问以下有没有更好的办法了……这个表要拆的话确实反而不方便,就目前的应用来说 搞不好一个表里面只有3,4个属性,而且表多了也不好
      

  4.   

    如果拆分,每个表的字段不多,查询时反而更麻烦
      

  5.   

    感谢各位告诉我你们的看法,这贴先结