Importanza dei diagrammi ER


10

Sono uno studente e sto sviluppando diversi progetti come parte della mia università.

Durante lo sviluppo del database per uno dei progetti, ci siamo imbattuti in una situazione in cui abbiamo pensato alla necessità o meno di ERD. Al momento, non tutti noi siamo d'accordo nello sviluppare prima l'ERD e poi nello sviluppare un database da esso.

La maggior parte delle persone preferisce sviluppare verbalmente il database al volo in base ai requisiti di sistema direttamente sulla carta.

Ora seguo rigorosamente i principi del database. Penso che il database dovrebbe essere sviluppato solo dall'ERD. Quindi, voglio solo sapere quanto segue:

  • L'industria sta seguendo questi principi?
  • Sto solo perdendo tempo a sviluppare un ERD?
  • Quali sono i vantaggi dello sviluppo di un ERD?

Il diagramma ER / EER mostra le interrelazioni tra entità e ingrandisce anche i funzionalisti del sistema.

Se vuoi uno strumento gratuito per creare un ERD per SQL Server ... Le informazioni sono disponibili qui ... facebook.com/DataModelerTool o qui ... plus.google.com/108968161662966473138
Carter Medlin

IMHO, ERD non catturano tutto ciò che è importante - cambiamenti nel rapporto nel tempo, volume delle transazioni, eredità nei sistemi modellati a oggetti, "diventa una" relazione, ecc. In particolare, ERD tiene conto di tutti i verbi, lasciando grandi lacune nella progettazione del database. Immagina di leggere un romanzo composto da nient'altro che nomi. Trovo che siano strumenti utili, ma sicuramente non critici, meglio disegnati sul retro dei tovaglioli dopo un buon pranzo.
pojo-guy,

Risposte:


13

Semplice e chiaro, pensa a sviluppare un database senza ERD come a costruire una casa senza un piano di costruzione. Potrebbe essere fattibile perché pensi che semplicemente costruire un mattone sopra l'altro sia sufficiente per costruire qualcosa, tuttavia nel momento in cui qualcun altro si assume la responsabilità del progetto c'è un potenziale disastro.

Nella mia esperienza non beneficerai molto degli ERD se non li utilizzi insieme agli strumenti CASE (ERWin, MySQL Workbench ecc.) Che ti permetteranno inoltre di eseguire alcune operazioni davvero utili come il forward e il reverse engineering. Anche senza queste funzioni avere uno schema centralizzato dell'intero database è utile perché a volte i vincoli implementati nel database stesso non sono sufficienti per raccontare l'intera storia delle relazioni tra particolari entità del database.

Ecco un esempio di MySQL che, come forse saprai, implementa diversi motori di archiviazione interni, in particolare MyISAM e InnoDB. Esistono differenze significative tra loro, una delle più importanti è che MyISAM non supporta i vincoli. Nonostante ciò, MyISAM è ampiamente utilizzato per le applicazioni Web, il che significa che la logica relazionale deve essere implementata attraverso la logica aziendale (codice dell'applicazione) o in altro modo. Il problema è quando si progetta in avanti un ERD con tabelle (entità) MyISAM MySQL ignorerà silenziosamente i vincoli impostati dall'ERD e si finirà con un database che non identifica chiaramente la natura delle relazioni tra entità. In altre parole, dopo aver sviluppato il layout del database, gli sviluppatori di codice non possono implementare la logica di business corretta senza un ERD.


1
Se andiamo fino in fondo con il tuo confronto "piano di costruzione", dobbiamo costruire un sistema e non possiamo mai cambiarlo a meno che non dobbiamo demolire il tutto. Questo non funzionerà in un ambiente dinamico.
AK,

1
Lo scopo del "piano di costruzione" non è quello di cementare il processo di sviluppo o il progetto stesso, ma piuttosto fornire sempre una panoramica dello stato in cui si trova il progetto attuale. Nessuno sta effettivamente impedendo a nessuno di aggiungere nuove entità o relazioni (quindi apportare modifiche al piano), ma anche altri devono sapere di tali cambiamenti.
brezanac,

5

Gli ERD sono davvero belli avere una chiara immagine della struttura del database. Oltre ad essere un importante artefatto del documento per il tuo progetto, si facilita quando è necessario implementare le query, in particolare i join tra le tabelle. Immagina quanto sia bello avere una configurazione a doppio monitor, sul lato sinistro hai il tuo ERD e sul lato destro il tuo editor di query. Puoi vedere chiaramente le relazioni tra le tabelle e scrivere le tue query in base a ciò. Se il tuo progetto di database è abbastanza semplice e il tuo progetto non lo richiede, forse è ok vivere senza di esso.


4

ERD ti farà risparmiare molto più tempo di quanto pensi. Se fai tutto al volo, rimarrai bloccato quando vuoi generare tabelle di giunzione.

Se ti imbatti nel database qualche anno dopo senza ERD, devi dedicare molto tempo a vedere cosa sta succedendo nel tuo progetto.

Ho compagnia e progettiamo ERD, non pensare mai al database senza ERD (in realtà questo è il mio esperimento personale)


4

Le ERD erano più tradizionali qualche tempo fa. IMO sono più o meno opzionali ora.

Attualmente, alcuni team di grande successo non si preoccupano affatto degli ERD, ma forniscono sistemi eccellenti: robusti, performanti e facili da mantenere a lungo termine. Ciò è particolarmente vero nello sviluppo Agile, quando iniziamo in piccolo, con un set minimalista di strumenti.

Le ERD sono un buon modo di comunicare, ovviamente, ma assolutamente non l'unico, o il migliore in tutte le circostanze. Alcuni team preferiscono altri modi di documentazione e comunicazione.

Non ci sono regole generali in questo settore.


+1 ma in quali altri modi la documentazione e la comunicazione sono utilizzate in relazione ai database?
miracle173,

@ miracle173 Un buon libro è: "Principi, schemi e pratiche agili in C #". Mi piacciono anche gli articoli sullo sviluppo guidato dal comportamento di Dan North su dannorth.net
AK,

1
Cosa intendi con some teams prefer other ways? Penso che questo avrebbe potuto finire con molti voti negativi se fosse stato pubblicato come risposta su StackOverflow!
Pmpr,

2

È importante progettare prima di scrivere il codice di produzione. È anche importante prototipare; le persone del database sviluppano prototipi scrivendo SQL. (Ricordi cosa ha detto Fred Brooks sui prototipi?)

I linguaggi grafici, di cui ER è solo uno, non hanno dimostrato di essere molto bravi a catturare tutta la semantica di un database in un modo facile e semplice da capire.

Inoltre, non hanno dimostrato di essere strumenti di comunicazione molto efficaci, tranne tra gli sviluppatori. Ma nella progettazione di database, la comunicazione cruciale non è tra gli sviluppatori; è tra sviluppatori ed esperti di dominio (tra sviluppatori e uomini d'affari).

Object-Role Modeling (ORM) ha un linguaggio grafico, ma si basa su "fatti" (frasi semplici). Gli uomini d'affari possono validare i fatti abbastanza facilmente. Gli uomini d'affari non possono validare facilmente un diagramma ER o un diagramma ORM.


1
+1 ma conosci figure o studi che supportano le tue affermazioni sui problemi della comunicazione usando i linguaggi grafici?
miracle173,

Non sono accademici, quindi non seguo da vicino la ricerca. Un linguaggio grafico che non riesce a catturare tutta la semantica di un database (un ERD, per esempio) ovviamente non può comunicare tutta la semantica; fa parte della ricerca di Terry Halpin. Per quanto riguarda la comunicazione con esperti di dominio, non hai davvero bisogno di ricerche per questo. Devi solo provare a spiegare un diagramma ER a un esperto di dominio che ha solo un'istruzione di terza media. Quindi confrontare questa esperienza con il tentativo di spiegare la frase "Ogni indirizzo ha un solo e un solo codice postale". La frase vince ogni volta.
Mike Sherrill "Cat Recall",
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.