WideWorldImporters 数据库目录

适用于:SQL ServerAzure SQL 数据库

WideWorldImporters 数据库包含销售和购买的所有交易信息和每日数据,以及车辆和冷藏室的传感器数据。

架构

WideWorldImporters 将架构用于不同的目的,例如存储数据、定义用户访问数据的方式以及为数据仓库开发和集成提供对象。

数据架构

这些架构包含数据。 所有其他架构都需要许多表,并且这些表位于应用程序架构中。

架构 说明
应用程序 应用程序范围内的用户、联系人和参数。 此架构还包含引用表,其中包含多个架构使用的数据
购买 从供应商处购买的库存物料以及供应商的详细信息。
销售 向零售客户销售库存物料,以及有关客户和销售人员的详细信息。
仓库 库存物料盘存和交易。

安全访问架构

这些架构用于不允许直接访问数据表的外部应用程序。 它们包含外部应用程序使用的视图和存储过程。

架构 说明
网站 从公司网站对数据库的所有访问都通过此架构进行。
报表 从 Reporting Services 报表对数据库的所有访问都通过此架构进行。
PowerBI 通过企业网关从 Power BI 仪表板对数据库的所有访问都通过此架构进行。

示例数据库的初始版本中不使用报表和 PowerBI 架构。 但是,建议在此数据库之上构建的所有 Reporting Services 和 Power BI 示例都使用这些架构。

开发架构

特殊用途架构

架构 说明
集成 数据仓库集成(即,将数据迁移到 WideWorldImportersDW 数据库)所需的对象和过程。
序列 保存应用程序中所有表使用的序列。

数据库中的所有表都位于数据架构中。

应用程序架构

参数和人员(用户和联系人)的详细信息,以及通用引用表(多个其他模式通用)。

说明
SystemParameters 包含系统范围的可配置参数。
People 包含用户名、联系人信息,适用于使用该应用程序的所有人员,以及 Wide World Importers 在客户组织中处理的人员。 此表包括员工、客户、供应商和任何其他联系人。 对于已被授予使用系统或网站的权限的人员,该信息包括登录详细信息。
城市 系统中存储了许多地址,包括人员、客户组织送货地址、供应商的取件地址等。每当存储地址时,此表中都有对城市的引用。 每个城市还有一个空间位置。
StateProvinces 城市是州或省的一部分。 此表包含这些内容的详细信息,其中包括描述每个州或省边界的空间数据。
国家/地区 州或省是国家/地区的一部分。 此表包含这些内容的详细信息,其中包括描述每个国家/地区边界的空间数据。
DeliveryMethods 交付库存物料的选项(例如,卡车/面包车、邮寄、皮卡、快递等)
PaymentMethods 付款选项(例如,现金、支票、EFT 等)
TransactionTypes 客户、供应商或股票交易的类型(例如,发票、贷方通知单等)

购买架构

供应商和库存物料购买的详细信息。

说明
Suppliers 供应商(组织)的主实体表
SupplierCategories 供应商类别(例如,新奇品、玩具、服装、包装等)
SupplierTransactions 与供应商相关的所有财务交易(发票、付款)
PurchaseOrders 供应商采购订单的详细信息
PurchaseOrderLines 供应商采购订单中的详细信息行

销售架构

客户、销售人员以及库存物料销售的详细信息。

说明
客户 客户(组织或个人)的主实体表
CustomerCategories 客户类别(例如,新奇品商店、超市等)
BuyingGroups 客户组织可以是具有更大购买力的群体的一部分
CustomerTransactions 与客户相关的所有财务交易(发票、付款)
SpecialDeals 特价。 这可以包括固定价格、美元折扣或折扣百分比。
订单 客户订单的详细信息
OrderLines 客户订单的详细信息行
发票 客户发票的详细信息
InvoiceLines 客户发票的详细信息行

仓库架构

股票项目、持有量和交易的详细信息。

说明
StockItems 库存物料的主实体表
StockItemHoldings 库存物料的非临时列。 这些列经常更新。
StockGroups 用于分类库存物料的组(例如,新奇品、玩具、可食用的新奇品等)
StockItemStockGroups 哪些库存物料属于哪些库存组(多对多)
颜色 库存物料可以(选择)具有颜色
PackageTypes 库存物料的包装方式(例如,盒子、纸箱、托盘、公斤等)
StockItemTransactions 涵盖所有库存物料的所有变动(收货、销售、核销)的交易
VehicleTemperatures 定期记录的车辆冷却器温度
ColdRoomTemperatures 定期记录的冷藏室冷却器温度

设计注意事项

数据库设计是主观的,设计数据库的方式没有正确与错误之分。 此数据库中的架构和表显示了如何设计自己的数据库的想法。

架构设计

WideWorldImporters 使用一些架构,以便轻松理解数据库系统并演示数据库原则。

数据库尽可能将通常一起查询的表并置到同一架构中,以最大程度地降低联接复杂性。

数据库架构是基于另一个数据库 WWI_Preparation 中的一系列元数据表的代码生成的。 这为 WideWorldImporters 提供了高度的设计一致性、命名一致性和完整性。 有关如何生成架构的详细信息,请参阅源代码:wide-world-importers/wwi-database-scripts

表设计

  • 为了简化联接,所有表都具有单列主键。
  • 所有架构、表、列、索引和检查约束都具有 Description 扩展属性,可用于标识对象或列的用途。 内存优化表是一个例外,因为它们当前不支持扩展属性。
  • 除非有另一个具有相同左侧组件的非聚集索引,否则会自动为所有外键编制索引。
  • 表中的自动编号基于序列。 与 IDENTITY 列相比,这些序列更易于跨链接服务器和类似的环境使用。 内存优化表使用 IDENTITY 列,因为它们在 SQL Server 2016 中不支持。
  • 单个序列 (TransactionID) 用于以下表:CustomerTransactions、SupplierTransactions 和 StockItemTransactions。 这演示了一组表如何具有单个序列。
  • 某些列具有适当的默认值。

安全架构

出于安全原因,WideWorldImporters 不允许外部应用程序直接访问数据架构。 为了隔离访问,WideWorldImporters 使用不保存数据但包含视图和存储过程的安全访问架构。 外部应用程序使用安全架构来检索允许其查看的数据。 这样,用户只能运行安全访问架构中的视图和存储过程

例如,此示例包括 Power BI 仪表板。 外部应用程序以对 Power BI 架构具有只读权限的用户身份从 Power BI 网关访问这些 Power BI 仪表板。 对于只读权限,用户只需要对 Power BI 架构具有 SELECT 和 EXECUTE 权限。 WWI 的数据库管理员根据需要分配这些权限。

存储过程

存储过程按架构进行组织。 大多数架构用于配置或示例目的。

Website 架构包含可由 Web 前端使用的存储过程。

ReportsPowerBI 架构适用于报表服务和 Power BI。 建议示例的任何扩展将这些架构用于报告目的。

网站架构

这些是客户端应用程序(如 Web 前端)使用的过程。

过程 用途
ActivateWebsiteLogon 允许用户(来自 Application.People)访问网站。
ChangePassword 更改用户的密码(对于未使用外部身份验证机制的用户)。
InsertCustomerOrders 允许插入一个或多个客户订单(包括订单行)。
InvoiceCustomerOrders 获取要开票的订单列表并处理发票。
RecordColdRoomTemperatures 采用传感器数据列表作为表值参数 (TVP),并将数据应用于 Warehouse.ColdRoomTemperatures 临时表。
RecordVehicleTemperature 获取 JSON 数组,并使用它来更新 Warehouse.VehicleTemperatures
SearchForCustomers 按名称或名称的一部分(公司名称或人员姓名)搜索客户。
SearchForPeople 按姓名或姓名的一部分搜索人员。
SearchForStockItems 按名称或名称的一部分或市场营销评论搜索库存物料。
SearchForStockItemsByTags 按标记搜索库存物料。
SearchForSuppliers 按名称或名称的一部分(公司名称或人员姓名)搜索供应商。

集成架构

此架构中的存储过程由 ETL 进程使用。 在 ETL 包所需的时间范围内,它们从各种表中获取所需的数据。

DataLoadSimulation 架构

模拟插入销售和购买的工作负载。 主存储过程是 PopulateDataToCurrentDate,用于插入当前日期前的示例数据。

过程 用途
Configuration_ApplyDataLoadSimulationProcedures 重新创建数据加载模拟所需的过程。 这是提供当前日期前的数据所必需的。
Configuration_RemoveDataLoadSimulationProcedures 这会在数据模拟完成后再次删除过程。
DeactivateTemporalTablesBeforeDataLoad 删除所有临时表的时态性质,并在适用的情况下应用触发器,以便可以像在 sys 临时表允许的更早的日期应用这些更改一样。
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.InsertCustomerOrders、和 Website.RecordColdRoomTemperatures
Configuration_RemoveAuditing 删除审核配置。
Configuration_RemoveRowLevelSecurity 删除行级别安全配置(这是更改关联表所必需的)。
CreateRoleIfNonexistent 创建数据库角色(如果尚不存在)。

序列架构

在数据库中配置序列的过程。

过程 用途
ReseedAllSequences 为所有序列调用过程 ReseedSequenceBeyondTableValue。
ReseedSequenceBeyondTableValue 用于将下一个序列值重新定位到使用相同序列的任何表中的值之外。 (如 DBCC CHECKIDENT 用于等同于序列但可能跨多个表的标识列)。