2009-06-06 27 views
12

¿Cuáles son las mejores prácticas para mantener la integridad referencial en múltiples bases de datos? ya que no hay funciones integradasMantener la integridad referencial en múltiples bases de datos

¿O es mejor dividir una sola base de datos?

Actualización Vea el ejemplo de kevin a continuación. esa es mi situación. Mi base de datos de inventario tiene tablas que hacen referencia al employeeId en la base de datos de empleados.

Estas bases de datos se mantienen actualmente en diferentes lugares (diferentes servidores)

Respuesta

5

Con 2k05/2k08 es definitivamente mejor dividir una sola base de datos. Tiene todas las ventajas de almacenar datos como en múltiples bases de datos, mientras que puede usar las funciones de una única base de datos, como las claves externas.

Dicho esto, no debe mantener todo en una sola base de datos. Lógicamente, cuando las tablas de grupos no encajan, normalmente las separo en sus propias bases de datos. Por ejemplo, no necesariamente combinaría una base de datos del sistema de órdenes y la base de datos de administración de empleados juntas. Supongo que podría haber razones para hacerlo, pero estoy seguro de que entiendo mi punto de separar lógicamente los almacenes de datos cuando corresponda.

Lo que debe observar es cuánto interactúan las dos bases de datos. Si hay muchos campos que se unirían a las bases de datos, diría que probablemente sea una buena idea. Si se trata de uno o dos campos que enlazan con la tabla de empleados, puede que no valga la pena hacerlo. Su otra opción es, si el número de combinaciones es pequeño, duplicar las tablas necesarias en la base de datos de inventario, especialmente si se trata de una tabla y las dos bases de datos existentes son grandes y bastante complejas.

+0

esa es mi situación. Mi base de datos de inventario tiene tablas que hacen referencia al employeeId en la base de datos de empleados. Estas bases de datos se mantienen actualmente en diferentes ubicaciones (diferentes servidores) –

0

supongo que depende de sus necesidades, pero probablemente se inclinaba hacia una sola base de datos. Para hacerlo a través de las bases de datos multiplbe necesita soporte de transacciones distribuidas.

1

Definitivamente es mejor separarse de una única base de datos. Si necesitaras hacerlo, los desencadenantes ayudarían (asco). ¿No puede simplemente particionar el DB usando esquemas en su lugar (el DB de ejemplo de AdventureWorks es un ejemplo)?

0

Puede usar activadores para hacer el trabajo, pero ....
Me temo que pasará una gran cantidad de tiempo asegurándose de que todo funciona. Una única base de datos con algunas tablas particionadas puede ser mejor. ¿Realmente necesita varias bases de datos o solo una base de datos con múltiples grupos de archivos repartidos en dispositivos físicos? Puede considerar esa opción también. Matej

Cuestiones relacionadas