Estaba leyendo los errores de diseño de bases de datos más comunes cometidos por el desarrollador Q&A en stackoverflow. En la primera respuesta había una frase sobre arco exclusivo:
Un arco exclusivo es un error común cuando se crea una tabla con dos o más claves foráneas donde una y solo una de ellas puede ser no nula. Gran error. Por un lado, se vuelve mucho más difícil mantener la integridad de los datos. Después de todo, incluso con integridad referencial, nada impide que se establezcan dos o más de estas claves foráneas (a pesar de las complejas restricciones de verificación).
Realmente no entiendo por qué el arco exclusivo es malo. Probablemente no entendí los conceptos básicos. ¿Hay alguna buena explicación sobre arcos exclusivos?
fuente
alter table mytable add constraint myconstraint check ((col1 is not null and col2 is null and col3 is null) or (col1 is null and col2 is not null and col3 is null) or (col1 is null and col2 is null and col3 is not null))
. No me gustan los arcos exclusivos, pero se pueden aplicar con una restricción de verificación. Por supuesto, la restricción FK también debe estar presente.No hay nada malo en los arcos exclusivos. Simplemente aplique la regla de negocio correspondiente utilizando una restricción de verificación. La mayoría de los principales sistemas de administración de bases de datos admiten restricciones de verificación (Oracle, SQL Server, PostgreSQL). Si está utilizando una herramienta de modelado de datos, existe una buena posibilidad de que su herramienta genere automáticamente el código para implementar la restricción de verificación.
fuente
El arco exclusivo es muy útil en el diseño conceptual o lógico. No significa que tenga que implementar de esa manera. En el ejemplo anterior, el diseñador puede decidir implementar el diseño con tres tablas. Uno para la ubicación del estacionamiento, uno para el empleado y otro para el taller de mantenimiento.
fuente