sql >> Base de Datos >  >> RDS >> Sqlserver

Modelado de datos para las mismas tablas con las mismas columnas

El hecho de que los datos tengan una estructura similar no significa que tengan el mismo significado o las mismas restricciones. Mantenga sus tablas de búsqueda separadas. Esto mantiene las claves foráneas por separado, para que la base de datos pueda protegerse de hacer referencia al tipo incorrecto de datos de búsqueda.

Deseo herencia compatible con DBMS relacionales, donde podría definir la estructura básica en la tabla principal y simplemente agregar FK específicos en las tablas secundarias. Tal como está ahora, tendrás que soportar algunas repeticiones en tu DDL...

NOTA:Una excepción a la regla de "mantener las tablas de búsqueda separadas" podría ser cuando su sistema necesita ser dinámico (es decir, poder agregar nuevos tipos de datos de búsqueda sin crear realmente nuevas tablas físicas en la base de datos), pero no parece que lejos de tu pregunta.

Con una gran tabla de búsqueda, los FK por sí solos no detendrán (por ejemplo) el ShippingLog tabla de hacer referencia a una fila destinada a la EmployeeTask mesa. Mediante el uso de relaciones de identificación y la migración de PK, puede protegerse de esto, pero no sin introducir algunas redundancias y sin necesidad de una restricción cuidadosa. Es más limpio y probablemente más eficaz simplemente hacer lo correcto y mantener las tablas de búsqueda separadas.