有两个表,结构很相似,主表虽然有两个,可每一张主表都有一大堆关联表,都是1:N的关系,关联表的主键为联合主键,其中之一就是主表的主键。另外,关联表其中一张存储的二进制字段。两张主表都存储一个二进制字段。我不知道是该设计成两套表,还是一套表?
    两张主表的关系无非是从第一种状态转移到第二种状态,但有本质区别的,第一种状态可以修改,第二种状态就不行了。所以,第二套表需要经常进行查询、统计等等。当设计成两套表的时候,由第一种状态转成第二种需要将一系列相关记录(包括其他关联表)从第一套插入第二套表,再从第一个套中删除。我不知道若将主表设计成俩个,其他关联表是否可以设计成一个,将关联表的主键标识直接修改就可以了,从第一态的记录标识(由11打头的固定位数的整数)的,修改成第二态的记录标识(由12打头的固定位数的整数)。其中记录标识从主表种可以得到。我不知:
1、修改表的主键是否合适?虽然可以修改。这样可以提高一些效率,免得执行插入删除大字段的操作。
2、对系统性能有何影响?因为要时时用于查询、统计。若是一套表,则需要加一个判定条件,WHERE ID>12 000000 AND ID<13 000000,此其一;其二,一个表的数据量总比两个表的大,尤其,对二进制数据表来讲。但其他表没有二进制数据,是否大点也没有关系。

解决方案 »

  1.   

    你说的第一套,第二套,
    在Oracle中采用两个不同的用户不就完了吗?两用户众表及关系基本相同,但记录完全不同。
    用触发器来实现:
    第一套可随时向第二套追加记录(触发),同时删掉第一套中的当前记录。
      

  2.   

    各位朋友,小弟近日正在学习oracle9i,由于授课教师水平很戳,所以学习没有多大进展,本人想请各位朋友帮我找一些oracle的电子文档或幻灯片,以助我学习提高,小弟感激不尽.来信请发:
    [email protected]
      

  3.   

    用一套表,主表中加个状态字段,从第一种状态转移到第二种状态时修改状态字段,判定条件,WHERE 状态字段 = ?
    关于二进制字段,可以独立建一个二进制字段表,两个字段ID,二进制字段,在主表中记录二进制字段的ID,主表中可以有多个存放二进制字段的ID的字段