Armazenamento de dados - esquemas
O esquema é uma descrição lógica de todo o banco de dados. Inclui o nome e a descrição dos registros de todos os tipos de registro, incluindo todos os itens de dados e agregados associados. Muito parecido com um banco de dados, um data warehouse também requer a manutenção de um esquema. Um banco de dados usa modelo relacional, enquanto um data warehouse usa esquema Star, Snowflake e Fact Constellation. Neste capítulo, discutiremos os esquemas usados em um data warehouse.
Esquema Star
Cada dimensão em um esquema em estrela é representada com apenas uma tabela de dimensão.
Esta tabela de dimensão contém o conjunto de atributos.
O diagrama a seguir mostra os dados de vendas de uma empresa em relação às quatro dimensões, ou seja, tempo, item, filial e local.
Há uma tabela de fatos no centro. Ele contém as chaves para cada uma das quatro dimensões.
A tabela de fatos também contém os atributos, ou seja, dólares vendidos e unidades vendidas.
Note- Cada dimensão possui apenas uma tabela de dimensão e cada tabela contém um conjunto de atributos. Por exemplo, a tabela de dimensão de localização contém o conjunto de atributos {location_key, street, city, province_or_state, country}. Essa restrição pode causar redundância de dados. Por exemplo, "Vancouver" e "Victoria" ambas as cidades estão na província canadense de British Columbia. As entradas para tais cidades podem causar redundância de dados ao longo dos atributos province_or_state e country.
Esquema de Floco de Neve
Algumas tabelas de dimensão no esquema Snowflake são normalizadas.
A normalização divide os dados em tabelas adicionais.
Ao contrário do esquema Star, a tabela de dimensões em um esquema em floco de neve é normalizada. Por exemplo, a tabela de dimensão de item no esquema em estrela é normalizada e dividida em duas tabelas de dimensão, a saber, tabela de item e fornecedor.
Agora, a tabela de dimensão do item contém os atributos item_key, item_name, type, brand, and supplies-key.
A chave do fornecedor está vinculada à tabela de dimensão do fornecedor. A tabela de dimensões do fornecedor contém os atributos chave_de_fornecedor e tipo_de_fornecedor.
Note - Devido à normalização no esquema Snowflake, a redundância é reduzida e, portanto, torna-se fácil de manter e economizar espaço de armazenamento.
Esquema de constelação de fatos
Uma constelação de fatos possui várias tabelas de fatos. Também é conhecido como esquema de galáxia.
O diagrama a seguir mostra duas tabelas de fatos, ou seja, vendas e remessa.
A tabela de fatos de vendas é a mesma do esquema em estrela.
A tabela de fatos de envio tem cinco dimensões, a saber, item_key, time_key, shipper_key, from_location, to_location.
A tabela de fatos de envio também contém duas medidas, ou seja, dólares vendidos e unidades vendidas.
Também é possível compartilhar tabelas de dimensão entre tabelas de fatos. Por exemplo, as tabelas de dimensão de tempo, item e local são compartilhadas entre as tabelas de fatos de vendas e remessa.
Definição de Esquema
O esquema multidimensional é definido usando Data Mining Query Language (DMQL). As duas primitivas, definição de cubo e definição de dimensão, podem ser usadas para definir os data warehouses e data marts.
Sintaxe para definição de cubo
define cube < cube_name > [ < dimension-list > }: < measure_list >
Sintaxe para definição de dimensão
define dimension < dimension_name > as ( < attribute_or_dimension_list > )
Definição de Esquema Star
O esquema em estrela que discutimos pode ser definido usando Data Mining Query Language (DMQL) da seguinte forma -
define cube sales star [time, item, branch, location]:
dollars sold = sum(sales in dollars), units sold = count(*)
define dimension time as (time key, day, day of week, month, quarter, year)
define dimension item as (item key, item name, brand, type, supplier type)
define dimension branch as (branch key, branch name, branch type)
define dimension location as (location key, street, city, province or state, country)
Definição de esquema de floco de neve
O esquema do floco de neve pode ser definido usando DMQL da seguinte maneira -
define cube sales snowflake [time, item, branch, location]:
dollars sold = sum(sales in dollars), units sold = count(*)
define dimension time as (time key, day, day of week, month, quarter, year)
define dimension item as (item key, item name, brand, type, supplier (supplier key, supplier type))
define dimension branch as (branch key, branch name, branch type)
define dimension location as (location key, street, city (city key, city, province or state, country))
Definição de esquema de constelação de fatos
O esquema de constelação de fatos pode ser definido usando DMQL da seguinte forma -
define cube sales [time, item, branch, location]:
dollars sold = sum(sales in dollars), units sold = count(*)
define dimension time as (time key, day, day of week, month, quarter, year)
define dimension item as (item key, item name, brand, type, supplier type)
define dimension branch as (branch key, branch name, branch type)
define dimension location as (location key, street, city, province or state,country)
define cube shipping [time, item, shipper, from location, to location]:
dollars cost = sum(cost in dollars), units shipped = count(*)
define dimension time as time in cube sales
define dimension item as item in cube sales
define dimension shipper as (shipper key, shipper name, location as location in cube sales, shipper type)
define dimension from location as location in cube sales
define dimension to location as location in cube sales