次の方法で共有


WideWorldImporters データベース カタログ

適用対象:SQL ServerAzure SQL Database

WideWorldImporters データベースには、販売と購入に関するすべてのトランザクション情報と毎日のデータのほか、車両と冷却室のセンサー データが含まれています。

スキーマ

WideWorldImporters では、データの格納、ユーザーによるデータへのアクセス方法の定義、データ ウェアハウスの開発と統合のためのオブジェクトの提供など、さまざまな目的でスキーマを使用します。

データ スキーマ

これらのスキーマにはデータが含まれます。 多くのテーブルが他のすべてのスキーマで必要になり、アプリケーション スキーマに配置されます。

[スキーマ] 説明
アプリケーション アプリケーション全体のユーザー、連絡先、パラメーター。 このスキーマには、複数のスキーマで使用されるデータを含む参照テーブルも含まれています
購入 仕入先からの在庫品目の購入と、仕入先に関する詳細。
Sales 小売顧客への在庫品目の販売と、顧客と販売員に関する詳細。
倉庫 在庫品目の在庫とトランザクション。

セキュリティで保護されたアクセスのスキーマ

これらのスキーマは、データ テーブルに直接アクセスできない外部アプリケーション用に使用されます。 外部アプリケーションによって使用されるビューとストアド プロシージャが含まれています。

[スキーマ] 説明
Web サイト 会社の Web サイトからデータベースにアクセスする場合は、必ずこのスキーマを使用します。
Reports Reporting Services レポートからデータベースにアクセスする場合は、必ずこのスキーマを使用します。
PowerBI Power BI ダッシュボードからエンタープライズ ゲートウェイを介してデータベースにアクセスする場合は、必ずこのスキーマを使用します。

Reports スキーマと PowerBI スキーマは、サンプル データベースの最初のリリースでは使用されません。 ただし、このデータベースに基づいて構築されたすべての Reporting Services と Power BI のサンプルでは、これらのスキーマを使用することをお勧めします。

開発スキーマ

特殊な目的のスキーマです

[スキーマ] 説明
統合 データ ウェアハウス統合に必要なオブジェクトとプロシージャ (つまり、WideWorldImportersDW データベースへのデータの移行)。
シーケンス アプリケーション内のすべてのテーブルで使用されるシーケンスを保持します。

Tables

データベース内のすべてのテーブルは、データ スキーマ内にあります。

アプリケーション スキーマ

パラメーターと人 (ユーザーと連絡先) の詳細と、共通の参照テーブル (他の複数のスキーマに共通) です。

テーブル 説明
SystemParameters システム全体の構成可能なパラメーターが含まれます。
People アプリケーションを使用するすべての人と、Wide World Importers が顧客組織で取引する人のユーザー名と連絡先情報が含まれます。 このテーブルには、スタッフ、顧客、仕入先、その他のあらゆる連絡先が含まれます。 システムまたは Web サイトを使うアクセス許可が付与されている人の場合は、その情報にログインの詳細が含まれます。
市町村 システムには多くの住所が格納されています (人の住所、顧客組織の配送先住所、仕入先の集荷住所など)。住所が格納されるたびに、このテーブル内の都市への参照があります。 また、都市ごとの空間位置もあります。
StateProvinces 都市は州の一部です。 このテーブルには、それらの詳細が含まれています (各州の境界を記述する空間データなど)。
州は国/地域の一部です。 このテーブルには、それらの詳細が含まれています (各国/地域の境界を記述する空間データなど)。
DeliveryMethods 在庫品目を配送するための選択肢です (トラック/バン、郵便、集荷、宅配便など)
PaymentMethods 支払いの選択肢です (現金、小切手、EFT など)
TransactionTypes 顧客、仕入先、または在庫の取引の種類です (請求書、訂正票など)

購入スキーマ

仕入先の詳細と在庫品目購入の詳細です。

テーブル 説明
Suppliers 仕入先 (組織) のメイン エンティティ テーブルです
SupplierCategories 仕入先のカテゴリです (ノベルティ、おもちゃ、衣類、包装など)
SupplierTransactions 仕入先に関連するすべての金融取引です (請求書、支払い)
PurchaseOrders 仕入先注文書の詳細です
PurchaseOrderLines 仕入先注文書の明細行です

販売スキーマ

顧客、販売員、在庫品目の販売に関する詳細です。

テーブル 説明
顧客 顧客 (組織または個人) のメイン エンティティ テーブルです
CustomerCategories 顧客のカテゴリです (ノベルティ ストア、スーパーマーケットなど)
BuyingGroups 顧客組織は、より大きな購買力を持つグループの一部である場合があります
CustomerTransactions 顧客に関連するすべての金融取引です (請求書、支払い)
SpecialDeals 特別価格です。 固定価格、ドル単位の割引、または割引率などが含まれます。
注文 顧客注文の詳細です
OrderLines 顧客注文の明細行です
Invoices 顧客請求書の詳細です
InvoiceLines 顧客請求書の明細行です

ウェアハウス スキーマ

在庫品目、保有、取引の詳細です。

テーブル 説明
StockItems 在庫品目のメイン エンティティ テーブルです
StockItemHoldings 在庫品目の非テンポラル列です。 頻繁に更新される列です。
StockGroups 在庫品目を分類するためのグループです (ノベルティ、おもちゃ、食用ノベルティなど)
StockItemStockGroups どの在庫品目がどの在庫グループに含まれるか (多対多)
在庫品目は色を持つことができます (省略可能)
PackageTypes 在庫品目をパッケージ化する方法です (箱、カートン、パレット、kg など)
StockItemTransactions すべての在庫品目のすべての移動をカバーする取引です (入庫、販売、損金処理)
VehicleTemperatures 車両冷却装置の定期的に記録される温度です
ColdRoomTemperatures 冷却室の冷却装置の定期的に記録される温度です

設計上の考慮事項

データベース設計は主観的であり、データベースを設計する正しい方法、間違った方法というものはありません。 このデータベースのスキーマとテーブルは、お客様が独自のデータベースを設計するために役立つアイデアを示しています。

スキーマの設計

WideWorldImporters では、そのデータベース システムを簡単に理解し、データベースの原則を示すことができるように、いくつかのスキーマを使用しています。

可能であれば、データベースでは通常まとめて照会されるテーブルを同じスキーマに配置して、結合の複雑さを最小限に抑えます。

データベース スキーマは、別のデータベース WWI_Preparation 内の一連のメタデータ テーブルに基づいてコード生成されています。 これは WideWorldImporters に、高度な設計の整合性、名前付けの整合性、完全性をもたらします。 スキーマの生成方法について詳しくは、ソース コード wide-world-importers/wwi-database-scripts を参照してください

テーブル設計

  • 結合を簡単にするために、すべてのテーブルに単一列の主キーがあります。
  • すべてのスキーマ、テーブル、列、インデックス、CHECK 制約には、オブジェクトまたは列の目的を識別するために使用できる Description 拡張プロパティがあります。 メモリ最適化テーブルは、現在拡張プロパティをサポートしていないため、その例外です。
  • 左側のコンポーネントが同じである別の非クラスター化インデックスがない限り、すべての外部キーに自動的にインデックスが作成されます。
  • テーブルの自動番号付けは、シーケンスに基づいています。 これらのシーケンスは、リンク サーバーや同様の環境間では IDENTITY 列よりも簡単に使用できます。 メモリ最適化テーブルでは IDENTITY 列が使用されます (SQL SERVER 2016 ではサポートされていないため)。
  • 次のテーブルには、1 つのシーケンス (TransactionID) が使用されます: CustomerTransactions、SupplierTransactions、StockItemTransactions。 これは、一連のテーブルが 1 つのシーケンスを持つ方法を示しています。
  • 一部の列には、適切な既定値があります。

セキュリティ スキーマ

セキュリティ上、WideWorldImporters では、外部アプリケーションがデータ スキーマに直接アクセスすることはできません。 WideWorldImporters では、アクセスを分離するために、データを保持せず、ビューとストアド プロシージャが含まれるセキュリティアクセス スキーマを使用します。 外部アプリケーションでは、セキュリティ スキーマを使用して、表示が許可されているデータを取得します。 これにより、ユーザーは、セキュリティで保護されたアクセスのスキーマ内のビューとストアド プロシージャのみを実行できます

たとえば、このサンプルには Power BI ダッシュボードが含まれています。 外部アプリケーションは、Power BI スキーマに対する読み取り専用アクセス許可を持つユーザーとして、Power BI ゲートウェイからこれらの Power BI ダッシュボードにアクセスします。 読み取り専用アクセス許可の場合、ユーザーに必要なのは Power BI スキーマに対する SELECT および EXECUTE アクセス許可のみです。 WWI のデータベース管理者は、必要に応じてこれらのアクセス許可を割り当てます。

ストアド プロシージャ

ストアド プロシージャはスキーマで整理されています。 ほとんどのスキーマは、構成またはサンプルの目的で使用されます。

Website スキーマには、Web フロントエンドで使用できるストアド プロシージャが含まれています。

Reports スキーマと PowerBI スキーマは、レポート サービスと Power BI のためのものです。 サンプルの拡張機能では、レポートの目的でこれらのスキーマを使用することが推奨されます。

Web サイト スキーマ

これらは、Web フロントエンドなどのクライアント アプリケーションで使用されるプロシージャです。

プロシージャ パーパス
ActivateWebsiteLogon (Application.People の) 人が Web サイトにアクセスできるようにします。
ChangePassword ユーザーのパスワードを変更します (外部認証メカニズムを使用していないユーザー用)。
InsertCustomerOrders 1 つ以上の顧客注文 (注文明細行を含む) を挿入できます。
InvoiceCustomerOrders 請求する注文の一覧を受け取り、請求書を処理します。
RecordColdRoomTemperatures センサー データのリストをテーブル値パラメーター (TVP) として受け取り、そのデータを Warehouse.ColdRoomTemperatures テンポラル テーブルに適用します。
RecordVehicleTemperature JSON 配列を受け取り、それを使用して Warehouse.VehicleTemperatures を更新します。
SearchForCustomers 名前または名前の一部 (会社名または人物名) で顧客を検索します。
SearchForPeople 名前または名前の一部で人を検索します。
SearchForStockItems 名前または名前の一部、またはマーケティング コメントで在庫品目を検索します。
SearchForStockItemsByTags タグで在庫品目を検索します。
SearchForSuppliers 名前または名前の一部 (会社名または人物名) で仕入先を検索します。

統合スキーマ

このスキーマのストアド プロシージャは、ETL プロセスによって使用されます。 ETL パッケージに必要な期間について、さまざまなテーブルから必要なデータを取得します。

DataLoadSimulation スキーマ

販売と購入を挿入するワークロードをシミュレートします。 メイン ストアド プロシージャは PopulateDataToCurrentDate です。これは、現在の日付までのサンプル データを挿入するために使用されます。

プロシージャ パーパス
Configuration_ApplyDataLoadSimulationProcedures データ読み込みシミュレーションに必要なプロシージャを再作成します。 これは、データを現在の日付に更新するために必要です。
Configuration_RemoveDataLoadSimulationProcedures データ シミュレーションの完了後にプロシージャを再度削除します。
DeactivateTemporalTablesBeforeDataLoad すべてのテンポラル テーブルのテンポラルの性質を削除し、必要に応じてトリガーを適用して、sys-temporal テーブルで許可されているよりも早い日付に適用されたかのように変更できるようにします。
PopulateDataToCurrentDate データを現在の日付に更新するために使用されます。 初回バックアップからデータベースを復元した後、他の構成オプションの前に実行する必要があります。
ReactivateTemporalTablesAfterDataLoad データ整合性のチェックを含め、テンポラル テーブルを再確立します。 (関連付けられているトリガーを削除します)。

アプリケーション スキーマ

これらの手順は、サンプルの構成に使用されます。 これらを使用して、サンプルの標準エディション バージョンにエンタープライズ エディションの機能を適用したり、監査とフルテキスト インデックスを追加したりできます。

プロシージャ パーパス
AddRoleMemberIfNonexistent メンバーがまだロールに含まれていない場合に、ロールにメンバーを追加します
Configuration_ApplyAuditing 監査を追加します。 サーバー監査は、標準エディションのデータベースに適用されます。追加のデータベース監査はエンタープライズ エディションに追加されます。
Configuration_ApplyColumnstoreIndexing 列ストア インデックスを Sales.OrderLinesSales.InvoiceLines に適用し、インデックスを適切に再作成します。
Configuration_ApplyFullTextIndexing Application.PeopleSales.CustomersPurchasing.SuppliersWarehouse.StockItems にフルテキスト インデックスを適用します。 Website.SearchForPeopleWebsite.SearchForSuppliersWebsite.SearchForCustomersWebsite.SearchForStockItemsWebsite.SearchForStockItemsByTags を、フルテキスト インデックスを使用する置換プロシージャに置き換えます。
Configuration_ApplyPartitioning Sales.CustomerTransactionsPurchasing.SupplierTransactions にテーブルのパーティション分割を適用し、それに合わせてインデックスを再配置します。
Configuration_ApplyRowLevelSecurity 行レベルのセキュリティを適用して、販売区域関連のロールで顧客をフィルター処理します。
Configuration_ConfigureForEnterpriseEdition 列ストア インデックス、フル テキスト、メモリ内、PolyBase、パーティション分割を適用します。
Configuration_EnableInMemory メモリ最適化ファイル グループを追加し (Azure で動作しない場合)、Warehouse.ColdRoomTemperaturesWarehouse.VehicleTemperatures をメモリ内の相当するものに置き換え、データを移行し、メモリ最適化の相当するもので Website.OrderIDListWebsite.OrderListWebsite.OrderLineListWebsite.SensorDataList テーブル型を再作成し、これらのテーブル型を使用するプロシージャ Website.InvoiceCustomerOrdersWebsite.InsertCustomerOrdersWebsite.RecordColdRoomTemperatures を削除して再作成します。
Configuration_RemoveAuditing 監査構成を削除します。
Configuration_RemoveRowLevelSecurity 行レベルのセキュリティ構成を削除します (関連付けられているテーブルの変更に必要です)。
CreateRoleIfNonexistent データベース ロールがまだ存在しない場合は作成します。

シーケンス スキーマ

データベース内のシーケンスを構成する手順。

プロシージャ パーパス
ReseedAllSequences すべてのシーケンスに対してプロシージャ ReseedSequenceBeyondTableValue を呼び出します。
ReseedSequenceBeyondTableValue 次のシーケンス値の位置を、同じシーケンスを使用するテーブル内の値を超える位置に変更する場合に使用されます (シーケンスに相当する ID 列の DBCC CHECKIDENT と同様ですが、複数のテーブルにまたがる可能性があります)。