Buenas, he visto el post algo tarde, voy a dar mi opinión o punto de vista para que así podamos tener más elementos en lo que se puede denominar un Brain Storming.
Creo que la primera opción sería la más adecuada, aunque dependiendo de la escalabilidad quizá se debería cumplimentar con alguna tabla intermedia en lo que en el Software Factory se denomina relaciones Many to Many.
El tema del DBA (Data Base Administrator) es como comentáis un arduo trabajo a nivel sobre todo de definición, y no solo hay que mirar el que los datos cuadren, si no que hay que evaluar la extracción posterior para Reporting. Imaginate en tu supuesto que quisieras saber los importes que han salido como SALIDAS o ENTRADAS de dinero, pues con tu primera propuesta puedes obtener esos datos mediante un inner join a la tabla cuentas y comprobar el Sumatorio de importes con CuentaOrigen o CuentaDestino. La relación en este caso sería Uno a Uno PK FK sin ninguna tabla intermedia.
Más cosas que puedo aportar, la nomenclatura es vital, parace una tonteria y lo se, pero no es lo mismo IdCuentaOrigen que CuentaOrigenId, la primera conduce a error si puede llegar a ser parte de la clave primaria, la segunda te da inequivocamente que es una Foreing Key que va vinculada a otra tabla. Hay que tener en cuenta que en la creación de software cada vez se da más y más el denominado patrón "Code First" que mediante implementación de ORM permiten que una vez generamos el mapa mental de las clases, éstas pasen a ser entidades de Base de Datos, por tanto y por tratarse de Frameworks, estrictos las nomeclaturas entran mucho en juego.
Resumiendo el tostón que estoy dando, es, que tu opción primera tiene mucha validez lógica, que no es la única porque no sabemos que piensa tu cabeza.
Espero haber arroado algo de luz al respecto y si no, lo hemos intentado.
Última modificación: 14-03-2021, 16:40 por calcena.