我一直在关注微软的Adventure Works 2012数据库。如果有任何信息解释为什么表是按原样创建的,我会非常感兴趣。我想是某种架构概述。
例如:
为什么他们选择创建BusinessEntity
表作为Person,Employee等的基类。
大部分数据都已标准化,因此他们选择将CountryRegionCode
字段放入StateProvince
表而不是将ID放入单独的表中。
无论如何,我非常有兴趣了解有关数据库设计决策的更多信息。有人知道这类资源吗?
答案 0 :(得分:7)
我不知道AdventureWorks的任何官方设计文档,但我曾经是一名培训师,并且大量使用AdventureWorks数据库进行演示和实验,所以我对它非常熟悉。
BusinessEntity表是SuperType / SubType设计的经典案例,它可以减少数据冗余,因为客户也可以成为供应商,员工可以成为客户,以及其他所有组合。此外,这意味着您不会在单独的表中重复存储与所有实体相关的详细信息,从而最大限度地减少代码更改时的工作量。
CountryRegionCode我不是肯定的,但我怀疑有三个原因之一:
答案 1 :(得分:5)
答案 2 :(得分:0)
这是一个在背景上填写一点的链接:
https://technet.microsoft.com/en-us/library/ms124825(v=sql.100).aspx