Catalogo di database WideWorldImporters

Si applica a:SQL ServerDatabase SQL di Azure

Il database WideWorldImporters contiene tutte le informazioni sulle transazioni e i dati giornalieri per le vendite e gli acquisti, nonché i dati del sensore per veicoli e sale fredde.

Schemi

WideWorldImporters usa schemi per scopi diversi, ad esempio l'archiviazione dei dati, la definizione del modo in cui gli utenti possono accedere ai dati e fornisce oggetti per lo sviluppo e l'integrazione del data warehouse.

Schemi di dati

Questi schemi contengono i dati. Sono necessarie diverse tabelle per tutti gli altri schemi e si trovano nello schema dell'applicazione.

Schema Descrizione
Applicazione Utenti, contatti e parametri a livello di applicazione. Contiene anche tabelle di riferimento con dati usati da più schemi
Acquisti Acquisti di articoli di magazzino dai fornitori e dettagli sui fornitori.
Vendite Vendite di articoli di magazzino ai clienti al dettaglio e dettagli sui clienti e sulle vendite.
Magazzino Inventario degli articoli di magazzino e transazioni.

Schemi di accesso sicuro

Questi schemi vengono usati per applicazioni esterne che non possono accedere direttamente alle tabelle dati. Contengono viste e stored procedure usate dalle applicazioni esterne.

Schema Descrizione
Sito Web Tutto l'accesso al database dal sito Web aziendale avviene tramite questo schema.
Report Tutto l'accesso al database dai report Reporting Services avviene tramite questo schema.
PowerBI Tutto l'accesso al database dai dashboard di Power BI tramite il gateway aziendale avviene tramite questo schema.

I report e gli schemi di PowerBI non vengono usati nella versione iniziale del database campione. Tuttavia, tutti gli esempi di Reporting Services e Power BI basati su questo database sono incoraggiati a usare questi schemi.

Schemi di sviluppo

Schemi a scopo speciale

Schema Descrizione
Integrazione Oggetti e procedure necessari per l'integrazione del data warehouse (ovvero la migrazione dei dati al database WideWorldImportersDW).
Sequenze Contiene sequenze usate da tutte le tabelle dell'applicazione.

Tabelle

Tutte le tabelle nel database si trovano negli schemi di dati.

Schema dell'applicazione

Dettagli dei parametri e delle persone (utenti e contatti), insieme alle tabelle di riferimento comuni (comuni a molto altri schemi).

Tabella Descrizione
SystemParameters Contiene parametri configurabili a livello di sistema.
Persone Contiene i nomi utente, le informazioni di contatto, per tutti gli utenti che usano l'applicazione e per le persone con cui Wide World Import si occupa presso le organizzazioni dei clienti. La tabella include personale, clienti, fornitori e altri contatti. Per le persone autorizzate a usare il sistema o il sito Web, le informazioni includono i dettagli di accesso.
Città Esistono molti indirizzi archiviati nel sistema, per persone, indirizzi di consegna delle organizzazioni dei clienti, indirizzi di ritiro presso fornitori e così via. Ogni volta che viene archiviato un indirizzo, è presente un riferimento a una città in questa tabella. Esiste anche una posizione spaziale per ogni città.
StateProvinces Le città fanno parte di stati o province. Questa tabella include dettagli relativi a tali dati, inclusi i dati spaziali che descrivono i limiti di ogni stato o provincia.
Paesi/aree geografiche Stati o province fanno parte dei paesi/delle aree. Questa tabella include dettagli relativi a tali dati, inclusi i dati spaziali che descrivono i confini di ogni paese/area geografica.
DeliveryMethods Scelte per la consegna di articoli in scorta (ad esempio, camion/furgone, posta, ritiro, corriere e così via)
PaymentMethods Scelte per effettuare pagamenti (ad esempio contanti, assegno, EFT e così via)
TransactionTypes Tipi di transazioni di società, fornitori o magazzino (ad esempio, fattura, nota di accredito e così via)

Schema di acquisto

Dettagli dei fornitori e degli acquisti di articoli di magazzino.

Tabella Descrizione
Suppliers Tabella delle entità principale per i fornitori (organizzazioni)
SupplierCategories Categorie per i fornitori (ad esempio, novità, giocattoli, abbigliamento, packaging e così via)
SupplierTransactions Tutte le transazioni finanziarie correlate ai fornitori (fatture, pagamenti)
PurchaseOrders Dettagli degli ordini di acquisto dei fornitori
PurchaseOrderLines Linee di dettaglio dagli ordini di acquisto dei fornitori

Schema Vendite

Dettagli dei clienti, dei venditori e delle vendite di articoli di magazzino.

Tabella Descrizione
Clienti Tabelle delle entità principali per i clienti (organizzazioni o singoli utenti)
CustomerCategories Categorie per società (ad esempio negozi di novità, supermercati e così via)
BuyingGroups Le organizzazioni dei clienti possono fare parte di gruppi che esercitano un maggiore potere di acquisto
CustomerTransactions Tutte le transazioni finanziarie correlate ai clienti (fatture, pagamenti)
SpecialDeals Prezzo speciale. Può includere prezzi fissi, sconto in dollari o percentuale di sconto.
Ordini Dettagli degli ordini dei clienti
OrderLines Linee di dettaglio dagli ordini dei clienti
Fatture Dettagli delle fatture dei clienti
InvoiceLines Linee di dettaglio dalle fatture dei clienti

Schema Magazzino

Dettagli degli articoli di magazzino, delle rispettive aziende e transazioni.

Tabella Descrizione
StockItems Tabella delle entità principali per gli articoli di magazzino
StockItemHoldings Colonne non temporali per gli articoli di magazzino. Queste colonne vengono aggiornate di frequente.
StockGroups Gruppi per la categorizzazione degli articoli in scorta (ad esempio, novità, giocattoli, novità commestibili e così via)
StockItemStockGroups Articoli di magazzino suddivisi per gruppi di inventario (molti a molti)
Colori Gli articoli di magazzino possono (facoltativamente) avere colori
PackageTypes Modi in cui è possibile imballare gli articoli in scorta (ad esempio, scatola, cartone, pallet, kg e così via).
StockItemTransactions Transazioni che coprono tutti i movimenti di tutti gli articoli di magazzino (ricevuta, vendita, eliminazione)
VehicleTemperatures Temperature registrate regolarmente dei refrigeratori dei veicoli
ColdRoomTemperatures Temperature registrate regolarmente delle celle refrigerate

Considerazioni relative alla progettazione

La progettazione del database è soggettiva e non esiste un modo corretto o sbagliato per progettare un database. Gli schemi e le tabelle in questo database mostrano idee su come progettare un database personalizzato.

Progettazione dello schema

WideWorldImporters usa un numero ridotto di schemi, in modo che sia facile comprendere il sistema di database e dimostrare i principi del database.

Laddove possibile, il database colloca le tabelle comunemente sottoposte a query nello stesso schema per ridurre al minimo la complessità del join.

Lo schema del database è stato generato dal codice in base a una serie di tabelle di metadati in un altro database WWI_Preparation. Ciò offre a WideWorldImporters un livello molto elevato di coerenza della progettazione, coerenza dei nomi e completezza. Per informazioni dettagliate su come è stato generato lo schema, vedere il codice sorgente: wide-world-importers/wwi-database-scripts

Progettazione della tabella

  • Tutte le tabelle hanno chiavi primarie a colonna singola per semplicità di join.
  • Tutti gli schemi, le tabelle, le colonne, gli indici e i vincoli CHECK hanno una proprietà estesa Description che può essere usata per identificare lo scopo dell'oggetto o della colonna. Le tabelle ottimizzate per la memoria sono un'eccezione, perché attualmente non supportano le proprietà estese.
  • Tutte le chiavi esterne vengono indicizzate automaticamente, a meno che non sia presente un altro indice non cluster con lo stesso componente sinistro.
  • La numerazione automatica nelle tabelle è basata sulle sequenze. Queste sequenze sono più facili da usare tra server collegati e ambienti simili rispetto alle colonne IDENTITY. Le tabelle ottimizzate per la memoria usano colonne IDENTITY perché non sono supportate in SQL Server 2016.
  • Per queste tabelle viene usata una singola sequenza (TransactionID): CustomerTransactions, SupplierTransactions e StockItemTransactions. Questo dimostra come un set di tabelle può avere una singola sequenza.
  • Alcune colonne hanno valori predefiniti appropriati.

Schemi di sicurezza

Per motivi di sicurezza, WideWorldImporters non consente alle applicazioni esterne di accedere direttamente agli schemi dei dati. Per isolare l'accesso, WideWorldImporters usa schemi di accesso sicuro che non contengono dati, ma contengono viste e stored procedure. Le applicazioni esterne usano gli schemi di sicurezza per recuperare i dati che sono autorizzate a visualizzare. In questo modo, gli utenti possono eseguire solo le viste e le stored procedure negli schemi di accesso sicuro.

Questo esempio include dashboard di Power BI. Un'applicazione esterna accede a questi dashboard di Power BI da Power BI gateway come utente che dispone dell'autorizzazione di sola lettura per lo schema di Power BI. Per l'autorizzazione di sola lettura, l'utente necessita solo dell'autorizzazione SELECT ed EXECUTE per lo schema di Power BI. Un amministratore del database in WWI assegna queste autorizzazioni in base alle esigenze.

Stored procedure

Le stored procedure sono organizzate in schemi. La maggior parte degli schemi viene usata a scopo di configurazione o di esempio.

Lo schema Website contiene le stored procedure che possono essere usate da un front-end Web.

Gli schemi Reports e PowerBI sono destinati a servizi di creazione report e Power BI. Tutte le estensioni dell'esempio sono incoraggiate a usare questi schemi a scopo di creazione di report.

Schema del sito Web

Si tratta delle procedure usate da un'applicazione client, ad esempio un front-end Web.

Procedura Scopo
ActivateWebsiteLogon Consente a una persona (da Application.People) di avere accesso al sito Web.
ChangePassword Modifica la password di un utente (per gli utenti che non usano meccanismi di autenticazione esterni).
InsertCustomerOrders Consente l'inserimento di uno o più ordini cliente (incluse le righe degli ordini).
InvoiceCustomerOrders Accetta un elenco di ordini da fatturare ed elabora le fatture.
RecordColdRoomTemperatures Accetta un elenco di dati dei sensori, come parametro con valori di tabella (TVP) e applica i dati alla tabella temporale Warehouse.ColdRoomTemperatures.
RecordVehicleTemperature Accetta una matrice JSON e la usa per aggiornare Warehouse.VehicleTemperatures.
SearchForCustomers Cerca i clienti in base al nome o a una parte del nome (il nome della società o il nome della persona).
SearchForPeople Cerca persone in base al nome o a una parte del nome.
SearchForStockItems Cerca gli articoli di magazzino in base al nome o a una parte del nome o ai commenti di marketing.
SearchForStockItemsByTags Cerca gli articoli di magazzino in base ai tag.
SearchForSuppliers Cerca i fornitori in base al nome o a una parte del nome (il nome della società o il nome della persona).

Schema di integrazione

Le stored procedure in questo schema vengono usate dal processo ETL. Ottengono i dati necessari da varie tabelle per l'intervallo di tempo richiesto dal pacchetto ETL.

Schema DataLoadSimulation

Simula un carico di lavoro che inserisce vendite e acquisti. La stored procedure principale è PopulateDataToCurrentDate, usata per inserire dati di esempio fino alla data corrente.

Procedura Scopo
Configuration_ApplyDataLoadSimulationProcedures Ricrea le procedure necessarie per la simulazione di carico dei dati. Questa operazione è necessaria per l'aggiornamento dei dati alla data corrente.
Configuration_RemoveDataLoadSimulationProcedures Rimuove di nuovo le procedure dopo il completamento della simulazione dei dati.
DeactivateTemporalTablesBeforeDataLoad Rimuove la natura temporale di tutte le tabelle temporali e, se applicabile, applica un trigger in modo che le modifiche possano essere apportate come se fossero applicate in una data precedente rispetto alle tabelle sys temporali consentite.
PopulateDataToCurrentDate Consente di visualizzare i dati fino alla data corrente. Deve essere eseguito prima di qualsiasi altra opzione di configurazione dopo il ripristino del database da un backup iniziale.
ReactivateTemporalTablesAfterDataLoad Rielabora le tabelle temporali, inclusa la verifica della coerenza dei dati. Rimuove i trigger associati.

Schema dell'applicazione

Queste procedure vengono usate per configurare l'esempio. Vengono usate per applicare funzionalità dell'edizione Enterprise alla versione standard dell'esempio e anche per aggiungere il controllo e l'indicizzazione full-text.

Procedura Scopo
AddRoleMemberIfNonexistant Aggiunge un membro a un ruolo se il membro non è già nel ruolo
Configuration_ApplyAuditing Aggiunge il controllo. Il controllo del server viene applicato per i database dell'edizione standard; viene aggiunto il controllo aggiuntivo del database per l'edizione Enterprise.
Configuration_ApplyColumnstoreIndexing Applica l'indicizzazione columnstore a Sales.OrderLines e Sales.InvoiceLines ed esegue nuovamente l'indicizzazione in modo appropriato.
Configuration_ApplyFullTextIndexing Applica indici full-text a Application.People, Sales.Customers, Purchasing.Suppliers e Warehouse.StockItems. Sostituisce Website.SearchForPeople, Website.SearchForSuppliers, Website.SearchForCustomers, Website.SearchForStockItems, Website.SearchForStockItemsByTags con le procedure di sostituzione che usano l'indicizzazione full-text.
Configuration_ApplyPartitioning Applica il partizionamento delle tabelle a Sales.CustomerTransactions e Purchasing.SupplierTransactions e riorganizza gli indici in base alle esigenze.
Configuration_ApplyRowLevelSecurity Applica la sicurezza a livello di riga per filtrare i clienti in base ai ruoli correlati al territorio di vendita.
Configuration_ConfigureForEnterpriseEdition Applica l'indicizzazione columnstore, full-text, in memoria, polybase e partizionamento.
Configuration_EnableInMemory Aggiunge un filegroup ottimizzato per la memoria (quando non funziona in Azure), sostituisce Warehouse.ColdRoomTemperatures e Warehouse.VehicleTemperatures con equivalenti in memoria ed esegue la migrazione dei dati, ricrea i tipi di tabella Website.OrderIDList, Website.OrderList, Website.OrderLineList e Website.SensorDataList con equivalenti ottimizzati per la memoria, elimina e ricrea le procedure Website.InvoiceCustomerOrders, Website.InsertCustomerOrders e Website.RecordColdRoomTemperatures che usano questi tipi di tabella.
Configuration_RemoveAuditing Rimuove la configurazione del controllo.
Configuration_RemoveRowLevelSecurity Rimuove la configurazione di sicurezza a livello di riga, necessaria per le modifiche alle tabelle associate.
CreateRoleIfNonExistant Creare un database, se non esiste già.

Schema sequenze

Procedure per configurare le sequenze nel database.

Procedura Scopo
ReseedAllSequences Chiama la routine ReseedSequenceBeyondTableValue per tutte le sequenze.
ReseedSequenceBeyondTableValue Consente di riposizionare il valore della sequenza successiva oltre il valore di qualsiasi tabella che usa la stessa sequenza. Ad esempio, DBCC CHECKIDENT per le colonne Identity equivalenti per le sequenze, ma anche in più tabelle.