Adventure Works Объяснение
Я смотрел на базу данных Microsoft Adventure Works 2012. Мне было бы очень интересно, есть ли какая-либо информация, объясняющая, почему таблицы были созданы такими, какие они есть. Какой-то обзор схемы, я думаю.
например:
почему они решили создать BusinessEntity
"таблица" как своего рода базовый класс для человека, работника и т. д.
большая часть данных нормализована, поэтому они решили поставить CountryRegionCode
поле в StateProvince
таблица вместо идентификатора отдельный стол.
В любом случае мне очень интересно узнать больше о решениях, которые вошли в дизайн баз данных. Кто-нибудь знает ресурс, который входит в такие вещи?
3 ответов
Я не знаю никакой официальной проектной документации для AdventureWorks, но я использую тренера и широко использовал базы данных AdventureWorks для демонстраций и лабораторий, поэтому я довольно хорошо знаком с ним.
таблица BusinessEntity-классический случай дизайна Супертипа / подтипа, который уменьшает избыточность данных, потому что клиенты также могут стать поставщиками, сотрудники могут стать клиентами и любой другой комбинацией. Кроме того, это означает, что вы не храните детали, связанные с все сущности неоднократно, в отдельных таблицах, минимизируя усилия в случае изменения кода.
CountryRegionCode я не уверен, но я бы подозревал одну из трех причин:
- недостаточно различных комбинаций, чтобы гарантировать дополнительную таблицу за счет отчетности (это может быть подтверждено с помощью некоторых простых count(*) GROUP BY statements)
- они хотели, чтобы он был в той же таблице, чтобы в будущем они имели гибкость модели в иерархическую структуру типа данных hierarchyid (это наименее likeley вариант)
- это была ошибка нормализации! (Мои деньги на этот вариант!)
вот ссылка, чтобы заполнить немного на заднем плане:
https://technet.microsoft.com/en-us/library/ms124825 (v=sql.100).aspx