首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >探险作品解说

探险作品解说
EN

Stack Overflow用户
提问于 2012-11-05 00:42:29
回答 3查看 18.2K关注 0票数 12

我一直在看微软的Advisors2012数据库。如果有任何信息可以解释为什么这些表是这样创建的,我会非常感兴趣。我猜是某种模式概述。

例如:

为什么他们选择创建一个BusinessEntity表作为Person、Employee等的基类。

大多数数据都是标准化的,所以他们为什么选择将CountryRegionCode字段放入StateProvince表中,而不是将ID放入一个单独的表中。

无论如何,我非常有兴趣了解更多关于数据库设计的决策。有没有人知道这类东西的资源?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-11-05 03:39:06

我不知道AdventureWorks的任何官方设计文档,但我曾经是一名培训师,并在演示和实验室中广泛使用AdventureWorks数据库,因此我非常熟悉它。

BusinessEntity表是超类型/子类型设计的典型案例,它减少了数据冗余,因为客户也可以成为供应商,员工也可以成为客户,以及任何其他组合。此外,这意味着您不会在单独的表中重复存储与所有实体相关的详细信息,从而最大限度地减少代码更改时的工作量。

我不太看好CountryRegionCode,但我会怀疑以下三个原因之一:

  1. 没有足够的不同组合来保证额外的表,以牺牲报告性能为代价(这可以通过一些简单的计数(*) GROUP由statements)
  2. They验证)GROUP希望它在同一个表中,这样将来他们就可以灵活地使用hierarchyID (这是最不可能的选项)
  3. 它是一个标准化错误!(我把钱押在这个选项上了!)
票数 12
EN

Stack Overflow用户

发布于 2016-04-20 23:31:50

这张图片帮了我很大的忙,尽管从技术上讲,它是2008年的。

票数 9
EN

Stack Overflow用户

发布于 2017-01-19 16:41:52

这里有一个链接,可以在背景中填充一点:

https://technet.microsoft.com/en-us/library/ms124825(v=sql.100).aspx

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13220573

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档