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. |
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per