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 / 8596
Accepted
kingdango
kingdango
Asked: 2011-12-01 07:27:50 +0800 CST2011-12-01 07:27:50 +0800 CST 2011-12-01 07:27:50 +0800 CST

Qual design de modelo oferece suporte a entradas de formulário livre e respaldadas por armazenamento de dados?

  • 772

Eu tenho um aplicativo onde os usuários estão rastreando um fluxo de trabalho em torno da produção de um trabalho derivado de um livro existente. O trabalho derivado, que chamaremos de "BookDerivative", deve ter um livro relacionado a partir de uma perspectiva de modelo de dados. O sistema existente que armazena as informações do livro (Título, Autor, etc) deve ser considerado um sistema de "terceiro opcional" que pode ser trocado por outro sistema no futuro (que abstraí via IBookService).

Meu aplicativo deve fornecer duas opções para os usuários quando eles criam um BookDerivative:

  1. Selecione um livro existente do provedor IBookService (via pesquisa); OU
  2. Crie uma entrada de "formato livre" para o livro que NÃO seria vinculada ao provedor IBookService. Isso permite que o usuário crie um BookDerivative para um título de livro não encontrado pela pesquisa IBookService.

Minha solução para suportar isso é incluir as colunas necessárias de Book em minha tabela/entidade BookDerivative (BookTitle, BookAuthor, BookId) onde BookId só estará presente SE o livro vier do sistema de terceiros. Dessa forma, se o livro for de "forma livre", eu preencheria apenas BookTitle e BookAuthor.

Acessos futuros do BookDerivative não precisam consultar o IBookService. As informações essenciais do livro nunca (ou raramente) devem ser alteradas no sistema de terceiros e estou preparado para aceitar o fato de que é teoricamente possível que as informações estejam fora de sincronia.

Não haverá integridade de dados entre os dois sistemas e nenhum FK. Meu aplicativo não pode assumir o modelo de dados subjacente do sistema Book, mas deve depender de um modelo definido e da pesquisa IBookService.

Minha pergunta permanece, esta é uma boa maneira de resolver este problema? Que recomendações ou armadilhas podem existir? Eu acho que este é um requisito comum, você já usou uma solução diferente ou melhor no passado?

database-design normalization
  • 1 1 respostas
  • 109 Views

1 respostas

  • Voted
  1. Best Answer
    TetonSig
    2011-12-26T09:05:57+08:002011-12-26T09:05:57+08:00

    Com base nos detalhes que você forneceu, eu diria que parece bom.

    Coisas que podem ou não ser um problema com base em mais informações.

    (1) Mesmo que você diga que não há relação entre os dois sistemas e nenhuma chave estrangeira, se você trocasse sistemas de terceiros, ficaria com um monte de ids sem sentido para livros que foram adicionados do sistema de terceira parte anterior . Tudo bem? Caso contrário, pode ser necessário adicionar uma tabela de pesquisa de sistemas de terceiros que podem ser relacionados aos IDs na tabela Book para que você possa saber posteriormente de qual sistema eles vieram.

    (2) Se a única razão para os IDs do sistema de terceiros estarem lá é verificar sua existência, talvez uma coluna booleana simplesmente IsFrom3rdParty ou IsFreeForm seja suficiente. Parece atender a todos os requisitos que você estabeleceu aqui e seria mais simples de implementar do que o ID e transmitiria melhor as informações reais que você possui (que é simplesmente que veio de um sistema de terceiros. Você não pode garantir que o ID se relacionará com qualquer coisa, especialmente se o sistema de back-end foi alterado)

    Caso contrário, sim, soa bem.

    • 0

relate perguntas

  • É melhor armazenar os valores calculados ou recalculá-los a pedido? [duplicado]

  • Armazenar vs calcular valores agregados

  • Quais são algumas maneiras de implementar um relacionamento muitos-para-muitos em um data warehouse?

  • As formas normalizadas superiores sempre atendem aos critérios das inferiores?

  • Recursos de exercícios de normalização

Sidebar

Stats

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

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

    • 4 respostas
  • Marko Smith

    Como você mostra o SQL em execução em um banco de dados Oracle?

    • 2 respostas
  • Marko Smith

    Como selecionar a primeira linha de cada grupo?

    • 6 respostas
  • Marko Smith

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

    • 10 respostas
  • Marko Smith

    Posso ver Consultas Históricas executadas em um banco de dados SQL Server?

    • 6 respostas
  • Marko Smith

    Como uso currval() no PostgreSQL para obter o último id inserido?

    • 10 respostas
  • Marko Smith

    Como executar o psql no Mac OS X?

    • 11 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
  • Marko Smith

    Passando parâmetros de array para um procedimento armazenado

    • 12 respostas
  • Martin Hope
    Manuel Leduc Restrição exclusiva de várias colunas do PostgreSQL e valores NULL 2011-12-28 01:10:21 +0800 CST
  • Martin Hope
    markdorison Como você mysqldump tabela (s) específica (s)? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Stuart Blackler Quando uma chave primária deve ser declarada sem cluster? 2011-11-11 13:31:59 +0800 CST
  • Martin Hope
    pedrosanta Listar os privilégios do banco de dados usando o psql 2011-08-04 11:01:21 +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
  • Martin Hope
    BrunoLM Guid vs INT - Qual é melhor como chave primária? 2011-01-05 23:46:34 +0800 CST
  • Martin Hope
    bernd_k Quando devo usar uma restrição exclusiva em vez de um índice exclusivo? 2011-01-05 02:32:27 +0800 CST
  • Martin Hope
    Patrick Como posso otimizar um mysqldump de um banco de dados grande? 2011-01-04 13:13:48 +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