结合微软的AdventureWorks示例数据库,关于表设计时的一些有关问题

结合微软的AdventureWorks示例数据库,关于表设计时的一些问题
本帖最后由 x_wy46 于 2014-06-17 17:27:31 编辑



--关于AdventureWorks示例数据库的一些设计问题
--这些表之间的关联都是靠业务ID实现的,但除此之外,还有一些表中设计了一个[rowguid] [uniqueidentifier] 列
--主要有以下三种情况

--第一种情况
/**************主子表同时有[uniqueidentifier]列************/


--主表: Sales.SalesOrderHeader
--子表: Sales.SalesOrderDetail
--同时主子表中同时设计了一个[rowguid] [uniqueidentifier] ROWGUIDCOL  NOT NULL列


--第二种情况
/**************主子表都没有[uniqueidentifier]列************/

--而一些其他的表,也可以理解为主子表吧,
--两张表都没有设计[rowguid] [uniqueidentifier] ROWGUIDCOL  NOT NULL列
--比如
select * from Person.PhoneNumberType
select * from Person.PersonPhone


--第三种情况
/**************主子表有,子表没有[uniqueidentifier]列************/

--比如这两张表,主表Person.Person有一个[rowguid] [uniqueidentifier] 列
--而字表就没有[rowguid] [uniqueidentifier] 列

select * from Person.Person
select * from Person.PersonPhone


/*

这里想知道,这样做(有主子关联关系的表,设计或者不设计[rowguid] [uniqueidentifier]列)的目的和依据是什么?

*/


------解决方案--------------------
http://technet.microsoft.com/en-us/library/ms124879(v=sql.100).aspx其中的rowguid用于合并复制
------解决方案--------------------
订单单头及表身都有可能合并或复制的
人员资料表也是了

至于为什么电话类别及电话表为什么不加,我觉得也可以加的ROWGUIDCOL,视你的需求而定了

楼主明白“唯一标识行ROWGUID,是用于合并复制的”就行了