Pregunta

El problema es que hay relaciones que son tan grandes que después de la normalización tienen como unos 20 claves primarias (teclas compuestas) que son realmente las claves externas.

Estos tienen que ser declaradas como las claves principales para identificar de forma única la relación. ¿Es esto correcto?

¿Fue útil?

Solución

En primer lugar, no utilice claves compuestas nunca. Se trata de una mala técnica. Son lentos y son una pesadilla para mantener cuando cambian.

Si necesita singularidad lo largo de dos o más campos, no se necesita una clave principal, se necesita un índice único. Hacer que el PK de la tabla una clave sustituta (preferiblemente int).

Si usted está tratando de crear tablas con un uno-a-uno, es aceptable el uso de la FC de la tabla primaria como el PK de la tabla secundaria y establecer una relación entre las tablas PK_FK; sin embargo, sería inusual a necesitar 20 cuadros separados uno-a-uno.

Otros consejos

Si dice que tiene "claves externas que realmente son las claves externas, pero que necesita ser declarado como claves primarias", entonces en realidad se indique que carecen de la competencia y la habilidad y la autoridad que se va haciendo diseño de base de datos.

Las claves ajenas y claves de "primarias" son conceptos completamente distintos, que son bastante imposible confundir una con otra por cualquier persona que es incluso sólo de forma remota con conocimientos en el campo del diseño de base de datos.

Tal vez podría darle una segunda oportunidad para explicar lo que realmente se quiere decir que usted.

Parece que su base de datos es enorme y tiene una gran cantidad de relaciones; una cosa que puede hacer para simplificar la situación clave principal es definir una sola columna como la clave principal para cada tabla, y utilizar un int incrementa automáticamente o tipo de datos GUID. De esta manera se puede garantizar la singularidad y sus claves externas son al menos independiente de su clave primaria.

Estoy teniendo problemas para visualizar un diseño con 20 tablas que tienen una relación con una tabla.

No se puede decir sin tener en cuenta el diseño de los datos, pero parece que ha diseñado una base de datos jerárquica, en lugar de una base de datos relacional.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top