2012-05-12 28 views
2

我有这样的情景:复合主键或guid合并数据库

我有很多机器,并有每个数据库。另外还有一点可以从所有的机器提取数据,并添加到自己的本地数据库(它可能有从以前的下载数据)一个客户机。所以`很多'数据库上的表需要一些唯一的标识符。

many - 数据库每台机器

merged上 - 从many数据库中提取数据,客户端机器上的数据库。

我的两个想法:

  1. GUIDmany数据库主键,也GUID在合并后的数据库。 在这里,我还需要机器的列ID的机器区分行。

  2. many数据库整数主键和在合并后的一个复合键(机+整数主键的GUID标识从many数据库)

    在这里,我假定每个的many数据库不需要GUID本身,但仅限于merged之一,所以GUID只需要merged,这是一个复合键。

,这是什么情况下更好的选择?也许我想念一些东西。

+2

目前还不清楚这些数据库是否是_existing_数据库,并且您需要将它们合并,或者您正在为断开连接的系统进行设计。请详细说明要求。 – Oded

+1

您的编辑还没有为我澄清事情。 – Oded

+0

我现在正在设计数据库。 – userbb

回答

0

GUID是理想的这样的系统 - 它实际上可确保没有主键的碰撞会发生。既然你设计,你可以使用GUID的临时标识符您many数据库,并在merged一个整数键替换它们。

另一种方法是在many数据库之间对ID进行分区,因此每个数据库只能使用其他人无法使用的一系列ID。这是不平凡的做好(即不具有不重新同步多久可以存在这些数据库可能会“溢出”,你需要能够一次提供额外的范围估计数据库“用完”等)和可能不适合您的特殊需求。