举例:有个用来存储一些基本数据的表 TableA: NO,Name,Style,Width,Weight,CustShort,Address,phone,mail
       
  有另一个表TableB用来存储另一些数据,:NO,Name,Style,Width,Weight,CustShort,UNIT1,OQTY1,UNIT2,OQTY2    这样,当我想查询 NO,Name,Style,Width,Weight,CustShort,UNIT1,OQTY1,UNIT2,OQTY2  这些资料时,就直接从  TableB中查询就可以了,不必还关联到TableA中去去查NO,Name,Style,Width,Weight,CustShort,因为表TableB中已经有    这些字段了。这样TableA的负荷就少很多。      但上述设计的TableB有这样的缺点,那就是当TableA的资料更新时,必须要额外的写代码(如触发器等)去更新TableB,才  能保持一致.      如果TableB的设计是这样的:NO,UNIT1,OQTY1,UNIT2,OQTY2 (同过ID与TableA关联),当查询很多时(如查询 NO,Name,Style,Width,Weight,CustShort,UNIT1,OQTY1,UNIT2,OQTY2),TableA的负荷就多些,因为要关联到TableA 取数据.

解决方案 »

  1.   

    --> 代码:
    alter table Borrow   
    Add constraint fk_Borrow_BorrowNo 
    Foreign key( BorrowNo) references BoroowList (BNo)
    on update cascade  --级联更新 
    on delete cascade  --级联删除 SQL级联操作设置对SQL数据库的表,进行级联操作(如级联更新及删除),首先需要设置表的主外键关系,有两种方法:第一种:1. 选择你要进行操作的数据库2. 为你要创建关系的两个表设置主键
    3. 在此数据库的数据库关系图一栏处 =>单击右键=>创建新的关系图=>选择要添加关系的表,单击添加4. 完成后会在关系图的窗口上生成两个表,在表的某列按钮上长按鼠标左键,并拖到另一张表上5. 在新弹出的"表和列"的窗口中,设置两个表对应的主外键字段,确定6. 在外键关系窗口中,INSERT 和 UPDATE 规范一栏处,将更新规则和删除规则设置为层叠,点击确定完成,即可实现级联更新 第二种:1. 选择你要进行操作的数据库2. 为你要创建关系的两个表设置主键
    3. 单击你设置外键表的树型节点 =>在键一栏处单击右键=>新建外键4. 在外键关系窗口中,单击表和列规范一栏右边的按钮5. 在新弹出的"表和列"的窗口中,设置两个表对应的主外键字段,确定6. 返回外键关系窗口,在 INSERT 和 UPDATE 规范一栏处,将更新规则和删除规则设置为层叠,点击确定完成,即可实现级联更新 
     
      

  2.   

    想了下,还是觉得“TableB的设计是这样的:NO,UNIT1,OQTY1,UNIT2,OQTY2 (同过ID与TableA关联)”这个比较合理。你的更新代价好像会比查询来得高。数据库中一般没必要存放重复数据的了。