Come gestire i dati sul modello specifico della tecnologia utilizzata?

2

Ci sono alcuni casi in cui alcuni dati su una classe del modello di dominio di un'applicazione sembrano dipendere dalla tecnologia utilizzata. Un esempio di ciò è il seguente: supponiamo di costruire un'applicazione in .NET in modo tale che sia necessaria una classe Employee. Supponiamo inoltre che implementeremo un database relazionale, quindi il Dipendente ha una chiave primaria giusta? In modo che la classe sarebbe qualcosa di simile

public class Employee 
{
     public int EmployeeID { get; set; }
     public string Name { get; set; }
     ... 
}

Ora, che EmployeeID dipende dalla tecnologia giusta? Questo è qualcosa che ha a che fare con il modo in cui abbiamo scelto di mantenere i nostri dati. Dovremmo scrivere una classe indipendente da queste cose? Se lo facciamo in questo modo, come dovremmo lavorare? Penso che avrei bisogno di mappare tutto il tempo tra modello di dominio e tipi specifici di persistenza, ma non ne sono sicuro.

    
posta user1620696 18.10.2013 - 21:31
fonte

2 risposte

4

No. Hai bisogno di un ID ogni volta che vuoi identificare qualcosa in modo univoco. La mia carta d'identità / passaporto ha un ID che mi identifica in modo univoco come cittadino specifico. Questo non ha nulla a che fare con il fatto di essere un pezzo di carta laminata.

Allo stesso modo, probabilmente avrai bisogno di un ID dipendente per scopi organizzativi . Vi incoraggio a riutilizzare questo ID esistente in uno schema di database, ma questo non ha nulla a che fare con i database. La tua confusione potrebbe essere sorta implicitamente utilizzando una posizione di memoria come ID per la maggior parte dei tuoi oggetti. Tuttavia, le posizioni di memoria sono uniche a un certo punto nel tempo, su un singolo sistema. Pertanto, non possono essere utilizzati per le serializzazioni.

    
risposta data 18.10.2013 - 22:16
fonte
2

Aggiungere campi ID come chiavi primarie (o anche come chiavi esterne) è davvero una scelta tecnologica, dal momento che non ti serviranno quelli per i dati non persistenti. In tutte le lingue OO che conosco, puoi esprimere relazioni e riferimenti tra oggetti senza ID artificiali, solo dal modo in cui i tuoi linguaggi di programmazione offrono riferimenti o indicazioni.

Tuttavia, tale campo ID sarà utile per molti dei diversi meccanismi di persistenza, quindi non dipende da una tecnologia specifica , solo dal fatto che si desidera mantenere tali dati. In effetti, l'uso di un campo ID per le relazioni sarà compatibile con quasi tutti i meccanismi di persistenza che conosco. Ricordo che c'erano stati alcuni sistemi di database OO in passato che cercavano di evitare la necessità di introdurre campi ID aggiuntivi, ma l'utilizzo di un tale sistema e non l'introduzione di un campo ID rendono il tuo programma molto più dipendente dalla tecnologia rispetto a quello ottenuto con ID aggiuntivi.

    
risposta data 19.10.2013 - 21:26
fonte

Leggi altre domande sui tag