主键和外键到底是应该用有实际意义的列还是没实际意义的列好,用什么数据类型好,没有实际意义的外键如何实现和主表的关联

解决方案 »

  1.   

    用int做为流水ID,主键为自动增长,外键作为引用.
      

  2.   

    一般来说,用没什么意义的自动增长INT做主键及聚集索引比较好。这样插入效率比较高。
    外键的话在外键表里面多加一个主键ID字段就可以了。
      

  3.   

    to:fyming
      是不是把作為主鍵的列作為標識,增量為1,外鍵為用相同的類型和設置?
      

  4.   

    TO:iamltd
    那是不是主從表之間就不存在關聯了?
      

  5.   

    是不是这样没什么实际意义哦?就凭两个ID关联,而实际上ID对应的两条记录是不是没什么关系哦?
      

  6.   

    首先,选择对用户没有实际意义的字段作主键,是一种良好的数据库设计。
    其次,设置主键通常通过两种方法实现:标识列(IDENTITY)和全局标识列(GUID)。
    另外,对于外键,可以在外键表里面多加一个主键ID字段就可以了,此时的外键数据类型要么是INT,要么是UNIQUEIDENTITIE。
    通过这种设计之后,主从表之间就可以经由外键进行连接了!
    呵呵,好运!~
      

  7.   

    呵呵!
    不是“在输入数据的时候就要确保相同ID对应的记录”!而是,在你往主表中插入一条记录之后,数据库系统(如:SQL Server 2000)会通过系统触发器自动确保主表中的ID与从表中的外键ID总保持一致!
    ~呵
      

  8.   

    晕,怎么封贴给分哦,第一次上CSDN,呵呵
      

  9.   

    TO:cxp82428(出现派) to:fyming
      是不是把作為主鍵的列作為標識,增量為1,外鍵為用相同的類型和設置?
    _______________________________________是,这样做好处多多,上面几位也讲了一些,再补充一点:最常见的问题就是在客户端处,诸如物料编码、部门编码、员工编码、会计科目等等都可以随时动态修改,因为你在其他表中引用的只是item等信息的流水ID而已,在item表中对item的编码列进行改动不会影响到其他表对item流水ID的正确引用。