Dovremmo prima fare la modellazione entità-relazione o la modellazione orientata agli oggetti?


Risposte:


13

Potresti voler provare ad osservare il principio di ritardare le decisioni architettoniche il più a lungo possibile. Il pensiero è che in futuro saprai di più sul tuo dominio problematico di quanto tu non faccia ora, quindi ogni decisione che prendi oggi è sospetta.

Un altro buon principio da abbinare a questo potrebbe essere quello di provare prima a tentare le parti più rischiose delle vostre esigenze - il pensiero è che se si eseguono le parti facili, quindi si scopre che le parti rischiose si muovono in una direzione diversa, non si ha per rifare le parti facili. Qui rischioso significa cose che non sei sicuro di come dovresti fare.

Dati questi due, e dato che provo spesso ad avvicinarmi alle cose da una prospettiva OO, potresti provare a iniziare con un modello OO delle parti più rischiose della tua applicazione e implementare una quantità minima possibile di codice che possa funzionare che soddisfi il requisiti rischiosi. Quindi, inizia ad espandere il tuo modello OO secondo necessità per aggiungere funzionalità che ti serviranno. Nel frattempo, puoi ritardare completamente la tua decisione sull'utilizzo di SQL o NoSQL o flatfile o cloud storage o altro ... e potresti eventualmente scoprire che non vuoi affatto relazionale (ovviando alla necessità di un modello ER).


7

Il modello ER determina la modalità di persistenza dei dati dell'applicazione e il modello OO decide come archiviare gli stessi dati in memoria o durante l'esecuzione dell'applicazione. Pertanto, la progettazione dello schema del database (modello ER) e la progettazione della struttura di classe (modello OO) sono considerazioni relative alla progettazione e di solito possono anche essere pensate contemporaneamente. In effetti, se si utilizza uno strumento ORM (Object-relational mapping) , il modello ER e il modello OO potrebbero essere la stessa cosa. In altre parole, le tue classi (modello OO) possono essere annotate in modo tale che esse stesse specificano il modello ER.

Prima di progettare, però, assicurati di avere un'ottima idea dei requisiti effettivi del software, per cosa verrà utilizzato, come verrà utilizzato e chi lo utilizzerà. Molti sviluppatori iniziano a pensare alle decisioni di progettazione prima di comprendere appieno le esigenze che devono essere affrontate dal prodotto e finiscono con un design inadatto al vero scopo dell'applicazione.


+1 per identificare la differenza tra i 2 tipi di modellazione. Non sono pienamente d'accordo sul fatto che puoi pensare ai 2 modelli contemporaneamente. Inoltre, alcuni fan di OO ritengono che i tuoi modelli OO ed ER non dovrebbero essere sempre gli stessi. Tuttavia, un modello OO può essere utilizzato come base per la progettazione del database, ma questa trasformazione è un po 'complicata.
NoChance,

@EmmadKareem Hai ragione, non è sempre appropriato pensare ai due modelli contemporaneamente. Stavo parlando in riferimento all'idea di utilizzare un ORM e annotare le classi in modo che il design del modello ER fosse integrato nel modello OO, per così dire. Alcune persone scelgono di sviluppare applicazioni in questo modo, che sta essenzialmente implementando contemporaneamente OO ed ER.
CFL_Jeff

Non confondere il tuo modello di dominio con un modello di dati - Non confondere un oggetto (che rappresenta una singola istanza) con una tabella di database (che contiene una raccolta di cose)
Narender Parmar
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.