Compartir a través de


Catálogo de la base de datos WideWorldImporters

Se aplica a:SQL ServerBase de datos de Azure SQL

La base de datos WideWorldImporters contiene toda la información de transacciones y los datos diarios de ventas y compras, así como los datos de los sensores de los vehículos y las salas frías.

Esquemas

WideWorldImporters usa esquemas con diferentes fines, como almacenar datos, definir el modo en el que los usuarios pueden acceder a los datos y proporcionar objetos para el desarrollo y la integración del almacenamiento de datos.

Esquemas de datos

Estos esquemas contienen los datos. El resto de esquemas necesitan muchas tablas, que se encuentran en el esquema Application.

Esquema Descripción
Application Usuarios, contactos y parámetros de la aplicación. Este esquema también contiene tablas de referencia con datos que usan varios esquemas.
Compras Compras de artículos en existencias de proveedores y detalles sobre los proveedores.
Ventas Ventas de artículos en existencias a clientes minoristas y detalles sobre los clientes y los vendedores.
Almacén de lago Inventario y transacciones de artículos en existencias.

Esquemas de acceso seguro

Estos esquemas se usan para aplicaciones externas que no tienen permiso para acceder directamente a las tablas de datos. Contienen vistas y procedimientos almacenados que usan aplicaciones externas.

Esquema Descripción
Sitio web Todo el acceso a la base de datos desde el sitio web de la empresa se realiza a través de este esquema.
Informes Todo el acceso a la base de datos desde informes de Reporting Services se realiza a través de este esquema.
PowerBI Todo el acceso a la base de datos desde los paneles de Power BI por medio de Enterprise Gateway se realiza a través de este esquema.

Los esquemas Reports y PowerBI no se usan en la versión inicial de la base de datos de ejemplo. Sin embargo, se recomienda que todos los ejemplos de Reporting Services y Power BI basados en esta base de datos usen estos esquemas.

Esquemas de desarrollo

Esquemas con fines especiales

Esquema Descripción
Integración Objetos y procedimientos necesarios para la integración del almacenamiento de datos (es decir, migrar los datos a la base de datos WideWorldImportersDW).
Secuencias Contiene secuencias que usan todas las tablas de la aplicación.

Tablas

Todas las tablas de la base de datos se encuentran en los esquemas de datos.

Esquema de la aplicación

Detalles de los parámetros y las personas (usuarios y contactos), junto con tablas de referencia comunes (comunes a otros esquemas).

Tabla Descripción
SystemParameters Contiene parámetros configurables del sistema.
People (Personas) Contiene nombres de usuario e información de contacto de todos los usuarios que utilizan la aplicación y de las personas con las que trata Wide World Importers en las organizaciones de los clientes. Esta tabla incluye personal, clientes, proveedores y el resto de contactos. En el caso de las personas a las que se les ha concedido permiso para usar el sistema o el sitio web, la información incluye los detalles de inicio de sesión.
Cities (Ciudades) Hay muchas direcciones almacenadas en el sistema, de personas, direcciones de entrega de las organizaciones de los clientes, direcciones de recogida de proveedores, etc. Cada vez que se almacena una dirección, se crea una referencia a una ciudad de esta tabla. También hay una ubicación espacial para cada ciudad.
StateProvinces Las ciudades forman parte de estados o provincias. Esta tabla tiene los detalles de esos estados o provincias, incluidos los datos espaciales que describen sus límites.
Países Los estados o provincias forman parte de países o regiones. Esta tabla tiene los detalles de esos países o regiones, incluidos los datos espaciales que describen sus límites.
DeliveryMethods Opciones para entregar artículos en existencias (por ejemplo, camión/furgoneta, correo postal, recogida, mensajería, etc.).
PaymentMethods Opciones para realizar pagos (por ejemplo, efectivo, cheque, transferencia, etc.).
TransactionTypes Tipos de transacciones de clientes, proveedores o artículos en existencias (por ejemplo, factura, nota de crédito, etc.).

Esquema Purchasing

Detalles de proveedores y compras de artículos en existencias.

Tabla Descripción
Suppliers Tabla de entidades principal para proveedores (organizaciones).
SupplierCategories Categorías de proveedores (por ejemplo, chucherías, juguetes, ropa, embalaje, etc.).
SupplierTransactions Todas las transacciones financieras relacionadas con los proveedores (facturas, pagos).
PurchaseOrders Detalles de los pedidos de compra de los proveedores.
PurchaseOrderLines Líneas de los pedidos de compra de los proveedores.

Esquema Sales

Detalles de clientes, vendedores y ventas de artículos en existencias.

Tabla Descripción
Clientes Tablas de entidades principales para clientes (organizaciones o personas).
CustomerCategories Categorías para clientes (por ejemplo, tiendas de artículos de broma, supermercados, etc.)
BuyingGroups Las organizaciones de clientes pueden formar parte de grupos con una mayor capacidad de compra.
CustomerTransactions Todas las transacciones financieras relacionadas con los clientes (facturas, pagos).
SpecialDeals Precios especiales. Pueden ser precios fijos, descuentos en dólares o un porcentaje de descuento.
Orders Detalles de los pedidos de los clientes.
OrderLines Líneas de los pedidos de los clientes.
Facturas Detalles de las facturas de los clientes.
InvoiceLines Líneas de las facturas de los clientes.

Esquema Warehouse

Detalles de los artículos en existencias, su tenencia y sus transacciones.

Tabla Descripción
StockItems Tabla de entidades principales para artículos de existencias.
StockItemHoldings Columnas no temporales para artículos en existencias. Estas columnas se actualizan con frecuencia.
StockGroups Grupos para clasificar los artículos en existencias (por ejemplo, artículos de broma, juguetes, chucherías, etc.).
StockItemStockGroups Qué artículos de existencias se encuentran en qué grupos (varios a varios).
Colores Opcionalmente, los artículos en existencias pueden tener colores.
PackageTypes Formas en las que se pueden empaquetar los artículos en existencias (por ejemplo, caja, cartón, palé, kg, etc.).
StockItemTransactions Transacciones que abarcan todos los movimientos de todos los artículos en existencias (recibo, venta, cancelación).
VehicleTemperatures Temperaturas registradas periódicamente de los vehículos refrigerados.
ColdRoomTemperatures Temperaturas registradas periódicamente de las cámaras frigoríficas.

Consideraciones de diseño

El diseño de una base de datos es subjetivo y no hay ninguna manera correcta o incorrecta de diseñar una base de datos. Los esquemas y tablas de esta base de datos muestran ideas para diseñar su propia base de datos.

Diseño del esquema

WideWorldImporters usa algunos esquemas para que sea fácil entender el sistema de la base de datos y mostrar los principios que la rigen.

Siempre que es posible, la base de datos coloca las tablas que se consultan normalmente en el mismo esquema para minimizar la complejidad de las combinaciones.

El esquema de la base de datos se ha generado mediante código en función de una serie de tablas de metadatos de otra base de datos, WWI_Preparation. Esto proporciona a WideWorldImporters un alto grado de coherencia de diseño, coherencia de nomenclatura e integridad. Para obtener más información sobre cómo se ha generado el esquema, vea el código fuente: wide-world-importers/wwi-database-scripts.

Diseño de tablas

  • Todas las tablas tienen claves principales de columna única para simplificar las combinaciones.
  • Todos los esquemas, tablas, columnas, índices y restricciones CHECK tienen una propiedad extendida Description que se puede usar para identificar el propósito del objeto o la columna. Las tablas optimizadas para memoria son una excepción, ya que actualmente no admiten propiedades extendidas.
  • Todas las claves externas se indexan automáticamente, a menos que haya otro índice no en clúster que tenga el mismo componente izquierdo.
  • La numeración automática de las tablas se basa en secuencias. Es más fácil trabajar con estas secuencias en servidores vinculados y entornos similares que con columnas IDENTITY. Las tablas optimizadas para memoria usan columnas IDENTITY, ya que no se admiten en SQL Server 2016.
  • Para las tablas CustomerTransactions, SupplierTransactions y StockItemTransactions, se utiliza una sola secuencia (TransactionID). Esto muestra cómo un conjunto de tablas puede tener una sola secuencia.
  • Algunas columnas tienen valores predeterminados adecuados.

Esquemas de seguridad

Por seguridad, WideWorldImporters no permite que las aplicaciones externas accedan directamente a esquemas de datos. Para aislar el acceso, WideWorldImporters usa esquemas de acceso de seguridad que no contienen datos, sino que contienen vistas y procedimientos almacenados. Las aplicaciones externas usan los esquemas de seguridad para recuperar los datos que se les permite ver. De este modo, los usuarios solo pueden ejecutar las vistas y los procedimientos almacenados de los esquemas de acceso seguro.

Por ejemplo, este caso incluye paneles de Power BI. Una aplicación externa accede a estos paneles de Power BI a través de la puerta de enlace de Power BI como un usuario que tiene permiso de solo lectura para el esquema PowerBI. Para el permiso de solo lectura, el usuario solo necesita el permiso SELECT y EXECUTE en el esquema PowerBI. Un administrador de la base de datos WWI asigna estos permisos según sea necesario.

Procedimientos almacenados

Los procedimientos almacenados se organizan en esquemas. La mayoría de los esquemas se usan con fines de configuración o ejemplo.

El esquema Website contiene los procedimientos almacenados que puede usar un front-end web.

Los esquemas Reports y PowerBI están diseñados para servicios de informes y Power BI. Se recomienda que todas las extensiones del ejemplo usen estos esquemas para la generación de informes.

Esquema Website

Estos son los procedimientos que usa una aplicación cliente, como un front-end web.

Procedimiento Fin
ActivateWebsiteLogon Permite que una persona (de Application.People) tenga acceso al sitio web.
ChangePassword Cambia la contraseña de un usuario (para los usuarios que no usan mecanismos de autenticación externos).
InsertCustomerOrders Permite insertar uno o varios pedidos de cliente (incluidas las líneas de los pedidos).
InvoiceCustomerOrders Toma una lista de pedidos que se van a facturar y procesa las facturas.
RecordColdRoomTemperatures Toma una lista de datos de los sensores, como parámetro con valores de tabla (TVP), y aplica los datos a la tabla temporal Warehouse.ColdRoomTemperatures.
RecordVehicleTemperature Toma una matriz JSON y la usa para actualizar Warehouse.VehicleTemperatures.
SearchForCustomers Busca clientes por nombre o parte del nombre (ya sea el nombre de la empresa o el nombre de una persona).
SearchForPeople Busca personas por nombre o parte del nombre.
SearchForStockItems Busca artículos en existencias por nombre, parte del nombre o comentarios de marketing.
SearchForStockItemsByTags Busca artículos en existencias por etiquetas.
SearchForSuppliers Busca proveedores por nombre o parte del nombre (ya sea el nombre de la empresa o el nombre de una persona).

Esquema de integración

Los procedimientos almacenados de este esquema se usan en el proceso ETL. Obtienen los datos necesarios de varias tablas para el período de tiempo que requiere el paquete ETL.

Esquema DataLoadSimulation

Simula una carga de trabajo que inserta ventas y compras. El procedimiento almacenado principal es PopulateDataToCurrentDate, que se usa para insertar datos de ejemplo hasta la fecha actual.

Procedimiento Fin
Configuration_ApplyDataLoadSimulationProcedures Vuelve a crear los procedimientos necesarios para la simulación de carga de datos. Esto es necesario para actualizar los datos hasta la fecha actual.
Configuration_RemoveDataLoadSimulationProcedures Vuelve a quitar los procedimientos una vez completada la simulación de datos.
DeactivateTemporalTablesBeforeDataLoad Quita la naturaleza temporal de todas las tablas temporales y, si procede, aplica un desencadenador para que se puedan realizar cambios como si se aplicaran en una fecha anterior a la que permiten las tablas temporales del sistema.
PopulateDataToCurrentDate Se usa para actualizar los datos hasta la fecha actual. Debe ejecutarse antes que cualquier otra opción de configuración después de restaurar la base de datos con una copia de seguridad inicial.
ReactivateTemporalTablesAfterDataLoad Vuelve a establecer las tablas temporales, incluida la comprobación de la coherencia de los datos. Quita los desencadenadores asociados.

Esquema de la aplicación

Estos procedimientos se usan para configurar el ejemplo. Se usan para aplicar características de la edición Enterprise a la edición Standard del ejemplo y también para agregar las auditorías y la indexación de texto completo.

Procedimiento Fin
AddRoleMemberIfNonexistent Agrega un miembro a un rol si el miembro aún no está en el rol.
Configuration_ApplyAuditing Agrega las auditorías. Las auditorías del servidor se aplican a las bases de datos de la edición Standard. Para la edición Enterprise, se agregan auditorías de base de datos adicionales.
Configuration_ApplyColumnstoreIndexing Aplica la indexación de almacén de columnas a Sales.OrderLines y Sales.InvoiceLines, y repite la indexación correspondiente.
Configuration_ApplyFullTextIndexing Aplica índices de texto completo a Application.People, Sales.Customers, Purchasing.Suppliers y Warehouse.StockItems. Reemplaza Website.SearchForPeople, Website.SearchForSuppliers, Website.SearchForCustomers, Website.SearchForStockItems, Website.SearchForStockItemsByTags por procedimientos de reemplazo que usan la indexación de texto completo.
Configuration_ApplyPartitioning Aplica particiones de tabla a Sales.CustomerTransactions y Purchasing.SupplierTransactions, y reorganiza los índices en consecuencia.
Configuration_ApplyRowLevelSecurity Aplica la seguridad de nivel de fila para filtrar los clientes por roles relacionados con la zona de ventas.
Configuration_ConfigureForEnterpriseEdition Aplica la indexación de almacén de columnas, de texto completo, en memoria, PolyBase y la creación de particiones.
Configuration_EnableInMemory Agrega un grupo de archivos optimizados para memoria (cuando no se trabaja en Azure), reemplaza Warehouse.ColdRoomTemperatures y Warehouse.VehicleTemperatures por equivalentes en memoria y migra los datos, vuelve a crear los tipos de tabla Website.OrderIDList, Website.OrderList, Website.OrderLineList y Website.SensorDataList con equivalentes optimizados para memoria, y quita y vuelve a crear los procedimientos Website.InvoiceCustomerOrders, Website.InsertCustomerOrders y Website.RecordColdRoomTemperatures que usan estos tipos de tabla.
Configuration_RemoveAuditing Quita la configuración de auditorías.
Configuration_RemoveRowLevelSecurity Quita la configuración de seguridad de nivel de fila (es necesario para los cambios en las tablas asociadas).
CreateRoleIfNonexistent Crea un rol de base de datos si aún no existe.

Esquema de secuencias

Procedimientos para configurar las secuencias de la base de datos.

Procedimiento Fin
ReseedAllSequences Llama al procedimiento ReseedSequenceBeyondTableValue para obtener todas las secuencias.
ReseedSequenceBeyondTableValue Se usa para cambiar la posición del siguiente valor de la secuencia más allá del valor de cualquier tabla que use la misma secuencia. Es igual que DBCC CHECKIDENT para las columnas de identidad equivalentes para las secuencias, pero puede abarcar varias tablas.