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

专注or全面 2014-06-17 05:26:43



--关于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]列)的目的和依据是什么?

*/

...全文
182 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
---涛声依旧--- 2014-08-19
  • 打赏
  • 举报
回复
订单单头及表身都有可能合并或复制的 人员资料表也是了 至于为什么电话类别及电话表为什么不加,我觉得也可以加的ROWGUIDCOL,视你的需求而定了 楼主明白“唯一标识行ROWGUID,是用于合并复制的”就行了
發糞塗牆 2014-08-19
  • 打赏
  • 举报
回复
研究出啥没有?
發糞塗牆 2014-06-17
  • 打赏
  • 举报
回复
不排除有只复制主表的业务需求,这方面的资料的确太少,但是我个人觉得还是要根据业务,不能满足业务的系统最多是个艺术品,而我们需要的只是一个日用品
专注or全面 2014-06-17
  • 打赏
  • 举报
回复
引用 1 楼 DBA_Huangzj 的回复:
http://technet.microsoft.com/en-us/library/ms124879(v=sql.100).aspx其中的rowguid用于合并复制
也就是说,将来用到复制的表(比如不同数据库的订单不同),都设计一个rowguid,这个也可以理解 但是Product 表有一个rowguid,ProductReview 表就没有,既然要合并,相关的都要合并吧,还是说这个是根据业务来的?
發糞塗牆 2014-06-17
  • 打赏
  • 举报
回复
AdventureWork是高度范式化的数据库,如果想搞数据库设计,可以深入研究一下,记得分享心得
發糞塗牆 2014-06-17
  • 打赏
  • 举报
回复
發糞塗牆 2014-06-17
  • 打赏
  • 举报
回复

27,580

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧