Padrões De Desenho De Bases De Dados Relacionais?

os padrões de Design estão geralmente relacionados com o design orientado a objectos.
existem padrões de desenhopara criar e programar bases de dados relacionais ?
Muitos problemas devem certamente ter soluções reutilizáveis.

Os exemplos incluem padrões para a concepção da tabela, procedimentos armazenados, gatilhos, etc...

Existe um repositório online de tais padrões, semelhante a martinfowler.com?


Exemplos de problemas que padrões pode resolver:

  • armazenamento de dados hierárquicos (por exemplo, tabela única com tipo vs tabelas múltiplas com chave 1:1 e diferenças...)
  • armazenar dados com estrutura variável (por exemplo, colunas genéricas vs xml vs coluna delimitada...)
  • Denormalizar dados (como fazê-lo com impacto mínimo, etc...)
Author: Sklivvz, 2008-09-28

10 answers

Há um livro na série de assinaturas do Martin Fowler chamado "Refactoring Databases". Que fornece uma lista de técnicas para refactoring bases de dados. Não posso dizer que tenha ouvido tanto uma lista de padrões de base de dados.

Eu também recomendaria muito David C. Hay'sData Model Patterns and the follow upA Metadata Map which builds on the first and is far more ambicious and intriging. Só o prefácio é esclarecedor.

Também é um óptimo lugar para procurar alguns modelos pré-enlatados de bases de dados são as séries de livros de dados de Len Silverston Volume 1 contém modelos de dados universalmente aplicáveis (Empregados, contas, transporte, compras, etc), Volume 2 contém modelos de dados específicos da indústria (Contabilidade, cuidados de saúde, etc), Volume 3 fornece modelos de dados.

Finalmente, enquanto este livro é ostensivamente sobre UML e modelagem de objetos, o modelo de Peter Coad a cores com UML fornece um "arquétipo" processo conduzido de modelagem de Entidades a partir da premissa de que existem 4 arquétipos principais de qualquer objeto/modelo de dados

 124
Author: Michael Brown, 2016-06-14 14:39:20
Aqui está um link para um cavalheiro que desenvolveu várias centenas de esquemas de banco de dados gratuitos.

Http://www.databaseanswers.org/data_models/

Talvez se você tiver que construir um db rapidamente isso lhe dará um ponto de partida em termos das tabelas e relações em um dado esquema. Tenha em mente que provavelmente terá de modificar este ponto de partida. Achei-o muito útil.

Em segundo lugar, a revista SQL Server tem uma coluna ocasional chamada "Os dados". Modeler " que é muito educacional e muitas vezes contém esquemas completos para um determinado sistema.
 125
Author: Thomas Wagner, 2008-09-28 15:17:30
Os padrões de Design não são soluções triviais reutilizáveis. Os padrões de Design são reutilizáveis, por definição. São padrões que você detecta em outras boas soluções.

Um padrão não é trivialmente reutilizável. Você pode implementar o seu design down seguindo o padrão no entanto.

Os patters de desenho relacional incluem coisas como:
  1. Relações de um para muitos (master-detail, parent-child) usando um estrangeiro chave.

  2. Muitas relações com uma mesa de bridge.

  3. Relações opcionais de um para um geridas com NULLs na coluna FK.

  4. Star-Schema: Dimension and Fact, OLAP design.

  5. Desenho OLTP totalmente normalizado.

  6. Múltiplas colunas de pesquisa indexadas numa dimensão.

  7. "tabela de pesquisa" que contém PK, descrição e valor(S) de código utilizados por uma ou mais aplicações. Porquê ter código? I não sei, mas quando têm de ser usados, esta é uma forma de gerir os códigos.

  8. Uni-table. [Alguns chamam isso de um anti-padrão; é um padrão, às vezes é ruim, às vezes é bom.] Esta é uma tabela com muitas coisas pré-Unidas que viola a segunda e terceira forma normal.

  9. Tabela de matriz. Esta é uma tabela que viola a primeira forma normal por ter uma matriz ou sequência de valores nas colunas.

  10. Base de dados de Uso Misto. Esta é uma base de dados normalizada para processamento de transações, mas com muitos índices extras para relatórios e análises. É um anti-padrão ... não faças isso. As pessoas fazem-no na mesma, por isso continua a ser um padrão.

A maioria das pessoas que projetam bases de dados pode facilmente chocalhar meia dúzia de "é outro desses"; estes são padrões de design que eles usam regularmente. E isto não inclui padrões administrativos e operacionais de utilização e gestão.
 40
Author: S.Lott, 2010-10-20 19:20:23

Veja este blog - O programador de bases de dados.

Ele descreve alguns padrões de base de dados .

 19
Author: Edo, 2008-10-10 12:45:54
Os livros de Joe Celko são excelentes para este tipo de coisas, em particular "SQL para Smarties". Ele tem algumas soluções inovadoras para problemas comuns, a maioria dos quais são padrões de design reutilizáveis.

Http://www.celko.com/books.htm

 15
Author: skaffman, 2008-09-28 11:41:32

AskTom é provavelmente o único recurso mais útil sobre as melhores práticas na Oracle DBs. (Eu normalmente apenas digito "asktom" como a primeira palavra de uma consulta do google sobre um tópico particular) {[[4]} Acho que não é apropriado falar de padrões de design com bases de dados relacionais. Bases de dados relacionais já são a aplicação de um "padrão de design" a um problema (o problema é "como representar, armazenar e trabalhar com dados, mantendo a sua integridade", e o design sendo o modelo relacional). Outras abordagens (geralmente consideradas obsoletas) são os modelos de navegação e hierárquicos (e não existem muitas outras).

Tendo dito isto, você pode considerar " Data Warehousing "como um" padrão " um pouco separado ou abordagem no projeto de banco de dados. Em particular, você pode estar interessado em ler sobre o esquema estelar.

 6
Author: Galghamon, 2008-10-10 09:19:17
Depois de muitos anos de desenvolvimento de bases de dados, posso dizer que há alguns não vai e algumas perguntas que você deve responder antes de começar:

Perguntas:

  • queres usar no futuro outro DBMS? Se sim, então não usa para coisas especiais SQL do DBMS atual. Remover a lógica na sua aplicação.

Não utilize:

  • espaços em branco nos nomes das tabelas e nomes das colunas
  • caracteres não Ascii no quadro e na coluna nomes
  • ligação a um caso inferior ou superior específico. E nunca usar 2 tabelas ou colunas que diferem apenas com minúsculas e maiúsculas.
  • não utiliza palavras-chave SQL para tabelas ou colunas nomes como "FROM", "BETWEEN", "DELETE", etc

Recomendações:

  • Use NVARCHAR ou equivalentes para suporte unicode, então você não tem problemas com as codificações.
  • Dá a cada coluna um nome único. Isto torna mais fácil ao juntar-se para seleccionar a coluna. É muito difícil se cada tabela tem uma coluna "ID" ou "nome"ou " descrição". Utilizar XyzID e AbcID.
  • utilize um pacote de recursos ou seja igual para expressões SQL complexas. Torna mais fácil mudar para outro DBMS.
  • não produz nenhum tipo de dados. Outro DBMS não pode ter este tipo de dados. Por exemplo Oracle daes não tem um pequeno número apenas um número.
Espero que este seja um bom ponto de partida.
 4
Author: Horcrux7, 2008-09-28 11:55:34
A tua pergunta é um pouco vaga, mas suponho que sim.UPSERT pode ser considerado um padrão de design. Para línguas que não implementam MERGE, uma série de alternativas para resolver o problema (Se existirem linhas adequadas, UPDATE; caso contrário INSERT) Existem.
 1
Author: Sören Kuklau, 2017-05-23 11:47:31

Depende do que queres dizer com um padrão. Se você está pensando em pessoa/empresa/transação / produto e tal, então sim - há um monte de esquemas genéricos de banco de dados já disponíveis.

Se estás a pensar em fábrica, Singleton... então não-você não precisa de nenhum destes como eles são de nível muito baixo para a programação DB. Se você está pensando em nomear um objeto de banco de dados, então ele está sob a categoria de Convenções, não design per se.

BTW, S. Lott, um-para-muitos e muitos-para-muitos as relações não são "padrões". São os alicerces básicos do modelo relacional.

 1
Author: Andrew not the Saint, 2008-09-30 04:12:35

Este livro parece interessante.

Title: Data Patterns
By: Microsoft Corporation
Publisher: Microsoft Press
Pub. Date: December 21, 2004
Print ISBN-13: 978-0-7356-2200-5
 0
Author: user212102, 2011-07-22 15:07:06