Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Se aplica a:SQL Server
Base 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. |