Il modo in cui stai ponendo la domanda (e proponendo due alternative) è come se l'unica preoccupazione fosse che il driver ID è ancora valido al momento della creazione della vettura.
Tuttavia, devi anche essere preoccupato che il driver associato a driverId non venga cancellato prima che l'auto sia cancellata o assegnata a un altro driver (e possibilmente anche che il driver non sia assegnato a un'altra macchina (questo se il dominio limita un driver da associare a una sola auto)).
Suggerisco che invece di convalidare, si assegna (che includerebbe la convalida della presenza). In questo modo, non potrai eliminare le eliminazioni mentre sono ancora allocate, proteggendo così la condizione di competizione dei dati non aggiornati durante la costruzione, così come l'altro problema a lungo termine. (Si noti che l'allocazione è valida e contrassegna i valori allocati e opera in modo atomico.)
A proposito, sono d'accordo con @PriceJones che l'associazione tra l'auto e il conducente è probabilmente una responsabilità separata dall'automobile o dall'autista. Questo tipo di associazione crescerà in complessità nel tempo, perché suona come un problema di programmazione (autisti, macchine, fasce orarie / finestre, sostituti, ecc ...). Anche se è più come un problema di registrazione, si potrebbe volere uno storico registrazioni e registrazioni attuali. Quindi, potrebbe benissimo meritare il proprio BC a titolo definitivo.
È possibile fornire uno schema di allocazione (come un conteggio booleano o di riferimento) all'interno del BC delle entità aggregate assegnate, o all'interno di un BC separato, ad esempio quello responsabile dell'associazione tra auto e amp; conducente. Se si fa il primo, è possibile autorizzare operazioni di cancellazione (valide) rilasciate all'automobile o all'autista BC; se fai il secondo, dovrai prevenire le delezioni dalla macchina e dall'amplificatore; driver BC's e invece li manda attraverso la macchina & scheduler dell'associazione dei driver.
Potresti anche dividere alcune delle responsabilità di allocazione tra BC come segue. La macchina & il driver BC fornisce ciascuno uno schema di "allocazione" che convalida e imposta il booleano assegnato con quello BC; quando viene impostata la loro allocazione booleana, il BC impedisce la cancellazione delle entità corrispondenti. (E il sistema è configurato in modo tale che l'auto e il driver BC consentano solo l'allocazione e la deallocazione dalla schedulazione di associazione auto / driver BC.)
La macchina & la programmazione dei driver BC mantiene quindi un calendario di driver associati all'auto per alcuni periodi / durate di tempo, ora e futuro, e notifica le altre BC di deallocazione solo sull'ultimo utilizzo di un'automobile o di un conducente programmato.
Come soluzione più radicale, puoi trattare la vettura e driver BC come fabbriche di record storico solo append, lasciando la proprietà allo scheduler dell'associazione auto / driver. La macchina BC può generare una nuova auto, completa di tutti i dettagli dell'auto, insieme al suo VIN. La proprietà dell'auto è gestita dallo scheduler dell'associazione auto / conducente. Anche se un'associazione auto / autista viene cancellata e l'auto stessa viene distrutta, i record dell'auto esistono ancora nell'automobile BC per definizione, e possiamo usare l'auto BC per cercare dati storici; mentre le associazioni / proprietà di auto / conducenti (passate, presenti e potenzialmente future programmate) vengono gestite da un'altra BC.