Esempio di modello di dominio per negozio online

1

Siamo un gruppo di 4 studenti di sviluppo software che attualmente studiano presso l'Università della Tecnologia della Penisola del Capo. Attualmente, abbiamo il compito di sviluppare un'applicazione web che funzioni come un negozio online. Abbiamo deciso di eseguire il back-end in Java mentre facevamo uso di Google Guice per la persistenza (che è in gran parte irrilevante per la mia domanda). L'idea generale finora di utilizzare PHP per creare il sito web.

Abbiamo deciso che ci piacerebbe provare, dopo aver consegnato il progetto, e registrare un'azienda per implementare effettivamente il sito web.

Il problema che abbiamo riscontrato è con il modello di dominio. Questi sono per lo più piccoli problemi, tuttavia stanno iniziando a influenzare il programma del nostro progetto. Dato che siamo tutti giovani studenti di informatica, non abbiamo praticamente alcuna esperienza nel mondo degli affari. Pertanto, dedichiamo una notevole quantità di tempo a pianificare il modello di dominio in primo luogo. Ora, alcuni dei problemi che stiamo rilevando è il riferimento tra l'entità cliente e l'entità dell'ordine. Al momento, non abbiamo l'ID cliente nell'entità ordine e abbiamo un elenco di entità ordine nell'entità cliente.

Ultimamente, mi sono chiesto se il meccanismo di persistenza inserirà fisicamente l'id del cliente nella tabella degli ordini, anche se non è nell'entità? Quindi, ho iniziato a chiedermi, se si carica un oggetto cliente, cercherà l'intera tabella degli ordini per gli ordini con l'id del cliente. Ora, diciamo che hai 10.000 clienti e 500.000 ordini, non ci vorrà molto tempo? Ci sono anche alcuni processi di business su cui non sono completamente chiaro.

Infine, la mia domanda è: qualcuno sa di un esempio di modello di dominio là fuori che è simile a quello che stiamo cercando di ottenere che sarà sicuro da guardare come riferimento? Non voglio essere accusato di aver rubato la proprietà intellettuale di qualcuno, soprattutto perché potremmo implementarlo come un business.

    
posta Carel 11.10.2012 - 11:19
fonte

1 risposta

1

Ti suggerisco di dedicare del tempo a conoscere la modellazione dei dati. Vedo che è un'abilità essenziale per familiarizzare anche se non si utilizza RDBMS.

we don't have the customer id in the order entity and we have a list of order entities in the customer entity.

Questo è chiaramente un errore di progettazione. La regola dell'attività è:

Ogni cliente ha 0,1, più ordini

E

Ogni ordine è fatto da 1 cliente

Questa è una relazione uno-a-molti che implica il posizionamento della chiave primaria del cliente nella tabella Ordine come una chiave esterna, entrambe le colonne sono colonne fisiche nel database.

Lately, i have wondered if the persistence mechanism will put the client id physically in the order table, even if it's not in the entity.

No, il design della tabella è statico in fase di esecuzione. La tua applicazione web non altera la progettazione delle tabelle del database durante l'esecuzione. La tua applicazione web cambia solo i dati e le associazioni tra tabelle (i valori nelle chiavi precedenti), se necessario, come pure eliminare le righe, aggiungere righe e così via. Le colonne non cambiano.

if you load a customer object, it will search the entire order table for orders with the customer's id. Now, say you have 10,000 customers and 500,000 orders, won't this take an extremely long time?

Non ci vuole tempo per individuare un ordine dato un ID cliente. Questo perché nella progettazione del tuo database, normalmente creerai un indice (una struttura di database a volte usata per cercare velocemente il database) sul valore della chiave esterna. Un buon design del database implica che si specificano colonne che si sceglie di costruire l'indice su max. prestazioni del sistema.

does anyone know of a sample domain model out there that is similar to what we're trying to achieve that will be safe to look at as a reference?

Come per un esempio, ci deve essere un po 'ma non posso fornire nessuno tranne Adventure Works (trova il colore immagine nella pagina), che non è esattamente ciò che si desidera, ma ha molte tabelle in comune con il proprio obiettivo, in particolare sull'area dell'oggetto Vendite (ordine, carta di credito, ecc.).

Si noti inoltre che ci sono componenti che è possibile acquistare per gestire alcune di queste cose, ma io non sono un tipo PHP e non posso raccomandarne nessuna ora.

    
risposta data 11.10.2012 - 11:52
fonte

Leggi altre domande sui tag