Sto lavorando a un'applicazione web accessibile pubblicamente. (Realmente) Per farla breve, abbiamo due serie di tabelle nel database con relativamente gli stessi nomi e relativamente gli stessi dati. Il primo set di tabelle viene utilizzato dal nostro sito Web, che chiamerò Set A. Il secondo set di tabelle viene utilizzato da un'applicazione Oracle Forms, che chiamerò Set B.
I motivi delle tabelle duplicate:
- I dati nel Set B sono il Santo Graal delle informazioni. Consentire al pubblico di cambiare questo ha ripercussioni legali.
- Il pubblico può compilare parzialmente tutti i moduli nella nostra applicazione Web e, con un clic del pulsante finale, finalizzare le informazioni. Quindi devono pagare una tariffa prima che inizi l'elaborazione a valle. Gli utenti possono avviare, interrompere e riavviare questo processo un numero illimitato di volte.
Il mio compito corrente è copiare i dati dal Set B nel Set A in un'unica operazione, in modo che i campi del modulo siano prepopolati. Se non lo facciamo, ogni pagina della nostra applicazione web deve prima estrarre i dati dal Set A, e se manca, ricade sul Set B (che a volte comporta conversioni di dati).
L'ho costruito e funzionante correttamente, ma non sono molto interessato ai nomi che ho usato: * Convertitore
Sto davvero cercando di evitare un oggetto "servizio". Avendo letto Devo chiamarlo .. SomethingManager su Coding Horror, nominando qualsiasi cosa con la parola " servizio "mi fa venir voglia di scrivere un post sul blog di pari livello intitolato" Lo chiamerò .. SomethingService. "
Il mio sviluppatore principale non ha gradito la convenzione di denominazione "Convertitore". Ho cercato per la programmazione e modelli di progettazione per lo spostamento di dati tra tabelle simili e non ho trovato nulla.
Ho pensato a "Migrazione", ma ciò implica la modifica iterativa dello schema del database per un periodo di tempo (ad esempio, Migrazioni del database dei record attivi).
Qualunque sia il nome o il modello, mi piacerebbe che comunichi chiaramente:
- Le informazioni vengono estratte da un set di tabelle
- Associato a un modello di oggetto comune
- E inserito in un altro schema
Inoltre mi sento come se non fossi la persona solo che ha riscontrato questo problema.
Esiste un modello di programmazione, un modello di progettazione o una convenzione di denominazione per lo spostamento dei dati tra schemi correlati?
Aggiornamento: uno dei maggiori problemi che ho è che le tabelle del sito web (Set A) non hanno chiavi primarie o esterne! Abbiamo un sacco di metadati nascosti in costanti, i cui valori vengono ammucchiati insieme in una singola colonna.
La risposta di kevincline alla scrittura di una stored procedure è in realtà il motivo per cui scelgo di gestire questa situazione specifica nel codice. Abbiamo una procedura memorizzata per spostare i dati dal Set A al Set B, e Oh. Mio. Bontà. I cerchi che il povero sviluppatore PL / SQL ha dovuto saltare per districare il nostro casino non erano niente meno che un miracolo.
In questo caso, il codice era molto più facile da scrivere e gestire al di fuori del database perché la nostra applicazione web ... beh. Pensa a tutte le migliori pratiche di progettazione di database immaginabili e poi fai esattamente il contrario.