AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / dba / Perguntas / 285323
Accepted
Francesco Mantovani
Francesco Mantovani
Asked: 2021-02-13 14:12:18 +0800 CST2021-02-13 14:12:18 +0800 CST 2021-02-13 14:12:18 +0800 CST

O design de banco de dados Star/Snowflake é bom para aplicativos? Qual é a alternativa?

  • 772

Preciso resolver um exercício para uma empresa farmacêutica, eles me pedem para criar uma estrutura de banco de dados do zero a partir de algumas informações.

Porque quero que seja escalável e "à prova de futuro" decidi seguir a star/snowflakeestrutura. Por enquanto parece mais estrela do que floco de neve mas a ideia está aí. Tenho uma dúvida em particular sobre a tabela de fatos principal ( estudo ) e como representar o status da tabela de dimensões .

Cheguei a 2 opções:

  • OPÇÃO 1: Estudo da Tabela de Fatos > Chave Estrangeira > Contrato da Tabela de Dimensões > Chaves Estrangeiras > Status da Tabela de Dimensões .

Assim, passamos por duas Tabelas de Dimensões para representar o Status na Tabela de Fatos. Eu vou fazer isso através de um JOINem um viewou qualquer outra coisa...

insira a descrição da imagem aqui

  • OPÇÃO 2: Estudo da Tabela de Fatos > Chave Estrangeira > Status da Tabela de Dimensões .

Desta forma, vinculamos diretamente a Tabela de Fatos ( Estudo ) ao Status da Tabela de Dimensões .

insira a descrição da imagem aqui

Devo optar pela Opção 1 ou Opção 2 ?

Tenho medo de vincular muitas tabelas de dimensões à tabela de fatos. Esta é a primeira vez que tento criar uma estrutura de banco de dados.

Qualquer conselho é bem-vindo, qualquer sugestão é bem-vinda, especialmente de arquitetos de banco de dados experientes, mas também de amadores.

obrigada

EDIT: adicionando mais algumas informações

Obrigado @AntC por sua pergunta. Na verdade, este não é um cenário de Data Warehouse, o cenário é o de uma empresa farmacêutica que precisa de um novo software para rastrear seu ensaio clínico.

Mas é claro que os esquemas mais conhecidos são Star/Snowflake e não quero usar nenhum esquema hierárquico. Ao mesmo tempo, quero evitar formas como triângulo, diamante, círculo, porque mesmo que agora existam apenas 100 usuários que saibam como será esse banco de dados em 10 anos. A ideia é moldar algo para o longo prazo e na minha opinião a forma Estrela/Floco de Neve é ​​escolhida também para aplicação normal até onde eu sei.

relational-theory architecture
  • 1 1 respostas
  • 106 Views

1 respostas

  • Voted
  1. Best Answer
    AntC
    2021-02-16T03:08:30+08:002021-02-16T03:08:30+08:00

    Na Opção 2 Status_Codeaparece como não chave em duas tabelas: Study, Contract. Mas a qual dessas entidades ela pertence? E quais são as cardinalidades relativas dessas entidades?

    Olhando para a Opção 1, o Status_Codepertence ao Contract; pode haver vários Studys para um dado Contract.

    Portanto, se você adotasse a opção 2, causaria dor de cabeça ao OLTP: sempre que houver uma alteração em Statusum Contract, o processamento da transação precisará replicar essa alteração para todos os Studys, com um risco óbvio de ficar fora de sincronia. Isso é chamado de anomalia de atualização .

    Desnormalizar o modelo como a Opção 2 é legítimo em data warehouses, porque queremos relatórios rápidos. É imprudente em um modelo de dados orientado ao processamento de transações, devido ao custo de processamento e aos riscos de manter os dados em sincronia.

    Assim, para uma aplicação com foco no processamento de transações, a Opção 1 é indicada. E sim , você criaria uma Joinview Study>> Contract.Status

    • 1

relate perguntas

  • De que escopo(s) "hasMany" faz parte?

  • Design Relacional - Várias tabelas em uma coluna de chave estrangeira?

  • Qual padrão devo seguir ao nomear tabelas e exibições?

  • É melhor armazenar imagens em um BLOB ou apenas a URL? [duplicado]

  • Como estruturar um modelo para representar de forma adequada e eficiente dados em forma de árvore em bancos de dados relacionais?

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host

    • 12 respostas
  • Marko Smith

    Como fazer a saída do sqlplus aparecer em uma linha?

    • 3 respostas
  • Marko Smith

    Selecione qual tem data máxima ou data mais recente

    • 3 respostas
  • Marko Smith

    Como faço para listar todos os esquemas no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Listar todas as colunas de uma tabela especificada

    • 5 respostas
  • Marko Smith

    Como usar o sqlplus para se conectar a um banco de dados Oracle localizado em outro host sem modificar meu próprio tnsnames.ora

    • 4 respostas
  • Marko Smith

    Como você mysqldump tabela (s) específica (s)?

    • 4 respostas
  • Marko Smith

    Listar os privilégios do banco de dados usando o psql

    • 10 respostas
  • Marko Smith

    Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Como faço para listar todos os bancos de dados e tabelas usando o psql?

    • 7 respostas
  • Martin Hope
    Jin conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane Como faço para listar todos os esquemas no PostgreSQL? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh Por que o log de transações continua crescendo ou fica sem espaço? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland Listar todas as colunas de uma tabela especificada 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney O MySQL pode realizar consultas razoavelmente em bilhões de linhas? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx Como posso monitorar o andamento de uma importação de um arquivo .sql grande? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison Como você mysqldump tabela (s) específica (s)? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas Como posso cronometrar consultas SQL usando psql? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas Como faço para listar todos os bancos de dados e tabelas usando o psql? 2011-02-18 00:45:49 +0800 CST

Hot tag

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve