Adventure Works Объяснение

Я смотрел на базу данных Microsoft Adventure Works 2012. Мне было бы очень интересно, есть ли какая-либо информация, объясняющая, почему таблицы были созданы такими, какие они есть. Какой-то обзор схемы, я думаю.

например:

почему они решили создать BusinessEntity "таблица" как своего рода базовый класс для человека, работника и т. д.

большая часть данных нормализована, поэтому они решили поставить CountryRegionCode поле в StateProvince таблица вместо идентификатора отдельный стол.

В любом случае мне очень интересно узнать больше о решениях, которые вошли в дизайн баз данных. Кто-нибудь знает ресурс, который входит в такие вещи?

3 ответов


Я не знаю никакой официальной проектной документации для AdventureWorks, но я использую тренера и широко использовал базы данных AdventureWorks для демонстраций и лабораторий, поэтому я довольно хорошо знаком с ним.

таблица BusinessEntity-классический случай дизайна Супертипа / подтипа, который уменьшает избыточность данных, потому что клиенты также могут стать поставщиками, сотрудники могут стать клиентами и любой другой комбинацией. Кроме того, это означает, что вы не храните детали, связанные с все сущности неоднократно, в отдельных таблицах, минимизируя усилия в случае изменения кода.

CountryRegionCode я не уверен, но я бы подозревал одну из трех причин:

  1. недостаточно различных комбинаций, чтобы гарантировать дополнительную таблицу за счет отчетности (это может быть подтверждено с помощью некоторых простых count(*) GROUP BY statements)
  2. они хотели, чтобы он был в той же таблице, чтобы в будущем они имели гибкость модели в иерархическую структуру типа данных hierarchyid (это наименее likeley вариант)
  3. это была ошибка нормализации! (Мои деньги на этот вариант!)

Это изображение помогло мне, хотя технически это для 2008.


вот ссылка, чтобы заполнить немного на заднем плане:

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