12

私はMicrosoftのAdventureWorks2012データベースを見てきました。テーブルがそのまま作成された理由を説明する情報があれば、非常に興味があります。ある種のスキーマの概要だと思います。

例えば:

BusinessEntityPerson、Employeeなどの基本クラスの一種としてテーブルを作成することを選択した理由。

ほとんどのデータは正規化されているため、別のテーブルへのIDではなくCountryRegionCodeフィールドをStateProvinceテーブルに配置することを選択した理由。

とにかく、私はデータベース設計に取り入れられた決定についてもっと学ぶことに非常に興味があります。誰かがこの種のものに入るリソースを知っていますか?

4

3 に答える 3

12

私はAdventureWorksの公式の設計ドキュメントを知りませんが、以前はトレーナーであり、デモやラボでAdventureWorksデータベースを幅広く使用していたので、かなりよく知っています。

BusinessEntityテーブルは、SuperType / SubType設計の典型的なケースであり、顧客がベンダーになる可能性があり、従業員が顧客になる可能性があり、その他すべての組み合わせであるため、データの冗長性が減少します。また、すべてのエンティティに関連する詳細を別々のテーブルに繰り返し保存しないため、コードが変更された場合の労力を最小限に抑えることができます。

CountryRegionCode私は前向きではありませんが、次の3つの理由のいずれかを疑っています。

  1. レポートのパフォーマンスを犠牲にして追加のテーブルを保証するのに十分な明確な組み合わせはありません(これは、いくつかの単純なCOUNT(*)GROUP BYステートメントで検証できます)
  2. 彼らはそれを同じテーブルに入れて、将来、hierarchyIDを使用して階層構造をモデル化する柔軟性を持たせたいと考えていました(これは最も可能性の低いオプションです)
  3. 正規化エラーでした!(私のお金はこのオプションにあります!)
于 2012-11-04T19:39:06.290 に答える
10

この画像は、技術的には2008年のものですが、役に立ちました。

于 2016-04-20T15:31:50.280 に答える
1

背景に少し記入するためのリンクは次のとおりです。

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

于 2017-01-19T08:41:51.880 に答える