Immagina un sistema ORM, indipendente dalla lingua, ma assumiamo PHP. I dati sono incapsulati in oggetti PHP e memorizzati e caricati dal database.
Consentiteci di avere un oggetto teorico "Persona" con più indirizzi (così mappato a 2 tabelle nel database), che può essere aggiunto da una funzione.
NON prendere in considerazione il modo in cui l'accesso agli elementi dei dati è fatto, non importa.
Alcuni esempi di codice:
$person = new Person();
$person->firstname = 'John';
$person->lastname = 'Doe';
// ...
// THIS IS IMPORTANT!
$person->save();
$person->addAddress([
'street' => '123, Foo Street',
'city' => 'New York',
// ...
]);
$person->addAddress([
'street' => '456, Bla Street',
'city' => 'Washington',
// ...
]);
Cosa ti aspetti da come (quando!) gli indirizzi vengono salvati?
Opzione 1: vengono immediatamente salvati dopo la chiamata a addAddress ()
Opzione 2: la chiamata a addAddress () la inserisce solo nell'oggetto interno e viene salvata solo dopo una chiamata esplosa a Person :: save ().
Opzione 3: eventuali ulteriori idee sono ben accette.
Voglio sapere quale maggior parte delle persone preferirebbe, il che è più intuitivo, se ci sono pro / contro per / contro le diverse opzioni. Forse un argomento letale?
Inoltre, suppongo che l'opzione 2 sia più difficile da codificare (lo so, l'utilizzo di qualche framework può gestirlo, ma suppongo che la mappatura del database-oggetto sia molto più complicata, quindi deve essere fatto a mano), perché ha bisogno di tracciamento interno di nuove voci, voci rimosse, voci modificate ecc.
L'opzione 1 è più facile da codificare, ma non so se gli utenti (anche se sono solo nella nostra azienda) lo fraintenderanno.