Importância dos diagramas de ER

10

Sou estudante e estou desenvolvendo vários projetos como parte da minha academia.

Ao desenvolver o banco de dados para um dos projetos, nos deparamos com uma situação em que pensávamos se o ERD é necessário ou não. No momento, nem todos concordamos em desenvolver o ERD primeiro e depois desenvolver o banco de dados a partir dele.

A maioria das pessoas prefere desenvolver o banco de dados em tempo real verbalmente, de acordo com os requisitos do sistema em papel diretamente.

Agora, sou seguidor rigoroso dos princípios do banco de dados. Eu acho que o banco de dados deve ser desenvolvido apenas a partir do ERD. Então, eu só quero saber o seguinte:

  • A indústria está seguindo esses princípios?
  • Estou apenas perdendo meu tempo desenvolvendo um ERD?
  • Quais são os benefícios do desenvolvimento de um ERD?
trapaank
fonte
O diagrama ER / EER mostra as inter-relações entre entidades e também amplia os funcionalistas do sistema.
Se você quer uma ferramenta gratuita para fazer um ERD para o SQL Server ... Info pode ser encontrada aqui ... facebook.com/DataModelerTool ou aqui ... plus.google.com/108968161662966473138
Carter Medlin
IMHO, os ERDs não capturam tudo o que é importante - mudanças no relacionamento ao longo do tempo, volume de transações, herança em sistemas modelados por objetos "tornam-se relacionamentos", etc. Especificamente, o ERD fatoriza todos os verbos, deixando grandes lacunas no design do banco de dados. Imagine ler um romance que consiste em nada além de substantivos. Acho que são ferramentas úteis, mas certamente não críticas, mais bem desenhadas nas costas dos guardanapos após um bom almoço.
pojo-guy

Respostas:

13

Puro e simples, pense em desenvolver um banco de dados sem um ERD como construir uma casa sem um plano de construção. Pode ser possível porque você acha que simplesmente colocar um tijolo um sobre o outro é suficiente para construir algo; no entanto, no momento em que outra pessoa assume a responsabilidade pelo projeto, há um potencial de desastre.

Na minha experiência, você não se beneficiará muito dos ERDs, a menos que os use em conjunto com as ferramentas CASE (ERWin, MySQL Workbench etc.), que também permitirão a você executar algumas operações realmente úteis, como engenharia direta e reversa. Mesmo sem essas funções, ter um esquema centralizado do banco de dados completo é útil porque às vezes as restrições implementadas no próprio banco de dados não são suficientes para contar a história completa sobre os relacionamentos entre entidades específicas do banco de dados.

Aqui está um exemplo envolvendo o MySQL que, como você deve saber, implementa vários mecanismos de armazenamento interno, principalmente MyISAM e InnoDB. Existem diferenças significativas entre elas, uma das mais importantes, sendo que o MyISAM não suporta restrições. Apesar disso, o MyISAM é muito usado em aplicativos da Web, o que significa que a lógica relacional precisa ser implementada por meio da lógica de negócios (código do aplicativo) ou de outra maneira. O problema é quando você encaminha um engenheiro de ERD com tabelas (entidades) MyISAM. O MySQL silenciosamente ignora as restrições definidas pelo ERD e você termina com um banco de dados que não identifica claramente a natureza dos relacionamentos entre as entidades. Em outras palavras, depois de desenvolver o layout do banco de dados, não há como os desenvolvedores de código implementarem a lógica de negócios adequada sem um ERD.

brezanac
fonte
11
Se percorrermos todo o caminho com a comparação do seu "plano de construção", precisamos construir um sistema e nunca poderemos alterá-lo, a menos que tenhamos que demolir tudo. Isso não vai funcionar em um ambiente dinâmico.
AK
11
O objetivo do "plano de construção" não é cimentar o processo de desenvolvimento ou o próprio projeto, mas sempre fornecer uma visão geral do estado em que o projeto atual está. Na verdade, ninguém impede alguém de adicionar novas entidades ou relacionamentos (portanto, fazer alterações no plano), mas outros precisam conhecer essas mudanças também.
brezanac
5

É muito bom ter ERDs para ter uma imagem clara da sua estrutura de banco de dados. Além de ser um artefato de documento importante para o seu projeto, facilita quando você precisa implementar consultas, especialmente junções entre tabelas. Imagine como é bom ter uma configuração de monitor duplo, no lado esquerdo você tem ERD e no lado direito seu editor de consultas. Você pode ver claramente os relacionamentos entre tabelas e escrever suas consultas com base nisso. Se o seu projeto de banco de dados é bastante simples e não o exige, talvez seja bom viver sem ele.

gsb
fonte
4

O ERD economizará muito mais tempo do que você pensa: se você fizer tudo rapidamente, ficará bloqueado quando desejar gerar tabelas de junção.

Se você se deparar com o banco de dados alguns anos depois sem o ERD, precisará gastar muito tempo para ver o que está acontecendo no seu projeto.

Eu tenho empresa e criamos ERD, nunca pense em banco de dados sem ERD. (Na verdade, esse é meu experimento pessoal)

ALH
fonte
4

Os ERDs costumavam ser mais populares há algum tempo. IMO eles são mais ou menos opcionais agora.

Atualmente, algumas equipes de grande sucesso não se preocupam com os ERDs, mas oferecem sistemas excelentes: robustos, com bom desempenho e fáceis de manter a longo prazo. Isso é especialmente verdade no desenvolvimento ágil, quando começamos pequenos, com um conjunto minimalista de ferramentas.

ERDs são uma boa maneira de comunicação, é claro, mas de nenhuma maneira a única maneira, ou a melhor em todas as circunstâncias. Algumas equipes preferem outras formas de documentação e comunicação.

Não há regras gerais neste setor.

AK
fonte
+1, mas que outras formas de documentação e comunicação são usadas em relação aos bancos de dados?
precisa saber é o seguinte
@ miracle173 Um bom livro é: "Princípios, padrões e práticas ágeis em C #". Também gosto de artigos sobre Behavior Driven Development por Dan North em dannorth.net
AK
11
Como assim some teams prefer other ways? Eu acho que isso poderia ter terminado com muitos votos negativos Se foi postado como resposta no Stackoverflow!
Pmpr #
2

É importante projetar antes de escrever o código de produção. Também é importante prototipar; as pessoas do banco de dados desenvolvem protótipos escrevendo SQL. (Lembra o que Fred Brooks disse sobre protótipos?)

Linguagens gráficas, das quais ER é apenas uma, não provaram ser muito boas em capturar toda a semântica de um banco de dados de uma maneira fácil e simples de entender.

Eles também não provaram ser ferramentas de comunicação muito eficazes, exceto entre desenvolvedores. Mas, ao projetar bancos de dados, a comunicação crucial não é entre desenvolvedores; é entre desenvolvedores e especialistas em domínio (entre desenvolvedores e pessoas de negócios).

A Modelagem de Função de Objeto (ORM) tem uma linguagem gráfica, mas é baseada em "fatos" (frases simples). Pessoas de negócios podem validar fatos com bastante facilidade. As pessoas de negócios não podem validar facilmente um diagrama de ER ou ORM.

Mike Sherrill 'Rechamada de gato'
fonte
11
+1, mas você conhece figuras ou estudos que apoiam suas alegações sobre os problemas de comunicação e uso de linguagens gráficas?
precisa saber é o seguinte
Eu não sou acadêmico, então não acompanho a pesquisa de perto. Uma linguagem gráfica que falha em capturar toda a semântica de um banco de dados (um ERD, por exemplo) obviamente não pode comunicar toda a semântica; isso faz parte da pesquisa de Terry Halpin. Quanto à comunicação com especialistas em domínio, você realmente não precisa de pesquisa para isso. Você só precisa tentar explicar um diagrama de emergência para um especialista em domínio que possui apenas uma educação de oitava série. Em seguida, compare essa experiência com a tentativa de explicar a frase "Todo endereço tem um e apenas um CEP". A frase vence sempre.
Mike Sherrill 'Recall Cat'